Marmote Core
The project aims at realizing the prototype of a software environment dedicated to modeling with Markov chains.
 All Classes Functions Variables
verif_ext_fic.h
1 // Made by qst sept 2003
2 
3 char *NOM;
4 char *EXT;
5 char *NOMBASE;
6 char *NOMsz;
7 char *NOMbk;
8 char *NOMcd;
9 
10 struct extension
11  {
12  char RC;
13  char ind1;
14  char ind2;
15  };
16 struct extension acceptable = {'U','u','u'};
17 struct extension argument;
18 
19 int usage_extension(char *s)
20 {
21 fprintf(stderr,"Incorrect extension: %s\n",s);
22 fprintf(stderr," File extension must be of the form \".%c%c%c\"\n",
23  acceptable.RC,acceptable.ind1,acceptable.ind2);
24 if (acceptable.RC=='U') fprintf(stderr," U means R, C or U\n");
25 if ((acceptable.ind1=='u') || (acceptable.ind2=='u'))
26  fprintf(stderr," u means i, d or u\n");
27 return 0;
28 }
29 
30 int verif_ext_fic (char *s, char *ext)
31 {
32 char *t;
33 if (strlen(s) < 4) usage_extension(s);
34 acceptable.RC = ext[0];
35 acceptable.ind1 = ext[1];
36 acceptable.ind2 = ext[2];
37 NOM = (char *)malloc(strlen(s)+1);
38 if (NOM == NULL) {perror("malloc NOM");exit(2);}
39 sprintf(NOM,"%s",s);
40 t = s+strlen(s)-4;
41 *t = '\0';
42 NOMBASE = s;
43 t++;
44 EXT = t;
45 
46 argument.RC = *t;
47 if ((*t != 'R') && (*t != 'C') && (*t != 'U')) return usage_extension(NOM);
48 if ((acceptable.RC == 'R') && (*t != 'R')) return usage_extension(NOM);
49 if ((acceptable.RC == 'C') && (*t != 'C')) return usage_extension(NOM);
50 t++;
51 argument.ind1 = *t;
52 if ((*t != 'i') && (*t != 'd') && (*t != 'u')) return usage_extension(NOM);
53 if ((acceptable.ind1 == 'i') && (*t != 'i')) return usage_extension(NOM);
54 if ((acceptable.ind1 == 'd') && (*t != 'd')) return usage_extension(NOM);
55 t++;
56 argument.ind2 = *t;
57 if ((*t != 'i') && (*t != 'd') && (*t != 'u')) return usage_extension(NOM);
58 if ((acceptable.ind2 == 'i') && (*t != 'i')) return usage_extension(NOM);
59 if ((acceptable.ind2 == 'd') && (*t != 'd')) return usage_extension(NOM);
60 
61 NOMsz = (char *)malloc(strlen(NOMBASE)+4);
62 if (NOMsz == NULL) {perror("malloc NOMsz");exit(2);}
63 sprintf(NOMsz,"%s.sz",s);
64 
65 NOMbk = (char *)malloc(strlen(NOMBASE)+4);
66 if (NOMbk == NULL) {perror("malloc NOMbk");exit(2);}
67 sprintf(NOMbk,"%s.bk",s);
68 
69 NOMcd = (char *)malloc(strlen(NOMBASE)+4);
70 if (NOMcd == NULL) {perror("malloc NOMcd");exit(2);}
71 sprintf(NOMcd,"%s.cd",s);
72 return 1;
73 }