#include #include #include #include #include #include #include #include #include "tool.h" /* Retourne la date d'un fichier encode dans un long en format DOS Retourne 0l si erreur */ export unsigned long file_dosdate (const char *filnam) { unsigned long dattim; long len; if (file_infodos(filnam,&dattim,&len)==-1){ dattim = 0l; } return (dattim); } /* change la date d'un fichier pour la date courante Retourne -1 si erreur, 0 si ok Si newp != 0 et fichier existe pas, essaie de le creer */ export int file_touch (const char *filnam, int newp) { int fin = open (filnam,O_RDWR); if (fin != -1){ /* le fichier existe, lit un byte et reecrie */ char carac; read (fin,&carac,1); lseek (fin,0l,SEEK_SET); write (fin,&carac,1); fin = close (fin); }else if (newp){ /* creation du fichier */ FILE *fout = fopen (filnam,"w"); if (fout != NULL){ fclose (fout); fin = 0; } } return fin; } /* Revise la date de modification d'un fichier retourne -1 si erreur La date a generalement ete obtenue par file_date(). */ export int file_setdate (const char *fname, long date) { struct utimbuf timbuf; timbuf.modtime = date; timbuf.actime = date; return utime (fname,&timbuf); } #ifdef TEST static void near tst (char *str) { printf ("%s -> %lu\n",str,file_date(str)); } int main(int, char *argv[]) { tst (""); tst ("file.c"); tst ("file.o"); tst ("file2.c"); tst ("file2.obt"); return 0; } #endif