static TWindow *exec_script(const char *filename) { FILE *fp; char header[256]; const char *argv[11]; char *tok; int i, len; if ((fp = fopen(filename, "r")) == NULL) { perror(filename); return NULL; } if ((len = fread(header, sizeof(char), 256, fp)) > 0) header[len - 1] = 0; fclose(fp); if (strchr(header, '\n')) *strchr(header, '\n') = 0; if (strchr(header, '\r')) *strchr(header, '\r') = 0; argv[0] = strtok_r(header+2, " \t", &tok); for (i = 1; i < 10; ++i) { if (!(argv[i] = strtok_r(NULL, " \t", &tok))) break; } argv[i] = filename; pz_execv(argv[0], (char *const *)argv); return NULL; }
void pz_exec(const char *file) { const char *const argv[] = {"sh", "-c", file, NULL}; pz_execv("/bin/sh", (char *const *)argv); }