home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / w00w00 / sectools / SRS / client / src / error.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-12  |  1.4 KB  |  55 lines

  1. #include "headers.h" /* has all the important stuff */
  2.  
  3. /* function to report an error to the error file */
  4. void error(char *fmt, ...)
  5. {
  6.    int res;
  7.    va_list args;
  8.  
  9.    time_t tm;
  10.  
  11.    char errmsg[MAXREADSIZE];
  12.    char errbuf[MAXREADSIZE];
  13.  
  14.    int headlen = strlen("[ERROR (pid XXXXX) - XXX XXX XX XX:XX:XX XXXX]: ");
  15.  
  16.    tm = time(NULL);
  17.  
  18.    memset(errmsg, 0, sizeof(errmsg));
  19.    memset(errbuf, 0, sizeof(errbuf));
  20.  
  21.    va_start(args, fmt);
  22.    (void)vsnprintf(errmsg, sizeof(errmsg) - headlen - 1, fmt, args);
  23.    va_end(args);
  24.  
  25.    errmsg[sizeof(errmsg)-1] = '\0';
  26.  
  27.    if (((errmsg[0] == '\0') || (errmsg[0] == '\n')) && 
  28.        (isprint((int)errmsg[1]) == 0))
  29.    {
  30.       debug("bad data in error message... returning\n");
  31.       return;
  32.    }
  33.  
  34.    (void)sprintf(errbuf, "[ERROR (pid %d) - %s", (int)getpid(), ctime(&tm));
  35.  
  36.    errbuf[strlen(errbuf)-1] = '\0';
  37.    (void)strcat(errbuf, "]:\n");
  38.    (void)strcat(errbuf, errmsg);
  39.  
  40.    errbuf[sizeof(errbuf)-2] = '\n';
  41.    errbuf[sizeof(errbuf)-1] = '\0';
  42.  
  43.    res = write(errlogfd, errbuf, strlen(errbuf));
  44.    if ((res == 0) || ((res == ERROR) && (errno > 0)))
  45.    {
  46.       (void)fprintf(stderr, "unable to write to error log: %s\n\n", 
  47.                     strerror(errno));
  48.  
  49.       exit(ERROR);
  50.    }
  51.  
  52.    if (strstr(errbuf, "\n\n") == NULL) (void)write(errlogfd, "\n", 1);
  53.    if (debugging == 1) debug("[ERROR (pid %d)]: %s", (int)getpid(), errmsg);
  54. }
  55.