X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/59e0d9fe772464b93d835d2a2964457702469a43..2be56ee90c5c5bee77895b8787a43e894249002b:/gen/getusershell.c diff --git a/gen/getusershell.c b/gen/getusershell.c index 9c25b5d..202a51b 100644 --- a/gen/getusershell.c +++ b/gen/getusershell.c @@ -3,8 +3,6 @@ * * @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 * Version 2.0 (the 'License'). You may not use this file except in @@ -55,6 +53,7 @@ * SUCH DAMAGE. */ +#include "xlocale_private.h" #include #include @@ -70,7 +69,7 @@ * /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(void); @@ -78,7 +77,7 @@ 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 @@ getusershell() } void -endusershell() +endusershell(void) { - if (shells != NULL) free(shells); shells = NULL; @@ -104,18 +102,18 @@ endusershell() } 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 @@ initshells() 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 @@ initshells() if (*cp == '#' || *cp == '\0') continue; *sp++ = cp; - while (!isspace(*cp) && *cp != '#' && *cp != '\0') + while (!isspace_l(*cp, loc) && *cp != '#' && *cp != '\0') cp++; *cp++ = '\0'; }