1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| TEST-FRSP:~/Documents/c # cat lsdates.c
#define _POSIX_C_SOURCE 1
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*
* ce minisource permet juste de voir les vrais dates de
* modification du fichier
* d'acces au fichier
* modification des parametres du fichiers
*
* l'auteur declare ce source libre de droit
*/
static void printdate(char*, time_t);
//fonction de formattage du format de la date et de l'heure pour
//un affichage clair des lignes de texte
//le programme doit recevoir en parametre le nom du fichier a analyser ou des fichiers a analyser
int main(int argc, char *argv[])
{
int i ; // compteur d'arguments autrement dit de fichier a analyser
// sera aussi utiliser pour identifier sur quel fichier la boucle travaille
// a l'instant t
for(i=1;i<argc;i++) //pour tout argument a la ligne de commande .....
{
struct stat statbuf;
if(stat(argv[i], &statbuf) == -1 )
{
//genere une erreur proprement
perror(argv[i]);
continue; // mais passe directement a l'argument suivant
// evidament car inutile de tanter de traiter un
// argument invalide ce serai une perte de temps
}
printf("\n %s\n", argv[i]);
printdate("<= DERNIER ACCES" , statbuf.st_atime);
printdate("<= DERNIERE MODIFICATION" , statbuf.st_mtime);
printdate("<= DERNIERE MODIF DE CARACTERISTIQUE" , statbuf.st_ctime);
printf("\n");
}
return EXIT_SUCCESS;
}
static void printdate(char *s, time_t d)
{
struct tm *tm = localtime(&d);
// le reste n'est que pure mise en forme
printf("\n%02d/%02d/%02d-%02d:%02d:%02d - %s",
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec, s);
} |
Partager