+diff -ur util-linux-2.12r/fdisk/cfdisk.c util-linux-2.12r-patched/fdisk/cfdisk.c
+--- util-linux-2.12r/fdisk/cfdisk.c 2005-09-09 16:44:57.000000000 -0500
++++ util-linux-2.12r-patched/fdisk/cfdisk.c 2006-12-04 23:21:09.646235820 -0600
+@@ -353,7 +353,7 @@
+ /* Some libc's have their own basename() */
+ static char *
+ my_basename(char *devname) {
+- char *s = rindex(devname, '/');
++ char *s = strrchr(devname, '/');
+ return s ? s+1 : devname;
+ }
+
+diff -ur util-linux-2.12r/fdisk/fdiskbsdlabel.c util-linux-2.12r-patched/fdisk/fdiskbsdlabel.c
+--- util-linux-2.12r/fdisk/fdiskbsdlabel.c 2003-07-13 16:12:47.000000000 -0500
++++ util-linux-2.12r-patched/fdisk/fdiskbsdlabel.c 2006-12-04 23:21:09.646235820 -0600
+@@ -538,10 +538,10 @@
+
+ /* We need a backup of the disklabel (xbsd_dlabel might have changed). */
+ d = &disklabelbuffer[BSD_LABELSECTOR * SECTOR_SIZE];
+- bcopy (d, &dl, sizeof (struct xbsd_disklabel));
++ memcpy (&dl, d, sizeof (struct xbsd_disklabel));
+
+ /* The disklabel will be overwritten by 0's from bootxx anyway */
+- bzero (d, sizeof (struct xbsd_disklabel));
++ memset (d, 0, sizeof (struct xbsd_disklabel));
+
+ snprintf (path, sizeof(path), "%s/boot%s", bootdir, dkbasename);
+ if (!xbsd_get_bootstrap (path, &disklabelbuffer[xbsd_dlabel.d_secsize],
+@@ -555,7 +555,7 @@
+ exit ( EXIT_FAILURE );
+ }
+
+- bcopy (&dl, d, sizeof (struct xbsd_disklabel));
++ memcpy (d, &dl, sizeof (struct xbsd_disklabel));
+
+ #if defined (__powerpc__) || defined (__hppa__)
+ sector = 0;
+@@ -657,7 +657,7 @@
+ struct geom g;
+
+ get_geometry (fd, &g);
+- bzero (d, sizeof (struct xbsd_disklabel));
++ memset (d, 0, sizeof (struct xbsd_disklabel));
+
+ d -> d_magic = BSD_DISKMAGIC;
+
+@@ -740,8 +740,8 @@
+ if (BSD_BBSIZE != read (fd, disklabelbuffer, BSD_BBSIZE))
+ fatal (unable_to_read);
+
+- bcopy (&disklabelbuffer[BSD_LABELSECTOR * SECTOR_SIZE + BSD_LABELOFFSET],
+- d, sizeof (struct xbsd_disklabel));
++ memcpy (d, &disklabelbuffer[BSD_LABELSECTOR * SECTOR_SIZE + BSD_LABELOFFSET],
++ sizeof (struct xbsd_disklabel));
+
+ if (d -> d_magic != BSD_DISKMAGIC || d -> d_magic2 != BSD_DISKMAGIC)
+ return 0;
+@@ -776,7 +776,7 @@
+ /* This is necessary if we want to write the bootstrap later,
+ otherwise we'd write the old disklabel with the bootstrap.
+ */
+- bcopy (d, &disklabelbuffer[BSD_LABELSECTOR * SECTOR_SIZE + BSD_LABELOFFSET],
++ memcpy (&disklabelbuffer[BSD_LABELSECTOR * SECTOR_SIZE + BSD_LABELOFFSET], d,
+ sizeof (struct xbsd_disklabel));
+
+ #if defined (__alpha__) && BSD_LABELSECTOR == 0
+diff -ur util-linux-2.12r/fdisk/sfdisk.c util-linux-2.12r-patched/fdisk/sfdisk.c
+--- util-linux-2.12r/fdisk/sfdisk.c 2005-01-04 16:31:57.000000000 -0600
++++ util-linux-2.12r-patched/fdisk/sfdisk.c 2006-12-04 23:21:09.650236137 -0600
+@@ -1730,12 +1730,12 @@
+ eof = 1;
+ return RD_EOF;
+ }
+- if (!(lp = index(lp, '\n')))
++ if (!(lp = strchr(lp, '\n')))
+ fatal(_("long or incomplete input line - quitting\n"));
+ *lp = 0;
+
+ /* remove comments, if any */
+- if ((lp = index(line+2, '#')) != 0)
++ if ((lp = strchr(line+2, '#')) != 0)
+ *lp = 0;
+
+ /* recognize a few commands - to be expanded */
+@@ -1745,7 +1745,7 @@
+ }
+
+ /* dump style? - then bad input is fatal */
+- if ((ip = index(line+2, ':')) != 0) {
++ if ((ip = strchr(line+2, ':')) != 0) {
+ struct dumpfld *d;
+
+ nxtfld:
+@@ -2514,7 +2514,7 @@
+
+ if (argc < 1)
+ fatal(_("no command?\n"));
+- if ((progn = rindex(argv[0], '/')) == NULL)
++ if ((progn = strrchr(argv[0], '/')) == NULL)
+ progn = argv[0];
+ else
+ progn++;
+diff -ur util-linux-2.12r/login-utils/login.c util-linux-2.12r-patched/login-utils/login.c
+--- util-linux-2.12r/login-utils/login.c 2004-12-04 20:37:12.000000000 -0600
++++ util-linux-2.12r-patched/login-utils/login.c 2006-12-04 23:21:09.650236137 -0600
+@@ -97,8 +97,6 @@
+ #include <sys/file.h>
+ #include <termios.h>
+ #include <string.h>
+-#define index strchr
+-#define rindex strrchr
+ #include <sys/ioctl.h>
+ #include <sys/wait.h>
+ #include <signal.h>
+@@ -1192,7 +1190,7 @@
+ childArgv[childArgc++] = buff;
+ } else {
+ tbuf[0] = '-';
+- xstrncpy(tbuf + 1, ((p = rindex(pwd->pw_shell, '/')) ?
++ xstrncpy(tbuf + 1, ((p = strrchr(pwd->pw_shell, '/')) ?
+ p + 1 : pwd->pw_shell),
+ sizeof(tbuf)-1);
+
+diff -ur util-linux-2.12r/login-utils/passwd.c util-linux-2.12r-patched/login-utils/passwd.c
+--- util-linux-2.12r/login-utils/passwd.c 2002-03-08 17:00:11.000000000 -0600
++++ util-linux-2.12r-patched/login-utils/passwd.c 2006-12-04 23:21:09.650236137 -0600
+@@ -194,7 +194,7 @@
+ if ( c-gecos && (g = (char *)malloc (c-gecos+1)) ) {
+ strncpy (g, gecos, c-gecos);
+ g[c-gecos] = 0;
+- while ( (c=rindex(g, ' ')) ) {
++ while ( (c=strrchr(g, ' ')) ) {
+ if ( !check_passwd_string(passwd, c+1) ) {
+ printf(_("Please don't use something like your realname as password!\n"));
+ free (g);
+diff -ur util-linux-2.12r/login-utils/vipw.c util-linux-2.12r-patched/login-utils/vipw.c
+--- util-linux-2.12r/login-utils/vipw.c 2004-03-04 15:54:44.000000000 -0600
++++ util-linux-2.12r-patched/login-utils/vipw.c 2006-12-04 23:21:09.650236137 -0600
+@@ -314,7 +314,7 @@
+ textdomain(PACKAGE);
+
+ bzero(tmp_file, FILENAMELEN);
+- progname = (rindex(argv[0], '/')) ? rindex(argv[0], '/') + 1 : argv[0];
++ progname = (strrchr(argv[0], '/')) ? strrchr(argv[0], '/') + 1 : argv[0];
+ if (!strcmp(progname, "vigr")) {
+ program = VIGR;
+ xstrncpy(orig_file, GROUP_FILE, sizeof(orig_file));
+diff -ur util-linux-2.12r/login-utils/wall.c util-linux-2.12r-patched/login-utils/wall.c
+--- util-linux-2.12r/login-utils/wall.c 2002-03-08 17:00:19.000000000 -0600
++++ util-linux-2.12r-patched/login-utils/wall.c 2006-12-04 23:21:09.650236137 -0600
+@@ -87,7 +87,7 @@
+ textdomain(PACKAGE);
+
+ progname = argv[0];
+- p = rindex(progname, '/');
++ p = strrchr(progname, '/');
+ if (p)
+ progname = p+1;
+
diff -ur util-linux-2.12r/misc-utils/logger.c util-linux-2.12r-patched/misc-utils/logger.c
--- util-linux-2.12r/misc-utils/logger.c 2004-09-06 16:13:49.000000000 -0500
-+++ util-linux-2.12r-patched/misc-utils/logger.c 2006-12-04 19:52:24.068596984 -0600
++++ util-linux-2.12r-patched/misc-utils/logger.c 2006-12-04 23:21:09.650236137 -0600
@@ -198,7 +198,7 @@
} else {
if (p != buf)
}
diff -ur util-linux-2.12r/misc-utils/whereis.c util-linux-2.12r-patched/misc-utils/whereis.c
--- util-linux-2.12r/misc-utils/whereis.c 2001-03-15 04:09:58.000000000 -0600
-+++ util-linux-2.12r-patched/misc-utils/whereis.c 2006-12-04 19:52:43.210100415 -0600
++++ util-linux-2.12r-patched/misc-utils/whereis.c 2006-12-04 23:21:09.650236137 -0600
@@ -323,14 +323,14 @@
char dirbuf[1024];
struct stat statbuf;
*d = 0;
dirp = opendir(dirbuf);
if (dirp == NULL)
+diff -ur util-linux-2.12r/mount/mntent.c util-linux-2.12r-patched/mount/mntent.c
+--- util-linux-2.12r/mount/mntent.c 2004-10-13 15:57:34.000000000 -0500
++++ util-linux-2.12r-patched/mount/mntent.c 2006-12-04 23:21:09.650236137 -0600
+@@ -158,7 +158,7 @@
+ return NULL;
+
+ mfp->mntent_lineno++;
+- s = index (buf, '\n');
++ s = strchr (buf, '\n');
+ if (s == NULL) {
+ /* Missing final newline? Otherwise extremely */
+ /* long line - assume file was corrupted */
+@@ -166,7 +166,7 @@
+ fprintf(stderr, _("[mntent]: warning: no final "
+ "newline at the end of %s\n"),
+ mfp->mntent_file);
+- s = index (buf, 0);
++ s = strchr (buf, 0);
+ } else {
+ mfp->mntent_errs = 1;
+ goto err;
diff -ur util-linux-2.12r/mount/mount.c util-linux-2.12r-patched/mount/mount.c
--- util-linux-2.12r/mount/mount.c 2004-12-21 16:00:36.000000000 -0600
-+++ util-linux-2.12r-patched/mount/mount.c 2006-12-04 19:54:16.317414647 -0600
++++ util-linux-2.12r-patched/mount/mount.c 2006-12-04 23:21:09.654236454 -0600
@@ -488,11 +488,11 @@
/* Accept a comma-separated list of types, and try them one by one */
*p = 0;
args.type = *types = t;
if(do_mount_syscall (&args) == 0)
+diff -ur util-linux-2.12r/mount/mount_by_label.c util-linux-2.12r-patched/mount/mount_by_label.c
+--- util-linux-2.12r/mount/mount_by_label.c 2004-12-21 17:15:33.000000000 -0600
++++ util-linux-2.12r-patched/mount/mount_by_label.c 2006-12-04 23:21:09.654236454 -0600
+@@ -213,7 +213,7 @@
+ fseek(procpt, 0, SEEK_SET);
+
+ while (fgets(line, sizeof(line), procpt)) {
+- if (!index(line, '\n'))
++ if (!strchr(line, '\n'))
+ break;
+
+ if (sscanf (line, " %d %d %d %[^\n ]",
+diff -ur util-linux-2.12r/mount/sundries.c util-linux-2.12r-patched/mount/sundries.c
+--- util-linux-2.12r/mount/sundries.c 2004-12-21 13:12:31.000000000 -0600
++++ util-linux-2.12r-patched/mount/sundries.c 2006-12-04 23:21:09.654236454 -0600
+@@ -138,7 +138,7 @@
+ if (strncmp(p, type, len) == 0 &&
+ (p[len] == 0 || p[len] == ','))
+ return !no;
+- p = index(p,',');
++ p = strchr(p,',');
+ if (!p)
+ break;
+ p++;
+diff -ur util-linux-2.12r/mount/umount.c util-linux-2.12r-patched/mount/umount.c
+--- util-linux-2.12r/mount/umount.c 2005-09-10 13:07:38.000000000 -0500
++++ util-linux-2.12r-patched/mount/umount.c 2006-12-04 23:21:09.654236454 -0600
+@@ -338,7 +338,7 @@
+ if (res < 0)
+ umnt_err2 = errno;
+ /* Do not complain about remote NFS mount points */
+- if (errno == ENOENT && index(spec, ':'))
++ if (errno == ENOENT && strchr(spec, ':'))
+ umnt_err2 = 0;
+ }
+ }
+diff -ur util-linux-2.12r/text-utils/colcrt.c util-linux-2.12r-patched/text-utils/colcrt.c
+--- util-linux-2.12r/text-utils/colcrt.c 2001-03-15 04:09:59.000000000 -0600
++++ util-linux-2.12r-patched/text-utils/colcrt.c 2006-12-04 23:23:45.614600041 -0600
+@@ -252,8 +252,8 @@
+ }
+ putwchar('\n');
+ }
+- bcopy(page[ol], page, (267 - ol) * 132 * sizeof(wchar_t));
+- bzero(page[267- ol], ol * 132 * sizeof(wchar_t));
++ memcpy(page, page[ol], (267 - ol) * 132 * sizeof(wchar_t));
++ memset(page[267- ol], 0, ol * 132 * sizeof(wchar_t));
+ outline -= ol;
+ outcol = 0;
+ first = 1;
+diff -ur util-linux-2.12r/text-utils/display.c util-linux-2.12r-patched/text-utils/display.c
+--- util-linux-2.12r/text-utils/display.c 2002-03-08 17:05:39.000000000 -0600
++++ util-linux-2.12r-patched/text-utils/display.c 2006-12-04 23:24:32.478315487 -0600
+@@ -163,7 +163,7 @@
+ pr->cchar[0] = 's';
+ pr->cchar[1] = 0;
+ for (p1 = pr->fmt; *p1 != '%'; ++p1);
+- for (p2 = ++p1; *p1 && index(spec, *p1); ++p1);
++ for (p2 = ++p1; *p1 && strchr(spec, *p1); ++p1);
+ while ((*p2++ = *p1++) != 0) ;
+ }
+
+diff -ur util-linux-2.12r/text-utils/parse.c util-linux-2.12r-patched/text-utils/parse.c
+--- util-linux-2.12r/text-utils/parse.c 2002-03-08 17:07:00.000000000 -0600
++++ util-linux-2.12r-patched/text-utils/parse.c 2006-12-04 23:24:19.913319294 -0600
+@@ -64,7 +64,7 @@
+ exit(1);
+ }
+ while (fgets(buf, sizeof(buf), fp)) {
+- if ((p = index(buf, '\n')) == NULL) {
++ if ((p = strchr(buf, '\n')) == NULL) {
+ (void)fprintf(stderr, _("hexdump: line too long.\n"));
+ while ((ch = getchar()) != '\n' && ch != EOF);
+ continue;
+@@ -171,7 +171,7 @@
+ * skip any special chars -- save precision in
+ * case it's a %s format.
+ */
+- while (index(spec + 1, *++fmt));
++ while (strchr(spec + 1, *++fmt));
+ if (*fmt == '.' && isdigit((unsigned char)*++fmt)) {
+ prec = atoi(fmt);
+ while (isdigit((unsigned char)*++fmt));
+@@ -244,10 +244,10 @@
+ if (fu->bcnt) {
+ sokay = USEBCNT;
+ /* skip to conversion character */
+- for (++p1; index(spec, *p1); ++p1);
++ for (++p1; strchr(spec, *p1); ++p1);
+ } else {
+ /* skip any special chars, field width */
+- while (index(spec + 1, *++p1));
++ while (strchr(spec + 1, *++p1));
+ if (*p1 == '.' &&
+ isdigit((unsigned char)*++p1)) {
+ sokay = USEPREC;