diff options
Diffstat (limited to 'misc/getusershell.c')
-rw-r--r-- | misc/getusershell.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/misc/getusershell.c b/misc/getusershell.c index 3816e1e..6b210b6 100644 --- a/misc/getusershell.c +++ b/misc/getusershell.c @@ -49,9 +49,10 @@ static char sccsid[] = "@(#)getusershell.c 8.1 (Berkeley) 6/4/93"; * /etc/shells. */ -static const char *okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL }; -static const char **curshell, **shells, *strings; -static const char **initshells __P((void)); +static char *okshells[] = { (char *) _PATH_BSHELL, (char *) _PATH_CSHELL, + NULL }; +static char **curshell, **shells, *strings; +static char **initshells __P((void)); /* * Get a list of shells from _PATH_SHELLS, if it exists. @@ -59,20 +60,20 @@ static const char **initshells __P((void)); char * getusershell() { - const char *ret; + char *ret; if (curshell == NULL) curshell = initshells(); ret = *curshell; if (ret != NULL) curshell++; - return (char *) ret; /* Cast away `const' for history reasons. */ + return (ret); } void endusershell() { - + if (shells != NULL) free(shells); shells = NULL; @@ -89,7 +90,7 @@ setusershell() curshell = initshells(); } -static const char ** +static char ** initshells() { register char **sp, *cp; @@ -97,10 +98,10 @@ initshells() struct stat statb; if (shells != NULL) - free((char *) shells); + free(shells); shells = NULL; if (strings != NULL) - free((char *) strings); + free(strings); strings = NULL; if ((fp = fopen(_PATH_SHELLS, "r")) == NULL) return (okshells); @@ -119,8 +120,8 @@ initshells() strings = NULL; return (okshells); } - sp = (char *) shells; - cp = (char *) strings; + sp = shells; + cp = strings; while (fgets(cp, statb.st_size - (cp - strings), fp) != NULL) { while (*cp != '#' && *cp != '/' && *cp != '\0') cp++; |