/*
* Do not add local shells here. They should be added in /etc/shells
*/
-static char *okshells[] =
- { "/bin/sh", "/bin/csh", 0 };
+static char *okshells[] = { "/bin/sh", "/bin/csh", 0 };
static char **shells, *strings;
static char **curshell = NULL;
char *
getusershell()
{
- char *ret;
+ char *ret;
- if (curshell == NULL)
- curshell = initshells();
- ret = *curshell;
- if (ret != NULL)
- curshell++;
- return (ret);
+ if (curshell == NULL)
+ curshell = initshells();
+ ret = *curshell;
+ if (ret != NULL)
+ curshell++;
+ return (ret);
}
#ifdef AFS_AIX42_ENV
#endif
endusershell()
{
-
- if (shells != NULL)
- free((char *)shells);
- shells = NULL;
- if (strings != NULL)
- free(strings);
- strings = NULL;
- curshell = NULL;
+
+ if (shells != NULL)
+ free((char *)shells);
+ shells = NULL;
+ if (strings != NULL)
+ free(strings);
+ strings = NULL;
+ curshell = NULL;
}
static char **
initshells()
{
- register char **sp, *cp;
- register FILE *fp;
- struct stat statb;
- extern char *malloc(), *calloc();
-
- if (shells != NULL)
- free((char *)shells);
- shells = NULL;
- if (strings != NULL)
- free(strings);
- strings = NULL;
- if ((fp = fopen(SHELLS, "r")) == (FILE *)0)
- return(okshells);
- if (fstat(fileno(fp), &statb) == -1) {
- (void)fclose(fp);
- return(okshells);
- }
- if ((strings = malloc((unsigned)statb.st_size)) == NULL) {
- (void)fclose(fp);
- return(okshells);
- }
- shells = (char **)calloc((unsigned)statb.st_size / 3, sizeof (char *));
- if (shells == NULL) {
- (void)fclose(fp);
- free(strings);
- strings = NULL;
- return(okshells);
- }
- sp = shells;
- cp = strings;
- while (fgets(cp, MAXPATHLEN + 1, fp) != NULL) {
- while (*cp != '#' && *cp != '/' && *cp != '\0')
- cp++;
- if (*cp == '#' || *cp == '\0')
- continue;
- *sp++ = cp;
- while (!isspace(*cp) && *cp != '#' && *cp != '\0')
- cp++;
- *cp++ = '\0';
- }
- *sp = NULL;
+ register char **sp, *cp;
+ register FILE *fp;
+ struct stat statb;
+ extern char *malloc(), *calloc();
+
+ if (shells != NULL)
+ free((char *)shells);
+ shells = NULL;
+ if (strings != NULL)
+ free(strings);
+ strings = NULL;
+ if ((fp = fopen(SHELLS, "r")) == (FILE *) 0)
+ return (okshells);
+ if (fstat(fileno(fp), &statb) == -1) {
+ (void)fclose(fp);
+ return (okshells);
+ }
+ if ((strings = malloc((unsigned)statb.st_size)) == NULL) {
(void)fclose(fp);
- return (shells);
+ return (okshells);
+ }
+ shells = (char **)calloc((unsigned)statb.st_size / 3, sizeof(char *));
+ if (shells == NULL) {
+ (void)fclose(fp);
+ free(strings);
+ strings = NULL;
+ return (okshells);
+ }
+ sp = shells;
+ cp = strings;
+ while (fgets(cp, MAXPATHLEN + 1, fp) != NULL) {
+ while (*cp != '#' && *cp != '/' && *cp != '\0')
+ cp++;
+ if (*cp == '#' || *cp == '\0')
+ continue;
+ *sp++ = cp;
+ while (!isspace(*cp) && *cp != '#' && *cp != '\0')
+ cp++;
+ *cp++ = '\0';
+ }
+ *sp = NULL;
+ (void)fclose(fp);
+ return (shells);
}
#ifdef AFS_AIX42_ENV
setusershell()
{
- curshell = initshells();
+ curshell = initshells();
}
-
-
-
-
-
-