Utilisateur:Goelette Cardabela/mkd-getwikifiles

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
← Retour aux fichiers mkdwiki en développement
Nuvola-inspired File Icons for MediaWiki-fileicon-ps.png

Une version imprimable de mkd-getwikifiles est disponible.Version test du module mkd-getwikifiles.


version.h[modifier | modifier le wikicode]

Entête standard[modifier | modifier le wikicode]

Voir : Utilisateur:Goelette_Cardabela/mkdcpp#

Entête pour pour compiler avec minGW et linux.[modifier | modifier le wikicode]

133 // define VERSION line 173
134 
135 //#define UNIX 		/*O UNIX version */ /* Delete this line for PC version */
136 //#define GTKMM		/*O Version fenêtrée avec gtkmm pour mkdcppw uniquement */
137 //#define GETTEXT   //O Used only with gettext
138 
139 #ifndef UNIX            /*H*/
140 #define PC              /*O version de compilation PC   */  /*H*/
141 //#define PC_ONLY         /*H find_ ne reconnaît pas: .s .f .p .sh .csh  */
142 #define NL "\r\n"       /*H*/
143 //#define VC10            /*O Microsoft Visual C 10.- */
144 #define MSDEV41         /*O Microsoft 2004 */
145 #define MinGW           /*O Mingw environment for Windows */
146 #endif                  /*H*/
147 //H
148 #ifdef UNIX             /*H*/
149 //#define UNIX_ONLY       /*H find_ ne reconnaît pas: .BAS .PAS .FOR ... */
150 #endif                  /*H*/
151 //H
152 
153 //H #D **************************************************************************
154 //H *** #Define OPTIONS DE COMPILATION:  options par défaut, redéfinissables: ***
155  //H(#D pour extraction des options de compilation ligne avec l'option CD3='#') *
156 //H****************** #Define 'l' (ligne) commence par #define en 1ère colonne :*
157 #define CD1 '%'   //H #Define Option CD1 en 1ère colonne  prend fin avec NL     * 
158 #define CD2 '<'   //H #Define Option CD2 en 1ère colonne  prend fin avec NL     *
159 #define CD3 '!'   //H #Define Option CD3 dans la ligne    prend fin avec NL     *  
160                   //H #Define Option '!' commentaire Fortran 90 et ultérieurs   * 
161                   //H #Define Option '%' commentaire postcript                  * 
162                   //H #Define Option '#' commentaire shell ou pour Makefile     *  
163                   //H voir option S ( le commentaire se termine avec new_line ) *
164                   //H #Define Option '\'' commentaires Basic                    *
165                   //H #Define Option ';'  commentaires assembleur               * 
166 //H ************** #Define Option 'p' (dans la page) #define en 1ère colonne : **
167 #define CD4 '\"'  //H #Define Option CD4 = "  debut de commentaire              *
168 #define CD5 '\"'  //H #Define Option CD5 = "  fin de commentaire                *
169                   //H #Define ***************************************************
170 #define FULL_LINE //H #Define Option de compil. copier toute la ligne           *
171 //H #D **************************************************************************
172 //H
173 #define VERSION "130530"	/*H*/
174 //H
175 #define MAX     85		/*H longueur des buffers des path source et doc */
176 #define STX     0x2		/*H Start Text */
177 #include <stdio.h>		/*H*/
178 //H
179 #ifdef PC            /*H*/
180 // #include <conio.h>   /*H*/ // inconnu dans MinGW
181 #include <process.h> /*H*/
182 #include <io.h>      /*H*/
183 #endif               /*H*/
184 #ifdef VC10          /*H Microsoft Visual C 10.- */
185 	#define putch putchar // _putch    /*H ISO C++ */
186 	#define getch getchar // _getch    /*H ISO C++ */
187 	#define access _access  /*H ISO C++ */
188 #endif                      /*H*/
189 //H
190 #ifdef MSDEV41           /*H Valider aussi pour minGW et linux. */
191 	//#define STD_C       /*H SVr4, 4.3BSD, C89, C99.*/
192 	#include <string.h>  /*H*/
193 #endif                   /*H*/
194 //H
195 #ifdef  MinGW            //H
196 	#define exit return  //H
197 	#define bool int     //H
198 	//#define STD_C      /*H SVr4, 4.3BSD, C89, C99.*/
199 	#define getch() getchar() //H defined in mkd.c
200 	#define putch putchar /*H*/
201 	#include <strings.h> //H
202 #endif                   //H
203 //H
204 #ifdef UNIX              /*H*/
205 	#define NL "\n"      /*H*/
206 	#define exit return  //H
207 	#define bool int     //H
208 	//#define STD_C      /*H SVr4, 4.3BSD, C89, C99.*/
209 	//#define getch() getchar() //H defined in mkd.c
210 	#define putch putchar /*H*/
211 #include <signal.h>       /*H*/
212 #include <sys/file.h>     /*H*/
213 #include <string.h>       /*H*/
214 #endif                    /*H*/

getwikifiles.h[modifier | modifier le wikicode]

Entête de la fonction getwikifiles().

//	getwikifiles.c :
	extern int getwikifiles_ (FILE *pfdoc, FILE *pnfile);

getwikifiles.c[modifier | modifier le wikicode]

Code C, de traitement des fichiers issus de pages wiki.

  1 /*H  
  2 	// getwikifiles.h
  3 	extern int getwikifiles_ (FILE *pfdoc, FILE *pnfile);
  4 */
  5 
  6 #include "version.h"
  7 #include "getwikifiles.h"
  8 
  9 	int getwikifiles_ (FILE* pfdoc, FILE* pnfile)
 10 	{ /*S getwikifiles_ */
 11 	//www rappels : les options booleennes à définir dans main() ou winmain()
 12 		extern unsigned char n,s,t;  			
 13 		extern char codes[];
 14 		unsigned int i,tab;
 15 		unsigned num = 0;
 16 		long ll,nl;
 17 		int c1 = STX; /* STX : Start Text */
 18 		int c2 = STX;
 19 		int c3 = STX;
 20 /*O		tant que l'on n'arrive pas à la fin du fichier source */
 21         while ( c1 != EOF && c2 != EOF && c3 != EOF )
 22         { /*S tq !EOF */
 23 			/*bool*/ char ligne = 0;	 /*www bool else : char for MSDEV */
 24 /*O			si on est en début de texte faire c1=LF */
 25 			if (c1==STX) c1='\n';
 26 /*O			sinon prendre pour c1 le caractère pointé */
 27 			else c1=getc(pnfile);
 28 /*O			si le caractère est 'NL' repérer la position qui suit NL, dans nl */
 29 			if(c1=='\n')
 30 			{ /*S*/
 31 				nl=ftell(pnfile);
 32 				tab=0;
 33 				num++;
 34 			} /*S*/
 35 			else
 36 			{ /*S !NL */
 37 /*O				si le char est la tabulation '\t' incrementer tab */
 38 				if (c1=='\t')tab++;
 39 /*O				sinon si le char est '[' */
 40 				else if(c1=='[')
 41 /*O				alors: */
 42 				{ /*S char = '[' */
 43 					c2=getc(pnfile);
 44 					c3=getc(pnfile);
 45 /*O					si suivi par c2 = '[' et si codes[0]=0 ou si suivi par char code utilisateur */
 46 					if( (c2=='[') && (!codes[0]||
 47 						c3 == codes[0] ||
 48 						c3 == codes[1] ||
 49 						c3 == codes[2] ||
 50 						c3 == codes[3] ||
 51 						c3 == codes[4]
 52 						)
 53 					)
 54 /*O					alors: */
 55 					{ /*S traiter le texte */
 56 /*O						si c2 = '[' positionner le booléen ligne à vrai (=1) */
 57 						if(c2=='[') ligne=1; // ligne=1; pour recopier jusqu'en fin de ligne.
 58 /*O						repérer la position du repère '[' */
 59 						//Pw Apparition de codes dans les lignes si les codes[] sont à 0
 60 						//if(!codes[0])ungetc(c3,pnfile); //Pw dépend de la déclaration de codes[]
 61 						ungetc(c3,pnfile); //Pw dépend de la déclaration de codes[]
 62 						ll=ftell(pnfile);
 63 /*O						si l'option n est validée insérer le numéro de ligne */
 64 						if(n)
 65 						{ /*S*/
 66 							fprintf( pfdoc, "%5d ", num );
 67 							if(s) printf( "%5d ", num );   // s = copy to screen
 68 						} /*S*/
 69 /*O						si l'option t n'est pas validée (t=text only)*/
 70 						if(!t)
 71 						{ /*S!t*/
 72 /*O							se positionner en dédut de ligne */
 73 							fseek(pnfile,nl,0);
 74 							/*w ou: fseek(pnfile,(nl-ftell(pnfile)),1); */
 75 /*O							copier la ligne jusqu'au commentaire, dans le fichier doc */
 76 							for(i=(int)(ll-nl);i>0;i--)
 77 							{ /*S*/
 78 								c1=getc(pnfile);
 79 								putc(c1,pfdoc);
 80 								if(s)putch(c1);
 81 							} /*S*/
 82 						} /*S!t*/
 83 /*O						sinon: (option t) */
 84 						else
 85 						{ /*St*/
 86 /*O							copier des tab autant qu'il y en a dans le source */
 87 							for(i=0;i<tab;i++)
 88 							{ /*S*/
 89 								//putc('\t',pfdoc);
 90 								//if(s)putch('\t');
 91 							} /*S*/
 92 /*O							copier des blancs jusqu'à la position commentaire */
 93 							for(i=(int)(ll-nl-tab);i>0;i--)	
 94 							{ /*S*/
 95 								//putc(' ',pfdoc);
 96 								//if(s)putch(' ');
 97 							} /*S*/
 98 							fputs("https://fr.wikibooks.org/wiki/",pfdoc);
 99 						} /*St*/
100 /*O						puis si booléen ligne est vrai (=1) */
101 						if(ligne)
102 /*O						alors : copier le commentaire jusqu'à '|' ou fin de ligne ou End Of File (EOF) */
103 						{ /*Sligne*/
104 							while ( (c1=getc(pnfile)) != '|' && c1 != '\n' && c1 !=EOF)
105 							{ /*S copier commentaire */
106 								putc(c1,pfdoc);
107 								if(s)putch(c1);
108 							} /*S copier commentaire */
109 							ungetc(c1,pnfile); /* pour la recopie fin de ligne */
110 						} /*Sligne*/
111 /*O						sinon : tq ne rencontre pas ] suivi de ], copier le texte */
112 						else
113 						{ /*Selse*/
114 							while ( !(c1==']' && c2==']') )
115 							{ /*Sw*/
116 								if( (c1=getc(pnfile)) != ']')
117 								{ /*S*/
118 /*www								if(c1=='\n') fprintf(pfdoc, "%s", NL );*/ /*P CR/LF sous DOS */
119 /*www								else */
120 									if (c1!='\n') putc(c1,pfdoc);
121 									if(s) putch(c1);
122 /*O									//w si option n et char=NL insérer le numéro de la ligne qui suit NL */
123 									if( n && c1=='\n' )
124 									{ /*S*/
125 										num++;
126 										fprintf( pfdoc,"%5d ", num );
127 										if(s) printf("%5d ", num );
128 									} /*S*/
129 								} /*S*/
130 								else /*P (c1=']' vérifier c2) */
131 								{ /*S*/
132 									if((c2=getc(pnfile))==']')
133 									{ /*S*/
134 										ungetc(c2,pnfile);
135 										ungetc(c1,pnfile); /* pour la recopie fin de ligne */
136 									} /*S*/
137 									else /*P c1 = toujours '*' */
138 									{ /*S fausse alerte */
139 										ungetc(c2,pnfile);
140 										putc(c1,pfdoc);
141 										if(s)putch(c1);
142 									} /*S fausse alerte */
143 								} /*S*/
144 							} /*Sw*/
145 						} /*Selse*/
146 
147 #ifdef FULL_LINE	/*O Opt. compil. *** FULL_LINE *** */
148 /*O						si pas option t */
149 						if(!t)
150 						{ /*S*/
151 /*O							copier les chars jusqu'en fin de ligne (ou EOF) y compris '\r' sous DOS */
152 							while ( (c1=getc(pnfile)) != '\n' && c1!=EOF )
153 							{ /*S*/
154 								putc(c1,pfdoc);
155 								if(s)putch(c1);
156 							} /*S*/
157 						} /*S*/
158 /*O						sinon (option t) */
159 						else
160 #endif				/*O Opt. compil. end *** FULL_LINE *** */
161 						{ /*S*/
162 /*O							aller au bout de la ligne sans copier, sauf les 'retour-chariot' */
163 							while ( (c1=getc(pnfile)) != '\n' && c1!=EOF )
164 							{ /*Sw*/
165 								if (c1=='\r')
166 								{ /*S*/
167 									putc( c1, pfdoc );
168 									if(s) putch( c1 );
169 								} /*S*/
170 							} /*Sw*/
171 						} /*S*/
172 /*O						puis envoyer les NL sous forme \n */
173 /*www						fprintf(pfdoc, "%s", NL );*/
174 /*www						if(s) puts("");*/
175 						putc(c1,pfdoc);
176 						if(s)putch(c1);
177 /*O						revenir sur NL */
178 						ungetc(c1,pnfile);                   
179 					} /*S traiter le commentaire C */
180 
181 /*O					sinon: (pas de commentaire */
182 					else
183 					{ /*S pas le cas */
184 /*O						revenir en arrière de 2 caractères */
185 						ungetc(c3,pnfile);
186 						ungetc(c2,pnfile);
187 					} /*S pas le cas */
188 				} /*S endif char = '/' */
189 			} /*S endif!NL */
190 		} /*S end tq !EOF */
191 		return 0;
192 	} /*S getwikifiles_ */

mkd-getwikifiles.c[modifier | modifier le wikicode]

Code du programme principal (main).

#include "version.h"
#include "getwikifiles.h"

// Variables globales
	unsigned char n=0,s=0,t=0,v=0;				/*P déclaration et initialisation des variables */
	char codes[5] = {0,0,0,0,0};				/*P version qui copie les codes avec l'option t dans getwikifiles_()
													Il peut être nécessaire de modifier les lignes (~161?) dans getwikifiles.c */
	// char codes[5] = {' ',' ',' ',' ',' '};	/*P version qui copie les commentaires après le caractère ' ' dans getwikifiles_()*/

int main(int argc, char *argv[])
{ /*O main Test */
//	char *fprj= "";					/*P nom fichier projet s'il existe		*/
	char fdoc[MAX];					/*P nom fichier documentaire en sortie	*/
//	char fdoc[] = "C++_doc.txt";	/*P nom fichier documentaire en sortie	*/

	char fsrc[MAX];					/*P nom fichier source a documenter		*/
//	char fsrc[] = ".\\C++_FILE.a";	/*P nom fichier source a documenter		*/
	extern  char codes[];			/*P codes */
	extern unsigned char A,B,C,F,P,S,a,f,j,l,n,p,s,t,v,w;	/*P rappels options booleennes */

/*O	init options par defaut */
//??	{n=0;s=0;t=0;v=0;} /*O option v = 0 (verbose) de compilation; v n'est pas utilisé dans ce module */
//	 O=0; /* Option=0 */

	int i=0;			/*P compteurs */
	int k=0;
	char isource=0;		/*P position nom du fichier source dans path source */
	char itarget=0;		/*P position fin du path_target avec '*' ou ':'(PC) */
	char ktar=0;		/*P position du '.' dans p_target */
	static char O;		/*P booleen =1 si option validee */
	static char L;		/*P booleen =1 si option langage */
	register int c=0;	/*P char (variable) */
	int c1=0;			/*P char (variable) pour version PC */

//	FILE *pfprj;  /*P FICHIER PROJET			*/
	FILE *pnfile; /*P FICHIER SOURCE A TRIER	*/
	FILE *pfdoc;  /*P FICHIER A DOCUMENTER		*/

	printf("Epreuve d'un module du programme d'extraction de documents avec mkd\n");
	printf("argv[0] = %s\n",argv[0]); 				/*T*/
	if (argc > 1) printf("argv[1] = %s\n",argv[1]);	/*T*/
	if (argc > 2) printf("argv[2] = %s\n",argv[2]);	/*T*/
	if (argc > 3) printf("argv[3] = %s\n",argv[3]);	/*T*/
		
/*O	Si la syntaxe n'est pas correcte (argc <2) "Nom-de-l'exécutable [--nst] [-Code(DHOPSTUw)] Fichier-source" */
	if (argc < 2) 
/*O	Alors, préciser la syntaxe et quitter sur erreur de syntaxe -1*/
	{ /*S syntaxe intégrée */
#ifdef FR
		printf("Syntaxe : %s [--Options(nst)] [-5 Codes(DHOPSTUw)] Fichier-source\n",argv[0]);
		printf("Appuyer sur la touche 'Entree' pour quitter.\n\n");
#endif
#ifdef EN
		printf("Syntax: %s [--Options(nst)] [-5 Codes(DHOPSTUw)] Fichier-_source\n",argv[0]);
		printf("Press 'Enter' to quit.\n");
#endif
		getc(stdin); // attente touche 'Entrée' */ 
		exit(-1);
	} /*S syntaxe intégrée */
/*O si argc = 2 (source cpp en premier paramètre) */
	if (argc == 2)
	{ /*S argc = 2 */
#ifdef VC10		
		if (strcpy_s(fsrc,argv[1])!=0)	/*w strcpy_s : évite l'erreur overflow */
#endif
#ifdef MSDEV41
		if (strcpy(fsrc,argv[1])==NULL)
#endif
		{
			printf("Err SRC : %d chars max\n",MAX);
			exit(-1);
		}
		else
		{ /*S*/
#ifdef VC10
			strcpy_s(fdoc,argv[1]); /*w strcpy_s : évite l'erreur overflow */
			strcat_s(fdoc,".txt");
#endif
#ifdef MSDEV41
			strcpy(fdoc,argv[1]); 
			strcat(fdoc,".txt");
#endif
			printf("SRC = %s\n",fsrc);	/*T*/
			printf("DST = %s\n",fdoc);	/*T*/
			printf("argc=2 - Options n=%d,s=%d,t=%d,v=%d Codes %c,%c,%c,%c,%c\n",n,s,t,v,codes[0],codes[1],codes[2],codes[3],codes[4]);	/*T*/
		} /*S*/
	} /*S argc = 2 */

/*O si argc = 3 (option ou code) */
	if (argc == 3)
	{ /*S argc = 3 */
		if (argv[1][0]=='-' && argv[1][1]=='-')	/*O Options ! */
		{ /*S Options */
			int i;
			// printf("argv[1][0]=%c - argv[1][1]=%c\n",argv[1][0],argv[1][1]);	/*T*/
			for (i=0 ; i<4 && (argv[1][(i+2)]!=0) ; i++) 
            { /*S*/
				if (argv[1][(i+2)]=='n') n=1;				/*O n,s,t sont des variables globales */
				else if (argv[1][(i+2)]=='s') s=1;			/*O*/
					else if (argv[1][(i+2)]=='t') t=1;		/*O*/
						else if (argv[1][(i+2)]=='v') v=1;	/*O*/
				// printf("argv[1][%d]=%c & n=%c, s=%c, t=%c\n",(i+2), argv[1][i+2],n,s,t);	/*T*/
			} /*S*/
		} /*S Options */
		else if (argv[1][0]=='-' && argv[1][1]!='-') /*O Codes ! */
		{ /*S Codes */
			int i;
			for (i=0 ; i<5 && (argv[1][i+1]!=0) ; i++) codes[i]=argv[1][i+1];	/*O affectation */	
		} /*S Codes */
		else /*O sinon erreur de syntaxe */
		{ /*S*/
			puts("Options ? || Codes ?\n");	/*O*/
			exit(-1);						/*O*/
		} /*S*/
/*O		affectation du nom de fichier source au nom de fichier destinataire, et ajouter .txt */
#ifdef VC10
		if (strcpy_s(fsrc,argv[2])!=0)
#endif
#ifdef MSDEV41
		if (strcpy(fsrc,argv[2])==NULL)
#endif
		{ /*S*/
			printf("Err SRC : %d chars max\n",MAX);
			exit(-1);
		} /*S*/
		else
		{ /*S*/
#ifdef VC10
			strcpy_s(fdoc,argv[2]);
			strcat_s(fdoc,".txt");
#endif
#ifdef MSDEV41
			strcpy(fdoc,argv[2]); 
			strcat(fdoc,".txt");
#endif
			printf("SRC = %s\n",fsrc);	/*T*/
			printf("DST = %s\n",fdoc);	/*T*/
			printf("argc=3 - Options n=%d,s=%d,t=%d,v=%d Codes %c,%c,%c,%c,%c\n",n,s,t,v,codes[0],codes[1],codes[2],codes[3],codes[4]);	/*T*/
		} /*S*/
	} /*S argc = 3 */

/*O si argc = 4 (options et code) */
	if (argc == 4)
	{ /*S argc = 4 */
		if (argv[1][0]=='-' && argv[1][1]=='-') /*O Options */
		{ /*S Options */
			int i;
			for (i=0 ; i<4 && (argv[1][i+2]!=0) ; i++) 
			{ /*S*/
				if (argv[1][i+2]=='n') n=1; /*O n,s,t sont des variables globales */
				else if (argv[1][i+2]=='s') s=1;
					else if (argv[1][i+2]=='t') t=1;
						else if (argv[1][(i+2)]=='v') v=1;
			} /*S*/
		} /*S Options */
		else
		{ /*S err */
			puts("Options ?\n");
			exit(-1);
		} /*S err */
		if (argv[2][0]=='-' && argv[2][1]!='-') /*O Codes */
		{ /*S Codes */
			int i;
			for (i=0 ; i<5 && (argv[2][i+1]!=0) ; i++) codes[i]=argv[2][i+1];		
		} /*S Codes */
		else /*O erreur de syntaxe */
		{ /*S*/
			puts("Codes ?\n");
			exit(-1);
		} /*S*/
#ifdef VC10
		if (strcpy_s(fsrc,argv[3])!=0)
#endif
#ifdef MSDEV41
		if (strcpy(fsrc,argv[3])==NULL)
#endif
		{ /*S*/
			printf("Err SRC : %d chars max\n",MAX);
			exit(-1);
		} /*S*/
		else
		{ /*S*/
#ifdef VC10
			strcpy_s(fdoc,argv[3]);
			strcat_s(fdoc,".txt");
#endif
#ifdef MSDEV41
			strcpy(fdoc,argv[3]);
			strcat(fdoc,".txt");
#endif
			printf("SRC = %s\n",fsrc);	/*T*/
			printf("DST = %s\n",fdoc);	/*T*/
			printf("argc=4 - Options n=%d,s=%d,t=%d,v=%d Codes %c,%c,%c,%c,%c\n",n,s,t,v,codes[0],codes[1],codes[2],codes[3],codes[4]);	/*T*/
		} /*S*/
	} /*S argc = 4 */

/*O ouvrir le fichier source en lecture binaire*/
	{ /*S demarrage du test */
/*O		si l'ouverture du fichier source n'est pas correcte */
#ifdef VC10 		
		if (fopen_s(&pnfile, fsrc,"rb") !=0 )
#endif
#ifdef MSDEV41
		if  (( pnfile = fopen ( fsrc,"rb" )) == 0 )	 // old syntax 
#endif
		{ /*S ! open source pnfile */
	
/*O			ecrire fichier "nomfich" pas trouvé ou erreur d'ouverture */
#ifdef FR 
			printf ("fichier \'%s\' : absent ou erreur d'ouverture\n",fsrc); 
			puts("Appuyer sur la touche 'Retour-chariot' pour quitter\n\n"); 
#endif
#ifdef EN 
			printf ("file \'%s\' : non found or open error\n",fsrc); 
			puts("Press 'Enter' to quit.\n"); 
#endif
			getchar();
			exit(2);
		} /*S ! open source pnfile */
/*O		sinon, ouvrir le fichier à  documenter en écriture ou réécriture */
		else
		{ /*S open pfdoc write */
/*O			si il y a une erreur à  l'ouverture l'écrire et quitter en renvoyant le code d'erreur 2 */
#ifdef VC10
			if((fopen_s(&pfdoc,fdoc,"wb")) != 0)
#endif
#ifdef MSDEV41
			if((pfdoc = fopen(fdoc,"wb")) == NULL)  // old syntax
#endif
			{ /*S si err à  l'ouverture de pfdoc*/
#ifdef FR 
				printf("fichier \'%s\' : erreur d'ouverture en écriture\n",fdoc); 
				puts("Tapez sur la touche 'Retour-chariot' pour quitter\n\n"); 
#endif
#ifdef EN 
				printf("file \'%s\' : open error\n",fdoc); 
				puts("Press 'Enter' to quit.\n"); 
#endif
				getchar();
				exit(-2);
			} /*S si err à  l'ouverture de pfdoc */
			else
			{ /*S sinon*/
/*O				si options n ou v ou s valides et pas t, écrire le nom du fichier lu */
				if(n||v||s)
				{ /*S si n ou v ou s valide */
					if (!t) fprintf(pfdoc,"%s\n(file %s :)", NL, fsrc );
					if( v || s ) printf("\n\n(file %s :)\n",fsrc);
					if (!t)fprintf (pfdoc," Options n=%d s=%d t=%d verbose=%d",n,s,t,v);
					if (!t)fprintf (pfdoc, "%s", NL );
				} /*S si n ou v ou s valide */
			} /*S sinon*/
		} /*S open pfdoc write */

		getwikifiles_ (pfdoc,pnfile);

/*O		fermer le fichier source et en cas d'erreur écrire "Erreur de fermeture */
		if (fclose(pnfile))
		{ /*S si*/
#ifdef FR 
			printf("Erreur de fermeture : \'%s\'\n",fsrc); 
#endif
#ifdef EN 
			printf("Error on closed : \'%s\'\n",fsrc);
#endif
			exit(2);
		} /*S fin si*/
/*O		Fermer tous les autres fichiers */
		{ /* fermer */
			int numclosed = _fcloseall( ); //P sous unix retourne 0 ou EOF
#ifdef FR 
			printf( "Nombre de fichiers clos par _fcloseall : %u\n", numclosed ); 
#endif
#ifdef EN 
			printf( "Number of files closed by _fcloseall: %u\n", numclosed ); 
#endif
		} /* fermer */
	} /*S demarrage du test */
#ifdef FR 
	puts("pressez sur la touche 'Retour-chariot' pour quitter\n"); 
#endif
#ifdef EN 
	puts("Press 'Enter' to quit.\n"); 
#endif
	getchar();	
	return 0;
} /*O main Test */

Fichiers de commandes WINDOWS/DOS[modifier | modifier le wikicode]

Compiler.bat[modifier | modifier le wikicode]

rem Fichier : compiler.bat
rem rm *.o
rem gcc -c getwikifiles.c
rem gcc -c mkd-getwikifiles.c
rem gcc -o getwikifiles.o mkd-getwikifiles.o -o mkd-getwikifiles.exe
gcc -g -o mkd-getwikifiles.exe mkd-getwikifiles.c getwikifiles.c

Environnement mingw[modifier | modifier le wikicode]

rem Fichier : env-mingw.bat
rem pour établir l'environnement de travail avec mingw
rem cmd /? pour les options de la ligne de commandes

cmd /K	set PATH=c:\MinGW\bin;%PATH%
echo "environnement de travail pour mingw"
echo "exit pour quitter"

Shell tests.bat[modifier | modifier le wikicode]

Programme des tests du module getwikifiles.

@TITLE TESTS.BAT
echo off
color 2E

REM **********************************************************************************
REM tests.bat R 11.01
REM mkd-getwikifiles.exe est simplifé par rapport à mkd et n'accepte pas de fichier de
REM destination pour cela on utilise l'artifice les artifices de redirection > et >>
REM autrement: utiliser mkd.exe pour créer le fichier .h avec la syntaxe de mkd selon
REM les versions de mkd.exe
REM **********************************************************************************

echo mise a jour du fichier mkd-getwikifiles.exe, ... dans le repertoire courant.
if exist ..\mkd-getwikifiles.exe Xcopy ..\mkd-getwikifiles.exe . /D 

if not exist mkd-getwikifiles.exe goto ERR1
pause

cls
echo test sans argument donne la syntaxe.
pause
mkd-getwikifiles
pause

cls
echo test avec pour argument le fichier Contenus
pause
mkd-getwikifiles Contenus
type Contenus.txt
pause

cls
echo test avec numérotation de ligne
pause
mkd-getwikifiles --n Contenus
type Contenus.txt
pause

cls
echo test avec copie à l'écran
pause
mkd-getwikifiles --s Contenus
type Contenus.txt
pause

cls
echo test avec texte seul et copie à l'écran (sans les double crochets)
pause
mkd-getwikifiles --ts Contenus
type Contenus.txt
copy /Y Contenus.txt .\files\*
pause

cls
echo test avec texte seul et copie à l'écran (sans les double crochets)
pause
mkd-getwikifiles --ts -FI ArticleTrois
type ArticleTrois.txt
copy /Y ArticleTrois.txt .\files\.
pause

exit 0

:ERR1
echo mkd-getwikifiles.exe absent, not exist.
exit 1

Fichiers de commandes LINUX[modifier | modifier le wikicode]