[cpp]#include
#include
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("zoneinc: opérande fichier manquant\n");
return -3;
}
char *file = argv[1];
//char *file = malloc(sizeof(char) * strlen(argv[1]));
//strcpy(file, argv[1]);
printf("DEBUG: fichier à lire : %s\n", file);
FILE *zone_in;
FILE *zone_out;
zone_in = fopen (file, "r"); // fichier de zone
zone_out = fopen ("tmp", "w"); // fichier de zone temporaire
if (zone_in == NULL) return -1; // fichier de zone
if (zone_out == NULL) { // fichier de zone temporaire
fclose(zone_in);
return -2;
}
char head[100] = {0};
fscanf(zone_in, "%[0-9a-zA-Z\n\t .$-](", head); // recuperation de la tete du fichier de zone
int date[9] = {0};
fscanf(zone_in, "%8d", date); // recuperation de la date de la derniere maj
int num[3] = {0};
fscanf(zone_in, "%d", num); // recuperation du numero de version de la derniere maj
// recupere la date courante
char now[11] = {0};
time_t t = time(NULL);
struct tm *tm = localtime(&t);
strftime(now, sizeof(now)-1, "%Y%m%d", tm);
fprintf(zone_out, "%s", head); // restitution de la tete du fichier de zone
// ecriture du nouveau serial
if (*date != atoi(now)) fprintf(zone_out, "(\n\t\t%d00", atoi(now));
else {
if (*num<9) fprintf(zone_out, "(\n\t\t%d0%d", *date, *num+1);
else fprintf(zone_out, "(\n\t\t%d%d", *date, *num+1);
}
// restitution du reste du fichier de zone
char ligne[256];
while(fgets(ligne, sizeof ligne, zone_in)) fputs(ligne, zone_out);
fclose(zone_in);
fclose(zone_out);
rename("tmp", file);
return 0;
}[/cpp]