#include #include #include #include char * stripspace(char * str) { if(str) { size_t lg = strlen(str); if (lg) { char * p = str + lg -1, * q = str; while(p >= str && isspace( (unsigned)*p) ) { --p; } *(p+1) = '\0'; while(isspace( (unsigned)*q) && q2) { fprintf(stderr,"Usage : ./prepa [fichier.c]\n"); fprintf(stderr,"[fichier.c] : source C optionnel (stdin sinon)\n"); exit(EXIT_FAILURE); } fp = fopen(argv[1], "r"); if (!fp) { fprintf(stderr,"prepa : impossible d'ouvrir %s\n", argv[1]); exit(EXIT_FAILURE); } while (fgets(ligne,sizeof(ligne),fp)) { ++nl; ligne[strlen(ligne)-1] = '\0'; if (nl>=1 && nl<=3) { p = strchr(ligne, ':'); if (p) { strcpy(data, p+1); } else { fprintf(stderr,"prepa : erreur mauvais format\n"); exit(EXIT_FAILURE); } } stripspace(data); lg = strlen(data); if (lg>=2 && data[lg-2] == '*' && data[lg-1] == '/') { data[lg-2] = '\0'; stripspace(data); } if (nl == 1) { strcpy(infoFichier.auteur, data); } else if(nl == 2) { strcpy(infoFichier.plateforme, data); } else if(nl == 3) { p = strchr(data, '/'); if (p) { strncpy(infoFichier.compilateur, data, p - data); infoFichier.compilateur[p-data] = '\0'; stripspace(infoFichier.compilateur); strcpy(infoFichier.version, p + 1); stripspace(infoFichier.version); } else { fprintf(stderr,"prepa : erreur mauvais format, version compilo non trouvee\n"); exit(EXIT_FAILURE); } } } printf("%s|%s|%s|%s|%d\n", infoFichier.auteur, infoFichier.plateforme, infoFichier.compilateur, infoFichier.version, nl); fclose(fp); return EXIT_SUCCESS; }