Пример #1
0
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);

}
Пример #2
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;
}