1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
/* verifier la presence d'un fichier Log */
/* le nom du fichier rechercher est egal au nom de dossier avec extension .log */
gchar *NDT;
NDT = g_path_get_basename(V_Entry1);// extraire le nom du dossier sur le chemin selectionner
char *V_slach; V_slach = "/";
char *V_log; V_log =".log";
const gchar *FChemin;
FChemin = g_strconcat(V_Entry1, V_slach, NDT, V_log, NULL);//concatener chemin+nom fichier
FILE *fp = NULL;
fp = fopen(FChemin,"rb");
if (fp == NULL)
{
/* le fichier log n'existe pas */
/* création du fichier log */
FILE *CFLog = NULL; // Creation_Fichier_Log
CFLog = fopen(FChemin,"w");
fprintf(CFLog,"<?xml version='1.0' encoding='UTF-8'?>\n");
char *V_TagD; V_TagD = "<";
char *V_TagF; V_TagF = ">";
char *V_TagRacine = "racinetxt";
char *V_TagT;
V_TagT = g_strconcat(V_TagD, V_TagRacine, V_TagF, NULL);
fprintf(CFLog,"\t"); fprintf(CFLog,V_TagT); fprintf(CFLog,"\n");
V_TagT = g_strconcat(V_TagD, V_slach, V_TagRacine, V_TagF, NULL);
fprintf(CFLog,"\t"); fprintf(CFLog,V_TagT); fprintf(CFLog,"\n");
fclose(CFLog);
xmlDocPtr doc;
xmlNodePtr racine, New_Noeud;
doc = xmlParseFile(FChemin);
racine = xmlDocGetRootElement(doc);
/* Parametre - Chemin_Dossier_a_Traiter = V_Entry1 */
New_Noeud = xmlNewNode(NULL,"Parametre");
xmlSetProp(New_Noeud,"Chemin_Dossier_a_Traiter",V_Entry1);
/* Parametre - Numeration_Page = V_ComboBox2 */
xmlSetProp(New_Noeud,"Numeration_Page",V_ComboBox2);
char VVBox2[2];
sprintf(VVBox2,"%d",CBox2); //converti un "int" en "char"
xmlSetProp(New_Noeud,"N_Numeration_Page",VVBox2);
xmlAddChild(racine,New_Noeud);
DIR * dirdossier;
dirdossier = opendir(V_Entry1);
if (dirdossier != NULL)
{
int ComptFichier = 0;
struct dirent *nomfichier;
while ((nomfichier = readdir(dirdossier)) != NULL)
{
char *extens;
char *reffext = "txt";
extens = strstr(nomfichier->d_name, "txt");
if (extens != NULL)
{
if (strcmp(extens, reffext) == 0)
{
/* Nom_Fichiers */
New_Noeud = xmlNewNode(NULL,"Fichier");
xmlSetProp(New_Noeud,"Nom_Fichier",nomfichier->d_name);
xmlAddChild(racine,New_Noeud);
ComptFichier++;
}
}
}//sortie while
/* CountFichier - Nombre_de_Fichier_a_Traiter = X */
New_Noeud = xmlNewNode(NULL,"CountFichier");
char *V_CountFichier;
sprintf(V_CountFichier,"%d",ComptFichier); //converti un "int" en "char"
xmlSetProp(New_Noeud,"Nombre_de_Fichier_a_Traiter",V_CountFichier);
xmlAddChild(racine,New_Noeud);
}
closedir(dirdossier);
xmlSaveFile(FChemin,doc);
xmlFreeDoc(doc);
VBuff = "- Fichier Log Crée \n";
gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
/* Creation du Dossier Post Traitement */
FChemin = g_strconcat(V_Entry1, V_slach, "BINAIRE", NULL);//concatener chemin+binaire
if(-1 == mkdir(FChemin,S_IRWXU))
{
VBuff = "- Création du repertoire BINAIRE échoué \n";
gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
}
else
{
VBuff = "- Répertoire BINAIRE Crée \n";
gtk_text_buffer_get_start_iter(text_buffer,&IterStart);
gtk_text_buffer_insert(text_buffer,&IterStart,VBuff,-1);
}
}
else
{
fclose(fp);
/* extraire une donnée du fichier Log */
xmlDocPtr mog;
xmlNodePtr racinemog;
xmlXPathContextPtr contextmog;
xmlXPathObjectPtr objmog;
mog = xmlParseFile(FChemin);
racinemog = xmlDocGetRootElement(mog);
contextmog = xmlXPathNewContext(mog);
int i;
objmog = xmlXPathEvalExpression("/racinetxt/Parametre[@type='Chemin_Dossier_a_Traiter']/text()",contextmog);
for(i=0;i<objmog->nodesetval->nodeNr;i++)
{
xmlNodePtr n = objmog->nodesetval->nodeTab[i];
V_Entry1 = n->content;
}
xmlXPathFreeObject (objmog);
xmlXPathFreeContext (contextmog);
xmlFreeDoc(mog);
} |