*** check_procs.c.original Fri Jan 31 10:44:15 2003 --- check_procs.c Fri Jan 31 10:44:27 2003 *************** *** 77,82 **** --- 77,83 ---- char *args = ""; char *fmt = ""; char tmp[MAX_INPUT_BUFFER]; + const char *zombie = "Z"; int main (int argc, char **argv) *************** *** 93,98 **** --- 94,100 ---- int found = 0; /* counter for number of lines returned in `ps` output */ int procs = 0; /* counter for number of processes meeting filter criteria */ int pos; /* number of spaces before 'args' in `ps` output */ + int cols; /* number of columns in ps output */ int result = STATE_UNKNOWN; *************** *** 115,128 **** fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process); while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { - if ( #ifdef USE_PS_VARS ! sscanf (input_buffer, PS_FORMAT, PS_VARLIST) >= 4 #else ! sscanf (input_buffer, PS_FORMAT, procstat, &procuid, &procppid, &pos, ! procprog) >= 4 #endif ! ) { found++; resultsum = 0; asprintf (&procargs, "%s", input_buffer + pos); --- 117,134 ---- fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process); while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { #ifdef USE_PS_VARS ! cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST); #else ! cols = sscanf (input_buffer, PS_FORMAT, procstat, &procuid, ! &procppid, &pos, procprog); #endif ! /* Zombie processes do not give a procprog command */ ! if ( cols == 3 && strstr(procstat, zombie) ) { ! strcpy(procprog, ""); ! cols = 4; ! } ! if ( cols >= 4 ) { found++; resultsum = 0; asprintf (&procargs, "%s", input_buffer + pos); *************** *** 147,152 **** --- 153,162 ---- #endif if (options == resultsum) procs++; + } + /* This should not happen */ + else if (verbose) { + printf("Not parseable: %s", input_buffer); } }