#include #include #include #include "projet.h" #include "projetx.m" /* #Sp‚cification: fusion / ‚dition / log op‚rateur Un fichier fusion.log est cr‚‚ durant l'int‚gration dans la racine des projets. Ce fichier contient un log des transactions r‚aliser durant l'‚dition d'une fusion. A chaque fois qu'on opŠre sur un fichier (s‚lection d'une r‚vision effacage, etc...), une ligne est enregistr‚e. Ce fichier n'est pas cumulatif. Il ne montre que ce qui a ‚t‚ fait durant une r‚vision. Pour l'instant, le fichier va dans la racine. Il est donc archiv‚. Voici les usages pr‚vue: # -Bilan rapide de ce qui a ‚t‚ int‚gr‚. Autant pour l'int‚grateur que pour ceux qui se demande si leur contribution ont bien ‚t‚ int‚gr‚e. -L'op‚rateur pourra y ajouter des notes dans le style, je n'ai pas int‚grer ca parce que... # */ # static char *titre = NULL; /* Ajoute une ligne (ou plusieurs) dans le fichier fusion.log de la racine */ void fuslog_add ( const USERINFO *user, const char *ctl, ...) { char path[MAXSIZ_PATH]; path_make (user->getusrpath(),"fusion.log",path); FILE *fout = fopen_err (path,"a",0); if (fout != NULL){ if (titre != NULL){ fprintf (fout,"%s\n=====================\n",titre); free (titre); titre = NULL; } va_list list; va_start (list,ctl); vfprintf (fout,ctl,list); va_end (list); fclose (fout); } } /* Enregistre un titre qui sera plac‚ dans le log dŠs qu'un message est g‚n‚r‚. Le titre ne sera plac‚ qu'une seule fois. */ void fuslog_settitre (const char *str) { free (titre); titre = strdup_err (str); } /* Edition (via un ‚diteur de texte) du fichier fusion.log */ void fuslog_edit (const USERINFO *user) { /* #Sp‚cification: fusion / ‚dition / log op‚rateur En tout temps, lors de l'‚dition de l'int‚gration, l'op‚rateur peut commander l'‚dition du fichier fusion.log de la racine. Cela d‚clenche simplement un ‚diteur de texte sur ce fichier. Le fichier fusion.log n'a pas de format pr‚cis, donc l'op‚rateur peut y ‚crire tout ce qui lui passe par la tˆte. */ DIALOG dia; char path[MAXSIZ_PATH]; path_make (user->getusrpath(),"fusion.log",path); #ifdef MISSING page_setupptexte (&page,nblin,nbcol,1); FILE_TEXTE file (path); page_loadptexte (&page,0,&file); #endif int nof = 0; if (dia.edit (path,"",help_nil,nof)==MENU_ACCEPT){ #ifdef MISSING file.save(); #endif } } /* Enregistre un bouton controllant l'‚dition du fichier fusion.log de la racine. Le bouton ajout‚ est de type bouton_setupfct(). Retourne -1 si erreur. */ void fuslog_setbutton ( DIALOG &dia, const USERINFO *) // Cet objet sera m‚moris‚ et doit // exister tout au long du dialogue. { dia.setbutinfo (MENU_USR1,MSG_U(B_EDITLOG,"Editlog"),MSG_R(B_EDITLOG)); }