- rename libbb's password helpers as suggested in libbb.h
  my_getpwnam -> bb_xgetpwnam  /* dies on error */
  my_getgrnam -> bb_xgetgrnam  /* dies on error */
  my_getgrgid -> bb_getgrgid
  my_getpwuid -> bb_getpwuid
  my_getug    -> bb_getug
diff --git a/archival/rpm.c b/archival/rpm.c
index fa8db53..9d16567 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -331,8 +331,8 @@
 void fileaction_setowngrp(char *filename, int fileref)
 {
 	int uid, gid;
-	uid = my_getpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref));
-	gid = my_getgrnam(rpm_getstring(RPMTAG_FILEGROUPNAME, fileref));
+	uid = bb_xgetpwnam(rpm_getstring(RPMTAG_FILEUSERNAME, fileref));
+	gid = bb_xgetgrnam(rpm_getstring(RPMTAG_FILEGROUPNAME, fileref));
 	chown (filename, uid, gid);
 }
 
diff --git a/archival/tar.c b/archival/tar.c
index a262386..7a82b44 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -234,9 +234,9 @@
 			TAR_MAGIC_LEN + TAR_VERSION_LEN);
 
 	/* Enter the user and group names (default to root if it fails) */
-	if (my_getpwuid(header.uname, statbuf->st_uid, sizeof(header.uname)) == NULL)
+	if (bb_getpwuid(header.uname, statbuf->st_uid, sizeof(header.uname)) == NULL)
 		strcpy(header.uname, "root");
-	if (my_getgrgid(header.gname, statbuf->st_gid, sizeof(header.gname)) == NULL)
+	if (bb_getgrgid(header.gname, statbuf->st_gid, sizeof(header.gname)) == NULL)
 		strcpy(header.gname, "root");
 
 	if (tbInfo->hlInfo) {
diff --git a/coreutils/chgrp.c b/coreutils/chgrp.c
index 8cfb542..70ac672 100644
--- a/coreutils/chgrp.c
+++ b/coreutils/chgrp.c
@@ -58,7 +58,7 @@
 	argv += optind;
 
 	/* Find the selected group */
-	gid = get_ug_id(*argv, my_getgrnam);
+	gid = get_ug_id(*argv, bb_xgetgrnam);
 	++argv;
 
 	/* Ok, ready to do the deed now */
diff --git a/coreutils/chown.c b/coreutils/chown.c
index 638745f..daf77e2 100644
--- a/coreutils/chown.c
+++ b/coreutils/chown.c
@@ -77,11 +77,11 @@
 	gid = -1;
 	if (groupName) {
 		*groupName++ = '\0';
-		gid = get_ug_id(groupName, my_getgrnam);
+		gid = get_ug_id(groupName, bb_xgetgrnam);
 	}
 
 	/* Now check for the username */
-	uid = get_ug_id(*argv, my_getpwnam);
+	uid = get_ug_id(*argv, bb_xgetpwnam);
 
 	++argv;
 
diff --git a/coreutils/id.c b/coreutils/id.c
index 03c6a6d..28050dd 100644
--- a/coreutils/id.c
+++ b/coreutils/id.c
@@ -80,8 +80,8 @@
 	
 	if(argv[optind]) {
 		p=getpwnam(argv[optind]);
-		/* my_getpwnam is needed because it exits on failure */
-		uid = my_getpwnam(argv[optind]);
+		/* bb_xgetpwnam is needed because it exits on failure */
+		uid = bb_xgetpwnam(argv[optind]);
 		gid = p->pw_gid;
 		/* in this case PRINT_REAL is the same */ 
 	}
@@ -89,8 +89,8 @@
 	if(flags & (JUST_GROUP | JUST_USER)) {
 		/* JUST_GROUP and JUST_USER are mutually exclusive */
 		if(flags & NAME_NOT_NUMBER) {
-			/* my_getpwuid and my_getgrgid exit on failure so puts cannot segfault */
-			puts((flags & JUST_USER) ? my_getpwuid(NULL, uid, -1 ) : my_getgrgid(NULL, gid, -1 ));
+			/* bb_getpwuid and bb_getgrgid exit on failure so puts cannot segfault */
+			puts((flags & JUST_USER) ? bb_getpwuid(NULL, uid, -1 ) : bb_getgrgid(NULL, gid, -1 ));
 		} else {
 			bb_printf("%u\n",(flags & JUST_USER) ? uid : gid);
 		}
@@ -99,11 +99,11 @@
 	}
 
 	/* Print full info like GNU id */
-	/* my_getpwuid doesn't exit on failure here */
-	status=printf_full(uid, my_getpwuid(NULL, uid, 0), 'u');
+	/* bb_getpwuid doesn't exit on failure here */
+	status=printf_full(uid, bb_getpwuid(NULL, uid, 0), 'u');
 	putchar(' ');
-	/* my_getgrgid doesn't exit on failure here */
-	status|=printf_full(gid, my_getgrgid(NULL, gid, 0), 'g');
+	/* bb_getgrgid doesn't exit on failure here */
+	status|=printf_full(gid, bb_getgrgid(NULL, gid, 0), 'g');
 
 #ifdef CONFIG_SELINUX
 	if ( is_selinux_enabled() ) {
diff --git a/coreutils/install.c b/coreutils/install.c
index 74e1d9a..d046041 100644
--- a/coreutils/install.c
+++ b/coreutils/install.c
@@ -73,8 +73,8 @@
 		copy_flags |= FILEUTILS_PRESERVE_STATUS;
 	}
 	bb_parse_mode(mode_str, &mode);
-	gid = get_ug_id(gid_str, my_getgrnam);
-	uid = get_ug_id(uid_str, my_getpwnam);
+	gid = get_ug_id(gid_str, bb_xgetgrnam);
+	uid = get_ug_id(uid_str, bb_xgetpwnam);
 	umask(0);
 
 	/* Create directories
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 4dfa9f5..d8d814a 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -692,9 +692,9 @@
 			break;
 		case LIST_ID_NAME:
 #ifdef CONFIG_FEATURE_LS_USERNAME
-			my_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch));
+			bb_getpwuid(scratch, dn->dstat.st_uid, sizeof(scratch));
 			printf("%-8.8s ", scratch);
-			my_getgrgid(scratch, dn->dstat.st_gid, sizeof(scratch));
+			bb_getgrgid(scratch, dn->dstat.st_gid, sizeof(scratch));
 			printf("%-8.8s", scratch);
 			column += 17;
 			break;
diff --git a/coreutils/whoami.c b/coreutils/whoami.c
index 6a6e2ee..16d2808 100644
--- a/coreutils/whoami.c
+++ b/coreutils/whoami.c
@@ -32,7 +32,7 @@
 	if (argc > 1)
 		bb_show_usage();
 
-	puts(my_getpwuid(NULL, geteuid(), -1));
+	puts(bb_getpwuid(NULL, geteuid(), -1));
 	/* exits on error */
 	bb_fflush_stdout_and_exit(EXIT_SUCCESS);
 }
diff --git a/debianutils/start_stop_daemon.c b/debianutils/start_stop_daemon.c
index b1ebe2f..f9310af 100644
--- a/debianutils/start_stop_daemon.c
+++ b/debianutils/start_stop_daemon.c
@@ -265,7 +265,7 @@
 	argv += optind;
 
 	if (userspec && sscanf(userspec, "%d", &user_id) != 1)
-		user_id = my_getpwnam(userspec);
+		user_id = bb_xgetpwnam(userspec);
 
 	if (opt & SSD_CTX_STOP) {
 		do_stop();
diff --git a/include/libbb.h b/include/libbb.h
index 3fb62e9..b979477 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -221,16 +221,14 @@
 		const struct suffix_mult *suffixes);
 
 
-//#warning change names?
-
 /* These parse entries in /etc/passwd and /etc/group.  This is desirable
  * for BusyBox since we want to avoid using the glibc NSS stuff, which
- * increases target size and is often not needed embedded systems.  */
-extern long my_getpwnam(const char *name);
-extern long my_getgrnam(const char *name);
-extern char * my_getug(char *buffer, char *idname, long id, int bufsize, char prefix);
-extern char * my_getpwuid(char *name, long uid, int bufsize);
-extern char * my_getgrgid(char *group, long gid, int bufsize);
+ * increases target size and is often not needed on embedded systems.  */
+extern long bb_xgetpwnam(const char *name);
+extern long bb_xgetgrnam(const char *name);
+extern char * bb_getug(char *buffer, char *idname, long id, int bufsize, char prefix);
+extern char * bb_getpwuid(char *name, long uid, int bufsize);
+extern char * bb_getgrgid(char *group, long gid, int bufsize);
 extern char *bb_askpass(int timeout, const char * prompt);
 
 extern int device_open(const char *device, int mode);
@@ -471,7 +469,7 @@
 extern void vfork_daemon_rexec(int nochdir, int noclose,
 		int argc, char **argv, char *foreground_opt);
 extern int get_terminal_width_height(int fd, int *width, int *height);
-extern unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *));
+extern unsigned long get_ug_id(const char *s, long (*__bb_getxxnam)(const char *));
 
 #define HASH_SHA1	1
 #define HASH_MD5	2
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index dae3c12..be53507 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -28,13 +28,12 @@
 	correct_password.c create_icmp_socket.c create_icmp6_socket.c \
 	device_open.c dump.c error_msg.c error_msg_and_die.c find_mount_point.c \
 	find_pid_by_name.c find_root_device.c fgets_str.c full_read.c \
-	full_write.c get_last_path_component.c get_line_from_file.c get_ug_id.c \
+	full_write.c get_last_path_component.c get_line_from_file.c \
 	hash_fd.c herror_msg.c herror_msg_and_die.c \
 	human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \
 	kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \
 	make_directory.c mode_string.c mtab.c mtab_file.c \
-	my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\
-	my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \
+	obscure.c parse_mode.c parse_number.c perror_msg.c \
 	perror_msg_and_die.c print_file.c get_console.c \
 	process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \
 	read_package_field.c recursive_action.c remove_file.c \
@@ -75,18 +74,22 @@
 LIBBB_MSRC4:=$(srcdir)/safe_strtol.c
 LIBBB_MOBJ4:=safe_strtoi.o safe_strtod.o safe_strtol.o safe_strtoul.o
 
+LIBBB_MSRC5:=$(srcdir)/bb_pwd.c
+LIBBB_MOBJ5:=bb_xgetpwnam.o bb_xgetgrnam.o bb_getgrgid.o bb_getpwuid.o \
+	bb_getug.o get_ug_id.o
+
 LIBBB_MOBJS0=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ0))
 LIBBB_MOBJS1=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ1))
 LIBBB_MOBJS2=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ2))
 LIBBB_MOBJS3=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ3))
 LIBBB_MOBJS4=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ4))
+LIBBB_MOBJS5=$(patsubst %,$(LIBBB_DIR)%, $(LIBBB_MOBJ5))
 
 libraries-y+=$(LIBBB_DIR)$(LIBBB_AR)
 
 $(LIBBB_DIR)$(LIBBB_AR): $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \
-	$(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4)
-	$(AR) $(ARFLAGS) $@ $(LIBBB_OBJS) $(LIBBB_MOBJS0) $(LIBBB_MOBJS1) \
-		$(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4)
+	$(LIBBB_MOBJS2) $(LIBBB_MOBJS3) $(LIBBB_MOBJS4) $(LIBBB_MOBJS5)
+	$(AR) $(ARFLAGS) $(@) $(LIBBB_OBJS) $(^)
 
 $(LIBBB_DIR)%.o: $(srcdir)/%.c
 	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
@@ -106,3 +109,6 @@
 $(LIBBB_MOBJS4): $(LIBBB_MSRC4)
 	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
 
+$(LIBBB_MOBJS5): $(LIBBB_MSRC5)
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -DL_$(notdir $*) -c $< -o $@
+
diff --git a/libbb/procps.c b/libbb/procps.c
index 1e9d686..3e863b0 100644
--- a/libbb/procps.c
+++ b/libbb/procps.c
@@ -53,7 +53,7 @@
 		sprintf(status, "/proc/%d", pid);
 		if(stat(status, &sb))
 			continue;
-		my_getpwuid(curstatus.user, sb.st_uid, sizeof(curstatus.user));
+		bb_getpwuid(curstatus.user, sb.st_uid, sizeof(curstatus.user));
 
 		sprintf(status, "/proc/%d/stat", pid);
 
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index 7fa05a0..eb98901 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -305,7 +305,7 @@
 
 	if (usegroup) {
 		/* Add user to a group that already exists */
-		pw.pw_gid = my_getgrnam(usegroup);
+		pw.pw_gid = bb_xgetgrnam(usegroup);
 		/* exits on error */	
 	}
 
diff --git a/loginutils/passwd.c b/loginutils/passwd.c
index c8940ee..5d8380d 100644
--- a/loginutils/passwd.c
+++ b/loginutils/passwd.c
@@ -168,7 +168,7 @@
 			bb_show_usage();
 		}
 	}
-	myname = (char *) bb_xstrdup(my_getpwuid(NULL, getuid(), -1));
+	myname = (char *) bb_xstrdup(bb_getpwuid(NULL, getuid(), -1));
 	/* exits on error */
 	if (optind < argc) {
 		name = argv[optind];
diff --git a/miscutils/makedevs.c b/miscutils/makedevs.c
index 8a40729..e988400 100644
--- a/miscutils/makedevs.c
+++ b/miscutils/makedevs.c
@@ -160,12 +160,12 @@
 			continue;
 		}
 		if (group) {
-			gid = get_ug_id(group, my_getgrnam);
+			gid = get_ug_id(group, bb_xgetgrnam);
 		} else {
 			gid = getgid();
 		}
 		if (user) {
-			uid = get_ug_id(user, my_getpwnam);
+			uid = get_ug_id(user, bb_xgetpwnam);
 		} else {
 			uid = getuid();
 		}
diff --git a/networking/httpd.c b/networking/httpd.c
index 69c30bf..66d8bfe 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -2050,7 +2050,7 @@
 	uid = strtol(s_uid, &e, 0);
 	if(*e != '\0') {
 		/* not integer */
-		uid = my_getpwnam(s_uid);
+		uid = bb_xgetpwnam(s_uid);
 	}
       }
 #endif
diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index fee33b7..4e2e50f 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -108,7 +108,7 @@
 	char buf[1024], name[128];
 
 	/* Fill out the name string early (may be overwritten later) */
-	my_getpwuid(name, geteuid(), sizeof(name));
+	bb_getpwuid(name, geteuid(), sizeof(name));
 
 	/* Parse any options */
 	while ((opt = getopt(argc, argv, "p:st:")) > 0) {