summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorkim <kim@pkgsrc.org>2002-10-14 01:51:26 +0000
committerkim <kim@pkgsrc.org>2002-10-14 01:51:26 +0000
commit6763cdc3c107202f84b0d4f66a2ca0d288a7a9bd (patch)
treecdfc926a9e91cf857fc292c5b9162b34c585d9e8 /net
parent6c12c680271dbb5dfdf22728feff627fe241479b (diff)
downloadpkgsrc-6763cdc3c107202f84b0d4f66a2ca0d288a7a9bd.tar.gz
Expand & in the gecos field to a capitalized login name.
Diffstat (limited to 'net')
-rw-r--r--net/samba/distinfo4
-rw-r--r--net/samba/patches/patch-ap57
-rw-r--r--net/samba/patches/patch-aq56
3 files changed, 116 insertions, 1 deletions
diff --git a/net/samba/distinfo b/net/samba/distinfo
index cf832a114e9..95cf8d4094e 100644
--- a/net/samba/distinfo
+++ b/net/samba/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.21 2002/08/25 21:50:11 jlam Exp $
+$NetBSD: distinfo,v 1.22 2002/10/14 01:51:26 kim Exp $
SHA1 (samba-2.2.5.tar.bz2) = 67e1025a8d01ba51b8cea6f04176fdbc57b7c012
Size (samba-2.2.5.tar.bz2) = 4343641 bytes
@@ -10,3 +10,5 @@ SHA1 (patch-ag) = 256a7e1edb961985398a94c0b738fd96fe781f9c
SHA1 (patch-ah) = e87f2e393db68acc7028fe20d4772455379ad7aa
SHA1 (patch-aj) = e2c5f7580a8c701b6bf35d0d3004f714f2c810cb
SHA1 (patch-al) = 368c7f88c5538fcaa32d7263ba98d138ba179859
+SHA1 (patch-ap) = cc0b3d73d0c7de4cd46e66b0d66b2c3bbaddeb41
+SHA1 (patch-aq) = ea9cd9097cf91dd2b9f1acd9e6ff6f9445505774
diff --git a/net/samba/patches/patch-ap b/net/samba/patches/patch-ap
new file mode 100644
index 00000000000..071d0eb731c
--- /dev/null
+++ b/net/samba/patches/patch-ap
@@ -0,0 +1,57 @@
+$NetBSD: patch-ap,v 1.1 2002/10/14 01:51:27 kim Exp $
+
+Expand & in the gecos field to a capitalized login name.
+
+--- lib/util_getent.c.orig Sat Feb 2 19:46:42 2002
++++ lib/util_getent.c Sun Oct 13 21:37:56 2002
+@@ -155,6 +155,11 @@
+ struct sys_pwent *plist;
+ struct sys_pwent *pent;
+ struct passwd *pwd;
++#ifdef BSD
++# define BUFLEN 1024
++ char *bp, *gecos, *p, buf[BUFLEN];
++ int buflen;
++#endif
+
+ pent = (struct sys_pwent *) malloc(sizeof(struct sys_pwent));
+ if (pent == NULL) {
+@@ -178,9 +183,38 @@
+ pent->pw_uid = pwd->pw_uid;
+ pent->pw_gid = pwd->pw_gid;
+ if (pwd->pw_gecos) {
++#ifdef BSD
++ gecos = pwd->pw_gecos;
++ if (*gecos == '*')
++ gecos++;
++ bp = buf;
++
++ /* copy gecos, interpolating & to be full name */
++ for (p = gecos; *p != '\0'; p++) {
++ if (bp >= &buf[BUFLEN - 1])
++ /* buffer overflow */
++ goto gecos_done;
++ if (*p == '&') {
++ /* interpolate full name */
++ snprintf(bp, BUFLEN - (bp - buf),
++ "%s", pwd->pw_name);
++ *bp = toupper(*bp);
++ bp += strlen(bp);
++ }
++ else
++ *bp++ = *p;
++ }
++ *bp = '\0';
++ if ((pent->pw_name = strdup(buf)) == NULL)
++ goto err;
++#else
+ if ((pent->pw_name = strdup(pwd->pw_gecos)) == NULL)
+ goto err;
++#endif
+ }
++#ifdef BSD
++ gecos_done:
++#endif
+ if (pwd->pw_dir) {
+ if ((pent->pw_name = strdup(pwd->pw_dir)) == NULL)
+ goto err;
diff --git a/net/samba/patches/patch-aq b/net/samba/patches/patch-aq
new file mode 100644
index 00000000000..2ad37976946
--- /dev/null
+++ b/net/samba/patches/patch-aq
@@ -0,0 +1,56 @@
+$NetBSD: patch-aq,v 1.1 2002/10/14 01:51:27 kim Exp $
+
+Expand & in the gecos field to a capitalized login name.
+
+--- lib/system.c.orig Thu May 2 21:03:10 2002
++++ lib/system.c Sun Oct 13 21:36:59 2002
+@@ -773,6 +773,12 @@
+
+ static void copy_pwent(struct saved_pw *dst, struct passwd *pass)
+ {
++#ifdef BSD
++# define BUFLEN 1024
++ char *bp, *gecos, *p, buf[BUFLEN];
++ int buflen;
++#endif
++
+ memcpy((char *)&dst->pass, pass, sizeof(struct passwd));
+
+ fstrcpy(dst->pw_name, pass->pw_name);
+@@ -781,7 +787,36 @@
+ fstrcpy(dst->pw_passwd, pass->pw_passwd);
+ dst->pass.pw_passwd = dst->pw_passwd;
+
++#ifdef BSD
++ gecos = pass->pw_gecos;
++ if (*gecos == '*')
++ gecos++;
++ bp = buf;
++
++ /* copy gecos, interpolating & to be full name */
++ for (p = gecos; *p != '\0'; p++) {
++ if (bp >= &buf[BUFLEN - 1]) {
++ /* buffer overflow */
++ gecos = pass->pw_name;
++ goto gecos_done;
++ }
++ if (*p == '&') {
++ /* interpolate full name */
++ snprintf(bp, BUFLEN - (bp - buf), "%s", pass->pw_name);
++ *bp = toupper(*bp);
++ bp += strlen(bp);
++ }
++ else
++ *bp++ = *p;
++ }
++ *bp = '\0';
++ gecos = buf;
++
++ gecos_done:
++ fstrcpy(dst->pw_gecos, gecos);
++#else
+ fstrcpy(dst->pw_gecos, pass->pw_gecos);
++#endif
+ dst->pass.pw_gecos = dst->pw_gecos;
+
+ pstrcpy(dst->pw_dir, pass->pw_dir);