/* permet de concatener des fichier *.nar et d'inserer un path */ #include #include #include #include #include #include #include #include "proto.m" #define EXPNAR_VERSION 1 #define EXPNAR_RELEASE 2 void help_link() { dir_getlist ("","",1,NULL,0); } static void near usage (void) { fprintf (stderr,MSG_U(I_EXPNARUSAGE, "expnar [-s] fichier_destination fichier_nar [ fichier_nar ]\n" "expnar @fichier_arguments\n" "\n" " Concatène plusieurs fichiers nar dans un seul\n" " en insèrant le nom du fichier dans chacune des\n" " définition qu'il fournit.\n" "\n" " Ne traite pas deux arguments possédant le même\n" " nom de base.\n" " Ex: expnar resultat xx/ff.nar yy/ff.nar\n" " Seul le premier ff.nar sera traité.\n" "\n" " -s : Pas de messages si un fichier_nar est manquant.\n")); } /* insert une chaine dans une autre et recalcule le byte de dimension */ static void expnar_insert (char *str, const char *insert) { char *x = strstr (str,"! "); if (x == NULL){ fprintf (stderr,MSG_B(E_IVLDFORM ,"Format invalide:\n%s\n","Invalid format:\n%s\n"),str); }else{ char tmp[200]; str[0] += strlen(insert); x += 2; strcpy (tmp,x); x = stpcpy (x,insert); strcpy (x,tmp); } } /* Copie un fichier nar dans fout, en insèrant son nom dans chaque ligne Retourne -1 si erreur. */ static int near expnar_copy (const char *fname, FILE *fout, int tolerant) { FILE *fin = vfopen_err (fname,"r",tolerant ? 0 : 1); int ret = -1; if (fin != NULL){ char buf[200]; char base[MAXSIZ_NAME]; printf ("-> %s\n",fname); file_baseext (fname,base,NULL); strcat (base,"/"); while (fgets(buf,sizeof(buf)-1,fin)!=NULL){ strip_end (buf); expnar_insert (buf,base); #if defined(MSDOS) || defined(OS2) fprintf (fout,"%s\n",buf); #else fprintf (fout,"%s\r\n",buf); #endif } fclose (fin); ret = 0; } return ret; } /* Fusionne plusieurs fichiers nar dans un seul */ static void near expnar_merge ( const char *dest, const char *src[], int nbsrc, int tolerant) { int i; FILE *fout = fopen_err (dest,"w",1); char *deja[100]; /* Retient les fichiers déjà traités */ assert (nbsrc<100); for (i=0; i