#include #include #include #include #include "projet.h" #include "projetx.m" /* Copie les fichiers d'une projet et met … jour version.dat de ce projet */ static int near import_copy( const char *projet, const char *revstr, const REVISION *rev, USERINFO *user) { int ret = 0; if (!file_exist("version.dat")){ xconf_error (MSG_U(E_NOVERSIONDAT ,"version.dat manquant pour importation\n" "du sous-projet %s %s") ,revstr,projet); ret = -1; }else{ char *tb[400]; int nb = dir_getlistp (WILD_ALLFILE,0,tb,400); for (int i=0; ilen); char *projet = prjpath + len; SAVEPATH save; path_pushdir (user,prjpath,&save); ret = import_copy (projet,dirname,&rev,user); path_popdir (&save); } { SAVEPATH save; path_pushdir (user,livrepath,&save); ret = import_copy ("",dirname,&rev,user); path_popdir (&save); } tbstr_free (tbdir,nb); char vpath[MAXSIZ_PATH]; path_make (dirpath,"version.dat",vpath); if (file_exist (vpath)){ /* #Sp‚cification: admin / import / site version.dat Si un r‚pertoire /kit/livre ou /kit/sync/site contient un version.dat, il sera mis a jour avec le version.dat principal de la r‚vision import‚. C'est comme ca qu'on sait qu'on doit pas r‚export‚ une r‚vision … un site qui nous l'a envoye. Le fichier version.dat est optionnel. */ VERSION_DAT ver(vpath); char rpath[MAXSIZ_PATH]; path_make (livrepath,"version.dat",rpath); ver.merge (rpath); ver.save(user); } return ret; } /* Localise toutes les r‚visions dans /kit/livre et /kit/sync Retourne le nombre de r‚visions plac‚ dans tbdir (via strdup). */ static int near import_getrevdir ( USERINFO *user, char *tbdir[], // Contiendra les noms de sous-r‚pertoires char *tbpath[], // Contiendra les paths (sans le nom) correspondant int maxdir) { // On cherche d'abord dans /kit/livre const char *kitlivre = user->getlivre(); int ret = projet_getrevdir(kitlivre,tbdir,maxdir); for (int i=0; igetsyncpath(),WILD_ALLFILE,0,tbs,100); for (int i=0; i tb_is_sel bool au_moins_un = false; { VERSION_DAT version (user); for (int i=0; i