+
+shellscript(buf, sb)
+ char buf[];
+ struct stat *sb;
+{
+ register char *tp;
+ char *cp, *xp, *index();
+
+ cp = index(buf, '\n');
+ if (cp == 0 || cp - buf > in)
+ return (0);
+ for (tp = buf; tp != cp && isspace(*tp); tp++)
+ if (!isascii(*tp))
+ return (0);
+ for (xp = tp; tp != cp && !isspace(*tp); tp++)
+ if (!isascii(*tp))
+ return (0);
+ if (tp == xp)
+ return (0);
+ if (sb->st_mode & S_ISUID)
+ printf("set-uid ");
+ if (sb->st_mode & S_ISGID)
+ printf("set-gid ");
+ if (strncmp(xp, "/bin/sh", tp-xp) == 0)
+ xp = "shell";
+ else if (strncmp(xp, "/bin/csh", tp-xp) == 0)
+ xp = "c-shell";
+ else
+ *tp = '\0';
+ printf("executable %s script\n", xp);
+ return (1);
+}
+
+shell(bp, n, tab)
+ char *bp;
+ int n;
+ char *tab[];
+{
+
+ i = 0;
+ do {
+ if (buf[i] == '#' || buf[i] == ':')
+ while (i < n && buf[i] != '\n')
+ i++;
+ if (++i >= n)
+ break;
+ if (lookup(tab) == 1)
+ return (1);
+ } while (i < n);
+ return (0);
+}