Loading...
gen/getusershell.c Libc-262.3.2 Libc-1507.100.9
--- Libc/Libc-262.3.2/gen/getusershell.c
+++ Libc/Libc-1507.100.9/gen/getusershell.c
@@ -2,8 +2,6 @@
  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
- * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
@@ -55,6 +53,7 @@
  * SUCH DAMAGE.
  */
 
+#include "xlocale_private.h"
 
 #include <sys/param.h>
 #include <sys/file.h>
@@ -70,15 +69,15 @@
  * /etc/shells.
  */
 
-static char *okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL };
+static const char * const okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL };
 static char **curshell, **shells, *strings;
-static char **initshells __P((void));
+static char **initshells(void);
 
 /*
  * Get a list of shells from _PATH_SHELLS, if it exists.
  */
 char *
-getusershell()
+getusershell(void)
 {
 	char *ret;
 
@@ -91,9 +90,8 @@
 }
 
 void
-endusershell()
+endusershell(void)
 {
-	
 	if (shells != NULL)
 		free(shells);
 	shells = NULL;
@@ -104,18 +102,18 @@
 }
 
 void
-setusershell()
+setusershell(void)
 {
-
 	curshell = initshells();
 }
 
 static char **
-initshells()
+initshells(void)
 {
 	register char **sp, *cp;
 	register FILE *fp;
 	struct stat statb;
+	locale_t loc = __current_locale();
 
 	if (shells != NULL)
 		free(shells);
@@ -124,21 +122,21 @@
 		free(strings);
 	strings = NULL;
 	if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
-		return (okshells);
+		return ((char **)okshells);
 	if (fstat(fileno(fp), &statb) == -1) {
 		(void)fclose(fp);
-		return (okshells);
+		return ((char **)okshells);
 	}
 	if ((strings = malloc((u_int)statb.st_size)) == NULL) {
 		(void)fclose(fp);
-		return (okshells);
+		return ((char **)okshells);
 	}
 	shells = calloc((unsigned)statb.st_size / 3, sizeof (char *));
 	if (shells == NULL) {
 		(void)fclose(fp);
 		free(strings);
 		strings = NULL;
-		return (okshells);
+		return ((char **)okshells);
 	}
 	sp = shells;
 	cp = strings;
@@ -148,7 +146,7 @@
 		if (*cp == '#' || *cp == '\0')
 			continue;
 		*sp++ = cp;
-		while (!isspace(*cp) && *cp != '#' && *cp != '\0')
+		while (!isspace_l(*cp, loc) && *cp != '#' && *cp != '\0')
 			cp++;
 		*cp++ = '\0';
 	}