#include #include "projet.h" #include "projetx.m" #include #include static void view_show (const char *title, const char *intro, SSTRING &txt) { DIALOG dia; dia.newf_textarea (NULL,txt,80,25); int nof = 0; dia.edit (title,intro,help_nil,nof,MENUBUT_CANCEL); } static void view_edit (const char *title, const char *fname) { SSTRING txt; (fname,false); glocal.txt.append (line); DIALOG dia; dia.newf_textarea (NULL,glocal.txt,80,25); int nof = 0; while (1){ MENU_STATUS code = dia.edit (title,"",help_nil,nof); if (code == MENU_CANCEL || code == MENU_ESCAPE){ break; }else{ (fname,false); fputs (glocal.txt.get(),fout); break; } } } /* Présente les fichiers modifiés et permet de voir les diffs */ void view_changes ( USERINFO *user, SSTRINGS &tbold, SSTRINGS &tbnew, SSTRINGS &tbdel) { USERINFO *user; SSTRINGS *tbdel,*tbnew,*tbold; SSTRINGS tb; glocal.user = user; glocal.tbdel = &tbdel; glocal.tbnew = &tbnew; glocal.tbold = &tbold; glocal.tb.neverdelete(); glocal.tb.append (tbold); glocal.tb.append (tbnew); glocal.tb.append (tbdel); glocal.tb.sort(); (MSG_U(T_CHANGEMENTS,"Fichiers modifiés"),"",help_nil); newf_head (MSG_U(H_CHANGEMENTS,"Fichier\tStatut")); for (int i=0; iget(); const char *statut = ""; if (glocal.tbdel->lookup(ss)!=-1){ statut = MSG_U(I_EFFACE,"Effacé"); }else if (glocal.tbnew->lookup(ss)!=-1){ statut = MSG_U(I_NOUVEAU,"Nouveau"); } new_menuitem(s,statut); } SSTRING txt; SSTRING *ss = glocal.tb.getitem(no); const char *fname = ss->get(); char projet[MAXSIZ_PATH],name[MAXSIZ_NAME],absfname[MAXSIZ_PATH]; path_splitlex (fname,projet,name); glocal.user->makusrpath(projet,absfname); path_make (absfname,name,absfname); if (glocal.tbold->lookup(ss)!=-1){ // C'est un fichier existant qui a MAKEFILE mkf (NULL,1,projet,glocal.user); MAKEFILE_FILE *file = mkf.locate(name); if (file != NULL){ char rpath[MAXSIZ_PATH]; file->getombpath (glocal.user,rpath); SSTRING tmp; tmp.setfromf ("/usr/bin/diff -c %s %s",rpath,absfname); (tmp.get(),15); glocal.txt.appendf ("%s\n",line); return 0; fprintf (stderr,"diff err: %s\n",line); view_show (fname,"",glocal.txt); } }else if (glocal.tbnew->lookup(ss)!=-1){ view_edit (fname,absfname); } }