Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. #include <unistd.h>
  2.  #include <stdio.h>
  3.  #include <stdlib.h>
  4.  #include <string.h>
  5.  
  6.  
  7.  int main(int argc, char *argv[]) {
  8.      FILE* fp;
  9.      int N = 50;
  10.      fp = freopen("error", "a+b", stderr);
  11.      char * program_name = argv[1];
  12.      pid_t pid = fork();
  13.      if (pid == -1) {
  14.          return 1;
  15.      }
  16.      if (pid > 0) {
  17.          int status;
  18.          waitpid(pid, &status, 0);
  19.          char s[N];
  20.          int ans_err = 0;
  21.          int ans_warn = 0;
  22.          int err = 0;
  23.          int warn = 0;
  24.          while (fgets(s, N, fp) != NULL) {
  25.              char* inf = strstr(s, ": error:");
  26.              if (inf != NULL) {
  27.                  while (*inf != ':') {
  28.                      inf--;
  29.                  }
  30.                  inf--;
  31.                  int temp = 1;
  32.                  int cur = 0;
  33.                  while (*inf != ':') {
  34.                      cur += (*inf - '0') * temp;
  35.                      temp = temp * 10;
  36.                      inf--;
  37.                  }
  38.                  if (cur != err) {
  39.                      ans_err++;
  40.                  }
  41.  
  42.              }
  43.              inf = strstr(s, ": warning:");
  44.              if (inf != NULL) {
  45.                  while (*inf != ':') {
  46.                      inf--;
  47.                  }
  48.                  inf--;
  49.                  int temp = 1;
  50.                  int cur = 0;
  51.                  while(*inf != ':') {
  52.                      cur += (*inf - '0') * temp;
  53.                      temp = temp * 10;
  54.                      inf--;
  55.                  }
  56.                  if (cur != warn) {
  57.                      ans_warn++;
  58.                  }
  59.             }
  60.  
  61.          }
  62.          printf("%d %d", ans_err, ans_warn);
  63.          return 0;
  64.      }
  65.      execlp("gcc", "gcc", program_name, NULL);
  66.      return 0;
  67.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement