/* Sp‚cification: programme / pdiff pdiff permet d'appliquer la commande diff entre deux fichiers quelquoncques ou deux versions d'une mˆme fichier. Il localise les fichiers soit localement ou dans l'archive (/kit/ombre) et ex‚cute la commande diff avec les arguments corrig‚s. Comparaison entre la version locale et le r‚f‚rence: pdiff [options de diff] fichier Comparaison entre deux fichiers: pdiff [options de diff] fichier1 fichier2 */ #include #include #include #include #include #include "projet.h" static void near usage() { fprintf (stderr, "pdiff [ --diffopt ... ] fichier1 fichier2\n" "pdiff [ --diffopt ... ] fichier\n" "\n" "pdiff [ --diffopt ... ] [ --filecmd path ] [ --dir subdir ] --version revision1 revision2\n" ); } /* D‚termine le path r‚el d'un fichier dans l'archive */ static void near pdiff_rpath ( const char *fname, char *rpath, USERINFO *user) { int ret = -1; MAKEFILE mkf ("makefile.dat",1,"",user); if (mkf.isok()){ MAKEFILE_FILE *file = mkf.locate(fname); if (file != NULL){ file->getombpath (user,rpath); ret = 0; } } if (ret == -1) exit (-1); } static void pdiff_log (const char *ctl, ...) { va_list list; va_start (list,ctl); vfprintf (stderr,ctl,list); va_end (list); } int main (int argc, char *argv[]) { int ret = -1; etc_loadmsg(); if (argc == 1){ usage(); }else{ SSTRING cmd ("diff"); // Recompose la ligne de commande // Copie les options. bool vmode = false; FILE *fcmd = NULL; SSTRINGS subdirs; int i; for (i=1; i