int main() { int i, n, pid, r; start(10); system("cp ../t10a ."); pid = getpid(); /* Create files t10b ... t10h */ mkfiles(); if (getpid() == pid) if (fork() == 0) { execl("t10a", "t10a", (char *) 0); exit(0); } if (getpid() == pid) if (fork() == 0) { execl("t10b", "t10b", (char *) 0); exit(0); } if (getpid() == pid) if (fork() == 0) { execl("t10c", "t10c", (char *) 0); exit(0); } if (getpid() == pid) if (fork() == 0) { execl("t10d", "t10d", (char *) 0); exit(0); } srand(100); for (i = 0; i < 60; i++) { r = rand() & 07; spawn(r); } for (i = 0; i < 4; i++) wait(&n); rmfiles(); quit(); return(-1); /* impossible */ }
static int deleteScaffold(const QString &name) { // Removes files QString str = name; str = str.remove('_').toLower().trimmed(); if (QFileInfo(D_HELPERS + str + ".h").exists()) { QStringList helpers; helpers << str + ".h" << str + ".cpp"; rmfiles(helpers, D_HELPERS, "helpers.pro"); } else if (str.endsWith("validator", Qt::CaseInsensitive)) { QStringList helpers; helpers << str + ".h" << str + ".cpp"; rmfiles(helpers, D_HELPERS, "helpers.pro"); } else { QStringList ctrls, models, views; ctrls << str + "controller.h" << str + "controller.cpp"; models << QLatin1String("sqlobjects") + SEP + str + "object.h" << QLatin1String("mongoobjects") + SEP + str + "object.h" << str + ".h" << str + ".cpp"; // Template system if (templateSystem == "otama") { views << str + SEP + "index.html" << str + SEP + "index.otm" << str + SEP + "show.html" << str + SEP + "show.otm" << str + SEP + "entry.html" << str + SEP + "entry.otm" << str + SEP + "edit.html" << str + SEP + "edit.otm"; } else if (templateSystem == "erb") { views << str + SEP + "index.erb" << str + SEP + "show.erb" << str + SEP + "entry.erb" << str + SEP + "edit.erb"; } else { qCritical("Invalid template system specified: %s", qPrintable(templateSystem)); return 2; } bool allRemove = false; bool quit = false; // Removes controllers rmfiles(ctrls, allRemove, quit, D_CTRLS, "controllers.pro"); if (quit) { ::_exit(1); return 1; } // Removes models rmfiles(models, allRemove, quit, D_MODELS, "models.pro"); if (quit) { ::_exit(1); return 1; } // Removes views QStringList rmd = rmfiles(views, allRemove, quit, D_VIEWS); if (!rmd.isEmpty()) { QString path = D_VIEWS + "_src" + SEP + str; QFile::remove(path + "_indexView.cpp"); QFile::remove(path + "_showView.cpp"); QFile::remove(path + "_entryView.cpp"); QFile::remove(path + "_editView.cpp"); } // Removes the sub-directory rmpath(D_VIEWS + str); } return 0; }
static QStringList rmfiles(const QStringList &files, const QString &baseDir, const QString &proj) { bool allRemove = false; bool quit = false; return rmfiles(files, allRemove, quit, baseDir, proj); }
void s_print_request(char *m, MESG *md) { extern char *Local_System; char *file; char *idno; char *path; char *req_file; char *req_id = 0; RSTATUS *rp; REQUEST *r; SECURE *s; struct passwd *pw; short err; short status; off_t size; uid_t org_uid; gid_t org_gid; #ifdef LP_USE_PAPI_ATTR struct stat tmpBuf; char tmpName[BUFSIZ]; #endif (void) getmessage(m, S_PRINT_REQUEST, &file); syslog(LOG_DEBUG, "s_print_request(%s)", (file ? file : "NULL")); /* * "NewRequest" points to a request that's not yet in the * request list but is to be considered with the rest of the * requests (e.g. calculating # of requests awaiting a form). */ if ((rp = NewRequest = new_rstatus(NULL, NULL)) == NULL) status = MNOMEM; else { req_file = reqpath(file, &idno); path = makepath(Lp_Tmp, req_file, (char *)0); (void) chownmod(path, Lp_Uid, Lp_Gid, 0644); Free(path); if (!(r = Getrequest(req_file))) status = MNOOPEN; else { rp->req_file = Strdup(req_file); freerequest(rp->request); rp->request = r; rp->request->outcome = 0; rp->secure->uid = md->uid; rp->secure->gid = md->gid; if (md->slabel != NULL) rp->secure->slabel = Strdup(md->slabel); pw = getpwuid(md->uid); endpwent(); if (pw && pw->pw_name && *pw->pw_name) rp->secure->user = Strdup(pw->pw_name); else { rp->secure->user = Strdup(BIGGEST_NUMBER_S); (void) sprintf(rp->secure->user, "%u", md->uid); } if ((rp->request->actions & ACT_SPECIAL) == ACT_HOLD) rp->request->outcome |= RS_HELD; if ((rp->request->actions & ACT_SPECIAL) == ACT_RESUME) rp->request->outcome &= ~RS_HELD; if ((rp->request->actions & ACT_SPECIAL) == ACT_IMMEDIATE) { if (!md->admin) { status = MNOPERM; goto Return; } rp->request->outcome |= RS_IMMEDIATE; } size = chfiles(rp->request->file_list, Lp_Uid, Lp_Gid); if (size < 0) { /* * at this point, chfiles() may have * failed because the file may live on * an NFS mounted filesystem, under * a directory of mode 700. such a * directory isn't accessible even by * root, according to the NFS protocol * (i.e. the Stat() in chfiles() failed). * this most commonly happens via the * automounter, and rlogin. thus we * change our euid/egid to that of the * user, and try again. if *this* fails, * then the file must really be * inaccessible. */ org_uid = geteuid(); org_gid = getegid(); if (setegid(md->gid) != 0) { status = MUNKNOWN; goto Return; } if (seteuid(md->uid) != 0) { setgid(org_gid); status = MUNKNOWN; goto Return; } size = chfiles(rp->request->file_list, Lp_Uid, Lp_Gid); if (seteuid(org_uid) != 0) { /* should never happen */ note("s_print_request(): "); note("seteuid back to uid=%d " "failed!!\n", org_uid); size = -1; } if (setegid(org_gid) != 0) { /* should never happen */ note("s_print_request(): "); note("setegid back to uid=%d " "failed!!\n", org_uid); size = -1; } if (size < 0) { status = MUNKNOWN; goto Return; } } if (!(rp->request->outcome & RS_HELD) && size == 0) { status = MNOPERM; goto Return; } rp->secure->size = size; (void) time(&rp->secure->date); rp->secure->req_id = NULL; if (!rp->request->title) { if (strlen(*rp->request->file_list) < (size_t)24) rp->request->title = Strdup(*rp->request->file_list); else { char *r; if (r = strrchr( *rp->request->file_list, '/')) r++; else r = *rp->request->file_list; rp->request->title = malloc(25); sprintf(rp->request->title, "%-.24s", r); } } if ((err = validate_request(rp, &req_id, 0)) != MOK) status = err; else { /* * "req_id" will be supplied if this is from a * remote system. */ if (rp->secure->req_id == NULL) { req_id = makestr(req_id, "-", idno, (char *)0); rp->secure->req_id = req_id; } else req_id = rp->secure->req_id; #ifdef LP_USE_PAPI_ATTR /* * Check if the PAPI job attribute file * exists, if it does change the * permissions and ownership of the file. * This file is created when print jobs * are submitted via the PAPI interface, * the file pathname of this file is * passed to the slow-filters and printer * interface script as an environment * variable when they are executed */ snprintf(tmpName, sizeof (tmpName), "%s-%s", idno, LP_PAPIATTRNAME); path = makepath(Lp_Temp, tmpName, (char *)0); if (stat(path, &tmpBuf) == 0) { syslog(LOG_DEBUG, "s_print_request: "\ "attribute file ='%s'", path); /* * IPP job attribute file exists * for this job so change * permissions and ownership of * the file */ (void) chownmod(path, Lp_Uid, Lp_Gid, 0644); Free(path); } else { syslog(LOG_DEBUG, "s_print_request: "\ "no attribute file"); } #endif /* * fix for bugid 1103890. * use Putsecure instead. */ if ((Putsecure(req_file, rp->secure) == -1) || (putrequest(req_file, rp->request) == -1)) status = MNOMEM; else { status = MOK; insertr(rp); NewRequest = 0; if (rp->slow) schedule(EV_SLOWF, rp); else schedule(EV_INTERF, rp->printer); del_flt_act(md, FLT_FILES); } } } } Return: NewRequest = 0; Free(req_file); Free(idno); if (status != MOK && rp) { rmfiles(rp, 0); free_rstatus(rp); } mputm(md, R_PRINT_REQUEST, status, NB(req_id), chkprinter_result); }