#include #include #include #include #include #include #include #include using namespace std; static void fcthup (int) { exit (0); } int main (int argc, char *argv[]) { FILE *fout = fopen ("/tmp/init.log","w"); fprintf (fout,"Init started\n"); FILE *fin = fopen ("/tmp/config","r"); if (fin != NULL){ char line[1000]; while (fgets(line,sizeof(line)-1,fin)!=NULL){ int len = strlen(line); while (len > 0 && isspace(line[len-1])){ len--; line[len] = '\0'; } fprintf (fout,"line=%s\n",line); fflush (fout); if (strncmp(line,"export ",7)==0){ char *pt = strdup(line+7); putenv (pt); }else{ const char *pt = line; pid_t pid = fork(); if (pid == (pid_t)0){ vector args; while (*pt != '\0'){ while (isspace(*pt)) pt++; const char *start = pt; while (*pt > ' ') pt++; if (pt > start){ string arg(start,pt-start); fprintf (fout,"arg=%s\n",arg.c_str()); fflush (fout); args.push_back(arg); } } const char *argsp[args.size()+1]; for (unsigned i=0; i