#include #include #include #include #include #include #include "projet.h" #include "projetx.m" static char *tbprog[200]; /* Lit le fichier de correspondance nom-programmeur, numero */ static void near prog_readnum () { /* #Sp‚cification: configuration / num‚ro des programmeurs Les programmeurs clients de l'archive ont tous un num‚ro d'identification. Le fichier prog.num contient la liste des programmeurs avec leur num‚ro. C'est un fichier ASCII dont le format est: programmeur num‚ro ... programmeur num‚ro Ce fichier est localis‚ dans le r‚pertoire config de l'application. (G‚n‚ralement n:\projet\config). Le num‚ro doit ˆtre sp‚cifi‚ pour chaque programmeur. Ce num‚ro est allou‚ … vie. En principe, on ne devrait jamais ‚limin‚ de programmeur de ce fichier. On peut optionnellement plac‚ un commentaire … la suite du num‚ro dans le fichier. G‚n‚ralement, on placera le nom v‚ritable du programmeur. Le programme ne se pr‚occupe pas de ce qui suit le num‚ro. */ static char is_init = 0; if (!is_init){ char path[MAXSIZ_PATH]; configPath.getval (path,sizeof(path)); path_make (path,"prog.num",path); FILE *fin = fopen_err (path,"r",0); for (unsigned i=0; i= 0 && num < (int)NB_ELM(tbprog)){ ret = tbprog[num]; if (ret == NULL) ret = " "; }else{ bugapp_printf ("ADM/PROJET","prog_num2str num == %d ???\n",num); } return ret; } /* Obtient le nom (login) de l'usager. Retourne NULL si trouve pas. */ const char *prog_getid ( bool quit) // Termine si trouve pas ? { /* #Sp‚cification: usager / identification On obtient le nom (login) de l'usager via la variable d'environnement PROJETX_ID. Si elle n'est pas d‚finie, on utilise la variable USER. On aurait pue utiliser des mecanismes plus sophistique disponible avec les systemes d'exploitation (Novell, Unix). On l'a pas fait parce que ce n'est pas universellement disponible. Par exemple sur une machine DOS isolee n'a pas acces a ces fonctionnalit‚ (login). Cela permet aussi de changer facilement d'identite pour r‚aliser certaines acrobaties avec projetx. Le USER provient de UNIX. */ char *prog = getenv("PROJETX_ID"); if (prog == NULL) prog = getenv ("USER"); static char tmp[100]; if (prog == NULL){ uid_t id = getuid(); struct passwd *p = getpwuid (id); if (p != NULL){ strcpy (tmp,p->pw_name); prog = tmp; } } if (prog == NULL){ xconf_error (MSG_U(E_USERID ,"Incapable de vous identifier\n" "La variable PROJETX_ID ou USER doit être definie")); if (quit) exit (-1); } return prog; }