Projet mkd/find.c
De Wiki EELL.
Version du 10 mai 2013 à 07:28 par JPL (discuter | contributions)
Retour aux fichiers en développement →
Sommaire |
find (included file)
find.inc.c, find.inc.h 2013-05-09
- find.inc.h
#define ARGS_EXAM
- find.inc.c
//P maj R3.11 04/01/91 par JPL //P maj R 130509 alpha { /*S find */ L=0; // c is a register int defined in mkd.c int d; // local variables int e, f, g; if(v) printf("Find Souce File Language, \'%s\': ",fsrc); if(k) { /*S chercher */ //T char buffer[10]; //T tests only c = tolower(fsrc[k+1]); if (c!='\0') d = tolower(fsrc[k+2]); else d='\0'; if (d!='\0') e = tolower(fsrc[k+3]); else e='\0'; // if (e!='\0') f = tolower(fsrc[k+4]); else f='\0'; // if (f!='\0') g = tolower(fsrc[k+4]); else g='\0'; // if (g!='\0') h = tolower(fsrc[k+3]); else h='\0'; //T buffer[0]=c; buffer[1]=d; buffer[2]=e; buffer[3]='\0'; //T Tests only //T printf("\nTests: **** tolower extension = %s\n",buffer); //T tests only #ifndef UNIX_ONLY // OK for PC and UNIX / LINUX. Not OK for C strict if(c=='a'&&d=='s'&&(e=='m'||e=='i')) {L=1;A=1;printf("ASM\n");} else if( (c=='b'&&d=='a'&&e=='s') || // bas (c=='v'&&d=='b'&&e=='\0') || // Visual bacic (c=='b'&&d=='a'&&e=='t') // bat ) {L=1;B=1;printf("BASIC\n");} else if( ( ((c=='c'||'h')&&d=='+'&&e=='+') || // c++, h++ ((c=='c'||'h')&&d=='-'&&e=='-') || // c--, h-- ((c=='c'||'h')&&d=='p'&&e=='p') || // cpp, hpp (c=='c'&&d=='s'&&e=='s') || // css (c=='c'&&d=='c'&&e=='\0') || // cc (c=='h'&&d=='h'&&e=='\0') || // hh (c=='c'&&d=='p'&&e=='\0') || // cp=c# (c=='c'&&d=='s'&&e=='\0') || // cs=c# (c=='c'&&d=='#'&&e=='\0') || // c# (c=='c'&&d=='\0') || // C (c=='h'&&d=='\0') || // h (c=='d'&&d=='\0') || // D (c=='p'&&d=='r')&&e=='o') || // pro prolog //w see forward (c=='p'&&d=='l')&&d=='\0') || // pl perl, prolog (c=='p'&&d=='h'&&e=='p') || // PHP (c=='j'&&d=='a'&&e=='v') || // jav java (c=='j'&&d=='s'&&e=='e') || // jse javascript (c=='j'&&d=='s'&&e=='\0') // js javascript ) {L=1;C=1;printf("C or PROLOG\n");} else if(c=='f'&&d=='o'&&e=='r') {L=1;F=1;printf("FORTRAN\n");} else if(c=='p'&&d=='a'&&e=='s') {L=1;P=1;printf("PASCAL\n");} #endif #ifndef PC_ONLY // OK for UNIX / LINUX if(c=='s'&&d=='\0') {L=1;A=1;printf("Assembler\n");} else if(c=='f'&&d=='\0') {L=1;F=1;printf("Fortran\n");} else if(c=='p'&&d=='\0') {L=1;P=1;printf("Pascal\n");} /*w Attention, il n'est pas coutumier de donner des extensions aux fichiers shell. Il serait utile de vérifier la première ligne si c est NULL. Pour cela il faudrait ouvrir et refermer le fichier source. */ else if( (c=='s'&&d=='h'&&e=='\0') || // sh (c=='c'&&d=='s'&&e=='h') || // csh (c=='p'&&d=='l'&&e=='\0') || // pl perl (c=='r'&&d=='b'&&e=='\0') || // rb ruby (c=='p'&&d=='y'&&e=='\0') || // py python (c=='p'&&d=='y'&&e=='w') || // pyw python (c=='r'&&d=='\0') // ratfor ) {L=1;S=1;printf("Shell\n");} #endif #ifdef UNIX_ONLY // C strict not in use with mkd see version.h else if((c=='c'||c=='i'|| c=='h')&&d=='\0') {L=1;C=1;printf("C strict\n");} #endif #ifndef ARGS_EXAM else if( (c=='p'&&d=='r'&&e=='j') || // prj mkd (c=='p'&&d=='j'&&e=='\0') // pj mkd ) {L=1;j=1;printf("Project file\n");} #endif } /*S chercher */ /*O si le langage n'est pas trouvé: */ if(!L) /*O alors: */ { /*S*/ /*O mettre les drapeaux (options ABC... ) a 0 */ A=B=C=F=P=S=0; /*O demander le type de langage du fichier et positionner le drapeau */ printf("\n*** Source file: language not found. (Enter A,B,C,F,P,S,l or p)\n"); #ifndef ARGS_EXAM if(!j)printf("*** For project file: exit and use option -j.\n"); #endif printf("Enter ESCAPE for exit ?:"); if(j)printf("\b\bor space_bar for Ignore ?: "); if((c=getch())==0x1B){ /*S*/ printf("\n.Exit 1\n");exit(1);} /*S*/ else if(c=='A'||c=='a')A=1; else if(c=='B'||c=='b')B=1; else if(c=='C'||c=='c')C=1; else if(c=='F'||c=='f')F=1; else if(c=='P'||c=='p')P=1; else if(c=='S'||c=='s')S=1; else if (c=='l')l=1; else if(c=='p')p=1; else { /*S*/printf("\n.Exit 2\n"); exit(2);} /*S*/ printf("\n"); L=A+B+C+F+P+S; /*O si aucun drapeau langage n'est positionne envoyer BEL */ if(!(L==1||p||l))putch(0x7); putch('\n'); } /*S*/ } /*S find */
Fichier de commande des tests
MAKE_Tests_U
- File: KONSOLE
#!/bin/bash echo -e '\E['32';'01'm'"click on New Line to 'start' the Konsole" # echo -e '\E['31';'01'm' "not 'start in a terminal'" echo -e '\E['32';'01'm'"click on Ctrl-C to exit" tput sgr0 # Reset text attributes to normal without clear read pwd pwd echo $pwd tput sgr0 # Reset text attributes to normal without clear /usr/bin/konsole background-mode --workdir pwd dir read
- File: MAKE_Tests_U
#!/bin/bash #O ../../mkd tests under Linux. #O Epreuve de vérification de la fonction find.inc.c() avec ../../mkd rm test_find.txt ../../mkd -svwfj '**' test_find.prj test_find.txt > test.stdout gedit test_find.txt test.stdout
- File: Make_Tests_files
> #!/bin/dash echo "assembler" > test.ASM echo "basic" > test.BAS echo "batch" > test.BAT echo "fortran" > test.FOR echo "pascal" > test.PAS echo "visual basic" > test.vb echo "c++" > test.c++ echo "c++" > test.h++ echo "c--" > test.c-- echo "c--" > test.h-- echo "c++" > test.cpp echo "c++" > test.hpp echo "css" > test.css echo "c++" > test.cc echo "c sharp" > test.cp echo "c sharp" > test.cs echo "c sharp" > test.c# echo "C" > test.C echo "C" > test.h echo "D" > test.D echo "prolog" > test.pro echo "php" > test.php echo "java" > test.jav echo "javasript" > test.jse echo "javasript" > test.js #w echo "mkd" > test.prj not a programming language #w echo "mkd" > test.pj not a programming language # UNIX echo "assembler" > test.s echo "fortran" > test.f echo "pascal" > test.p echo "ratfor" > test.r echo "shell" > test.sh echo "cshell" > test.csh echo "perl" > test.pl echo "ruby" > test.rb echo "python" > test.py echo "python" > test.pyw # C strict echo "C strict src" > test.c #w echo "C strict include preformated" > test.i Only for c strict echo "C strict header" > test.h # Make prj file ls -1 > test_find.prj