int breconfig (int argc, char **argv, int configFlag) { char *optName; int vFlag = 0; int fFlag = 0; int checkReply; int stdoutsave; int fd; FILE *fp; char *linep; char tmpfile[256]; char *tmpname = "tmpXXXXXX"; while ((optName = myGetOpt (argc, argv, "f|v|")) != NULL) { switch (optName[0]) { case 'v': vFlag = 1; break; case 'f': fFlag = 1; break; default: return (-2); } } if (optind < argc) { return (-2); } if (!vFlag && !fFlag) { fprintf (stderr, "\nChecking configuration files ...\n\n"); stdoutsave = dup (1); sprintf (tmpfile, "/tmp/%s", tmpname); mktemp (tmpfile); fd = open (tmpfile, O_RDWR | O_CREAT | O_TRUNC, 0666); if (fd > 0) { dup2 (fd, 1); dup2 (fd, 2); checkReply = checkConf (1, 2); fflush (stderr); close (fd); dup2 (stdoutsave, 1); dup2 (stdoutsave, 2); fp = fopen (tmpfile, "r"); if (fp != 0) { if (checkReply == EXIT_FATAL_ERROR || checkReply == EXIT_WARNING_ERROR) { if (checkReply == EXIT_FATAL_ERROR) fprintf (stderr, "There are fatal errors.\n\n"); else fprintf (stderr, "There are warning errors.\n\n"); fflush (stderr); if (getConfirm ((_i18n_msg_get (ls_catd, NL_SETN, 2563, "Do you want to see detailed messages? [y/n] ")))) /* catgets 2563 */ while ((linep = getNextLine_ (fp, 0))) fprintf (stderr, "%s\n", linep); } else fprintf (stderr, I18N (2586, "No errors found.\n\n")); /* catgets 2586 */ fflush (stderr); } fclose (fp); unlink (tmpfile); } else checkReply = checkConf (0, 2); } else checkReply = checkConf (vFlag, 2); if (configFlag == MBD_CKCONFIG) { return (0); } switch (checkReply) { case EXIT_FATAL_ERROR: return -1; case EXIT_WARNING_ERROR: if (fFlag) break; if (configFlag == MBD_RECONFIG) { if (!getConfirm ((_i18n_msg_get (ls_catd, NL_SETN, 2564, "\nDo you want to reconfigure? [y/n] ")))) { /* catgets 2564 */ fprintf (stderr, (_i18n_msg_get (ls_catd, NL_SETN, 2565, "Reconfiguration aborted.\n"))); /* catgets 2565 */ return (-1); } } else { if (!getConfirm (I18N (2570, "\nDo you want to restart MBD? [y/n] "))) { /* catgets 2570 */ fprintf (stderr, (I18N (2571, "MBD restart aborted.\n"))); /* catgets 2571 */ return (-1); } } default: ; } if (lsb_reconfig (configFlag) < 0) { lsb_perror ((_i18n_msg_get (ls_catd, NL_SETN, 2566, "Failed"))); /* catgets 2566 */ return (-1); } if (configFlag == MBD_RECONFIG) { printf ("%s\n", _i18n_msg_get (ls_catd, NL_SETN, 2567, "Reconfiguration initiated")); /* catgets 2567 */ } else { printf ("%s\n", I18N (2569, "MBD restart initiated")); /* catgets 2569 */ } return (0); }
struct lsfAcctRec * ls_getacctrec(FILE *log_fp, int *lineNum) { int cc, ccount; int len, disp, term; int sar = sizeof(struct lsfAcctRec); char *line; static struct lsfAcctRec *acctRec = NULL; if (acctRec != NULL) { free(acctRec); acctRec = NULL; } (*lineNum)++; if ((line = getNextLine_(log_fp, FALSE)) == NULL) { lserrno = LSE_EOF; return NULL; } len = strlen(line)*sizeof(char); acctRec = (struct lsfAcctRec *) malloc(sar + 5*len); if (acctRec == NULL) { lserrno = LSE_MALLOC; return NULL; } acctRec->username = (char *) acctRec + sar; acctRec->fromHost = acctRec->username + len; acctRec->execHost = acctRec->fromHost + len; acctRec->cwd = acctRec->execHost + len; acctRec->cmdln = acctRec->cwd + len; if ((cc = sscanf(line, "%d%n", &acctRec->pid, &ccount)) != 1) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((ccount = stripQStr(line, acctRec->username)) < 0) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; cc = sscanf(line, "%d%d%d%n", &acctRec->exitStatus, &disp, &term, &ccount); acctRec->dispTime = disp; acctRec->termTime = term; if (cc != 3) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((ccount = stripQStr(line, acctRec->fromHost)) < 0) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((ccount = stripQStr(line, acctRec->execHost)) < 0) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((ccount = stripQStr(line, acctRec->cwd)) < 0) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((ccount = stripQStr(line, acctRec->cmdln)) < 0) { lserrno = LSE_ACCT_FORMAT; return NULL; } line += ccount + 1; if ((cc = str2lsfRu(line, &acctRec->lsfRu, &ccount)) != 19) { lserrno = LSE_ACCT_FORMAT; return NULL; } return acctRec; }