// Header File // Created 24/10/2003; 19:41:42 //Gestions des fichiers externe /*---------------------------------------------------------- Créer un nom du tios à partir d'une chaîne de caractères en C Retourne le pointeur de fin du nom du fichier -----------------------------------------------------------*/ char* GenerateTIOSName(char* cname,char* buffer) { buffer[0] = 0; return (strcpy(buffer + 1, cname) + strlen(cname)); } /*----------------------------------------------------- Renvoie un SYM_ENTRY à partir d'une chaîne de caractère -------------------------------------------------------*/ SYM_ENTRY* GetSymByName(char* name) { char buf[50]; HSym hs; if (*name) hs = SymFind(GenerateTIOSName(name,buf)); /* cname */ else hs = SymFind(name); /* tiosname */ if (!hs.folder) return NULL; else return DerefSym(hs); } //Trouve un fichier et renvoie son chemin complet char *FindFile (char file[8]) { SYM_ENTRY *entry_folder; SYM_ENTRY *entry_file; unsigned char **lst_folder; unsigned char nbr_folder=0; static unsigned char tempfile[17]; char buffer[50]; //Alloue la liste des dossier (ici on prend au max 50 dossiers) lst_folder=malloc(sizeof(char)*8*50); //Parcours de la VAT entry_folder=SymFindFirst(NULL,FO_SKIP_TEMPS); while (entry_folder != NULL) { lst_folder[nbr_folder++]=entry_folder->name; entry_folder=SymFindNext(); } for (int i=0;iname)) { memset(tempfile,0,17); memcpy(tempfile,lst_folder[i],strlen(lst_folder[i])); strcat(tempfile,"\\"); strcat(tempfile,entry_file->name); free(lst_folder); return tempfile; } entry_file=SymFindNext(); } } //On libére les listes temporaire free(lst_folder); return NULL; }