| #include "test.h" | |
| #include <sys/types.h> | |
| #include <sys/stat.h> | |
| #include <dirent.h> | |
| int main(int argc, char * argv[]) | |
| { | |
| char b[100]; | |
| char fexe[100]; | |
| char fpass[100]; | |
| char ffail[100]; | |
| char fres[100]; | |
| char fnob[100]; | |
| char cmd[100]; | |
| char *e; | |
| struct stat st; | |
| DIR *dir; | |
| struct dirent *ent; | |
| if (argc!=2) { | |
| printf("usage: runall <dir>\n"); | |
| return 0; //EXIT_FAILURE; | |
| } | |
| dir = opendir (argv[1]); | |
| if (dir != NULL) { | |
| while ((ent = readdir (dir)) != NULL) { | |
| strcpy(b, ent->d_name); | |
| if (strstr(b,"runall.c")) { | |
| /* skip myself */ | |
| continue; | |
| } | |
| e = strchr(b,'.'); | |
| if (e) { | |
| *e ++ = '\0'; | |
| if (strcmp(e,"c")==0) { | |
| sprintf(fexe,"%s.exe",b); | |
| sprintf(fpass,"%s.pass",b); | |
| sprintf(ffail,"%s.fail",b); | |
| sprintf(fres,"%s.res",b); | |
| sprintf(fnob,"%s.x",b); | |
| if (stat(fexe,&st)==0) { | |
| if ( (stat(fpass,&st)!=0) && (stat(ffail,&st)!=0)) { | |
| sprintf(cmd,"%s 2> %s",fexe,fres); | |
| if (system(cmd)) { | |
| rename(fres,ffail); | |
| } else { | |
| rename(fres,fpass); | |
| } | |
| } | |
| } else { | |
| sprintf(cmd,"touch %s",fnob); | |
| system(cmd); | |
| } | |
| } | |
| } | |
| } | |
| closedir (dir); | |
| } else { | |
| /* could not open directory */ | |
| perror (""); | |
| return 0; //EXIT_FAILURE; | |
| } | |
| return 0; | |
| } |