*Serval
Elite
toujours la question niveau des "programmes"
sinon, le timestamp affiché est -1995840000 quand je passe en second argu 060904 (donc hier)...
Du coup tous les fichiers sont affichés. Vous voyez mon erreur (surement dans la main)? (code en fin de post)
Encore merci pour ton aide Tifox !
sinon, le timestamp affiché est -1995840000 quand je passe en second argu 060904 (donc hier)...
Du coup tous les fichiers sont affichés. Vous voyez mon erreur (surement dans la main)? (code en fin de post)
Encore merci pour ton aide Tifox !
Code:
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
void myscandir(char *source,time_t *date)
{
// Ouverture dossier
DIR *folder = opendir(source);
if (folder != NULL)
{
struct dirent *file;
// Listing des fichiers
while (file = readdir(folder))
{
if( strncmp(file->d_name, ".", 1) != 0 ) // passer les "fichiers" . et ..
{
// Récupérer les information sur un fichier
struct stat fileInfo;
char filePath[(strlen(source) + strlen(file->d_name) + 1)];
strcpy(filePath, source);
strcpy(filePath + strlen(source), "/");
strcpy(filePath + strlen(source) + 1, file->d_name);
stat(filePath, &fileInfo);
if( S_ISDIR (fileInfo.st_mode)) // si c'est un dir ...
{
myscandir(filePath, date); // ...on rappelle la fonction récursivement
}
else
{
if(fileInfo.st_mtime > *date) // si la date de modif du fichier est plus récente que la date entrée
{
printf("%s \n", filePath);
printf("%d \n", *date); // TEST A DELETER
}
}
}
}
}
}
int main(int argv, char** argc)
{
if(argv != 3) // Il faut 2 arguments
{
return -1;
}
struct tm date;
time_t timedate;
char tmp[2];
date.tm_sec = 0;
date.tm_min = 0;
date.tm_hour = 0;
strncpy(tmp, argc[2], 2);
date.tm_year = atoi(tmp);
strncpy(tmp, argc[2]+2, 2);
date.tm_mon = atoi(tmp);
strncpy(tmp, argc[2]+4, 2);
date.tm_mday = atoi(tmp);
timedate = mktime ( & date ); // timestamp de la date passée en second arg
myscandir(argc[1],&timedate); // on appelle myscandir
return 0;
}