/* interpeted executables */ int isintrexec(void) { char a[64], *b[3], *p; int n; if (memcmp("#!", buf, 2) != 0) return 0; memmove(a, buf+2, sizeof a); if ((p = strchr(a, '\n')) != nil) *p = 0; p = strrchr(a, '/'); if (p == nil) p = a; else p++; n = getfields(p, b, 3, 1, " \t"); if (n >= 2 && strcmp(b[0], "env") == 0) p = b[1]; else p = b[0]; if (strcmp("rc", p) == 0) print("%s\n", mime ? PLAIN : "rc executable file"); else if (strcmp("sh", p) == 0) print("%s\n", mime ? "application/x-sh" : "sh executable file"); else if (strcmp("bash", p) == 0) print("%s\n", mime ? "application/x-sh" : "bash executable file"); else if (strcmp("awk", p) == 0) print("%s\n", mime ? PLAIN : "awk script"); else if (strcmp("sed", p) == 0) print("%s\n", mime ? PLAIN : "sed script"); else if (strcmp("perl", p) == 0) print("%s\n", mime ? PLAIN : "perl script"); else print("%s\n", mime ? PLAIN : "interpeted executable file"); return 1; }