(Courriels de diversion: <garde-cotes@crochetent-disputeront.com> <blasonner@hissais-obstines.com> <commemorerez@abrutissions-discuterent.com> <tantieme@remilitariser-decapitez.com> <abat@degrisaient-epanouissiez.com> <vilipenderont@releguerent-parades.com> <efforciez@deflation-banniraient.com> <agressais@tricoterai-lenifiantes.com> <frigidite@immortel-marmonneront.com> <radiographiee@reflechissiez-annoterons.com> )
Selon Franz-Albert VAN DEN BUSSCHE <fa.vdb@free.fr>: > Le jeudi 18 Novembre 2004 21:44, jeanmichel.123@free.fr a écrit :> > oui; et puis après avoir détruit ~/.libralux > > [jmg@localhost src]$ ls -dl ~/.libralux> > drw---xr-- 2 jmg jmg 4096 nov 18 21:19 /home/jmg/.libralux/ > > [jmg@localhost src]$> > > > voir fichier init.c; ligne 101: > > mkdir (prefix) > > Cependant, je ne sais pas trop ce que fait cete fonction, vu que ma manpage > > documente la fonction prenant deux paramètres: > > int mkdir(const char *pathname, mode_t mode); > > Pour résumer, dans init.c et s'il n'existe pas de libralux.cfg on en crée un > dans ~/.libralux > Donc après un premier : libralux --help tu dervais trouver un > ~/.libralux/libralux.cfg > > Mais je vais revoir çà. En attendant voici mon libralux.cfg à toi de > l'adapter. Je reste sur ma position, il semble préférable d'utiliser un mkdir a deux arguments. (Voir les fichiers joints). Les fichiers joints sont: - init.c le fichier uinit.c avec mes modifications. - init.c.diff un cvs diff classique - init.c.diff.u un cvs diff -u Ceci me permet de passer de drw---xr-- 2 jmg jmg 4096 nov 18 23:54 /home/jmg/.libralux// à drwx------ 2 jmg jmg 4096 nov 18 23:48 /home/jmg/.libralux// Jean-Michel
/*************************************************************************** * LibraLux * * Copyright (C) 2004 by FaVdB * * * * Contact : biglux@culte.org * * * * Licence : GNU Public License (GPL) * * * * Projet BigLux (http://www.culte.org/projets/biglux) de synthèse * * pour non ou mal-voyant * * * * BigLux project (http://www.culte.org/projets/biglux) to synthetisis * * for disabilties peoples * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <string.h> #include <ctype.h> #include <time.h> #include <termios.h> #include <unistd.h> #include "structures.h" #define INIT_C #include "lexique.h" #include "util.h" #include "nett.h" #include "tagger.h" #include "phonet.h" #include "init.h" #include "options.h" #include "sys/stat.h" /************************************************************************* * Description : Charge les lexiques et autres fichiers de règles *************************************************************************/ #define NOM_FICHIER(a,b) a = b;if (a[0] != '/') a = add_chaines(prefix, b, "/"); struct termios tio, saved; int llp_init(int *pargc, char **ppargs) { FILE *file; // Variables d'initialisation du formattage char *nomspec, *nomloc; // char *nomlex, *nomlong; char prefix[PATHLEN]; // Variables d'initialisation de l'étiquetage char *nomcatal, *nommorpho, *taglex; char *nompmc, *nomml, *nomnp; // Variables d'initialisation de la phonetisation char *nomreg_l, *nomhlex; char *ficregP, *ficExep; char *ficregD, *ficregE, *ficregL; char *fmtprop; char *ficprop[NBTNP]; char *nomrule; int siafreg; int affich; int ilang; int rc = 0; if (llp_initialized) return (0); frequence = 100; tempo = 60; num_voix = 3; // Affichage des options par défaut affiche_options(p_llpopt); // Lecture du fichier de configuration if ((file = ouvrir_cfg(prefix)) == NULL) { sprintf(prefix, "%s/.libralux", getenv("HOME")); fprintf(stderr, "Création de %s/libralux.cfg\n", prefix); mkdir(prefix,S_IRWXU); //mkdir(prefix); fic_ecrire_options(prefix); } else { fic_lire_options(file); fclose(file); verbose=OPT_GET_INT(verbose); // Affichage des options après prise en compte du fichier de // configuration LogERR(3, "llp_init : après lecture cfg\n"); affiche_options(p_llpopt); } LogERR(2, "llp_init : config=%s/libralux.cfg\n", prefix); // Prise en compte des options de la ligne de commande traite_options(pargc, ppargs, p_llpopt); verbose=OPT_GET_INT(verbose); affiche_options(p_llpopt); if (option_modified) fic_ecrire_options(prefix); // Initialisation du formattage strcpy(prefix, OPT_GET_PTR(generalpath)); NOM_FICHIER(nomspec, "speciaux"); NOM_FICHIER(nomloc, "locutions"); if ((arbre_spec = charger_arbre()) == NULL) { LogERR(1, "llp_init : nomspec %s/speciaux impossible à trouver\n", prefix); exit(-3); } // Initialisation de l'étiquetage NOM_FICHIER(nomcatal, "lm3classe.arpa.sirlex"); NOM_FICHIER(nommorpho, "model_morpho"); NOM_FICHIER(taglex, "lex10k.sirlex"); NOM_FICHIER(nompmc, "lex10k"); NOM_FICHIER(nomml, "lm3classe.arpa"); NOM_FICHIER(nomnp, "model_np"); if (OPT_GET_INT(acc)) { NOM_FICHIER(taglex, "lex10k.acc.sirlex"); NOM_FICHIER(nompmc, "lex10k.acc"); } S_ET_tagger = charge_tagger(nomcatal, nompmc, nomml, nommorpho); if ((S_ET_lex = charge_lexique(taglex)) == NULL) return (-2); S_ET_morpho_np = charge_model_morpho(nomnp); // Initialisation de la phonetisation NOM_FICHIER(nomreg_l, "regles_l.pro3"); NOM_FICHIER(nomhlex, "h_aspi.sirlex"); NOM_FICHIER(ficregP, "french01.pron"); NOM_FICHIER(ficExep, "list_exep"); NOM_FICHIER(ficregD, "desigle.pron"); NOM_FICHIER(ficregE, "epeler_sig.pron"); NOM_FICHIER(ficregL, "lire_sig.pron"); NOM_FICHIER(fmtprop, "propername_%d.pron"); for (ilang = 0; ilang < NBTNP; ilang++) { ficprop[ilang] = strdup(fmtprop); if (ficprop[ilang] == NULL) { LogERR(1, "llp_init : ficprop[%d] %s impossible à trouver\n", ilang, ficprop[ilang]); return (-1); } sprintf(ficprop[ilang], fmtprop, ilang + 1); } NOM_FICHIER(nomrule, "rule_phon.pro"); // Initialisation phonetisation_phase2 if ((S_PH2_regles_liai = charge_regles_liaison(nomreg_l)) == NULL) return (-4); S_PH2_hlex = charge_lexique(nomhlex); // Initialisation phonetisation_phase3 SeeReg = AfFrontiere = False; siafreg = False; AfLiaison = True; set_poids_regle(0); if ((S_PH3_regsP = lecture_regles_ph(ficregP, &S_PH3_nbrP)) == NULL) return (-6); if (siafreg) { affiche_regles_ph(S_PH3_regsP, S_PH3_nbrP); exit(-1); } if ((S_PH3_regsD = lecture_regles_ph(ficregD, &S_PH3_nbrD)) == NULL) return (-7); if ((S_PH3_regsL = lecture_regles_ph(ficregL, &S_PH3_nbrL)) == NULL) return (-8); if ((S_PH3_regsE = lecture_regles_ph(ficregE, &S_PH3_nbrE)) == NULL) return (-9); for (ilang = 0; ilang < NBTNP; ilang++) if ((S_PH3_regs[ilang] = lecture_regles_ph(ficprop[ilang], S_PH3_nbr + ilang)) == NULL) { LogERR(1, "llp_init: lecture_regles_ph %s == NULL\n", ficprop[ilang]); exit(-10); } if (charge_exception(ficExep) == -1) { LogERR(1, "llp_init : ficExep %s non trouvé\n", ficExep); exit(-1); } // Initialisation phonetisation_phase4 affich = False; set_poids_regle(1); if ((S_PH4_regles = lecture_regles_ph(nomrule, &S_PH4_nbr)) == NULL) exit (-12); LogERR(3, "llp_init : Terminé\n"); tcgetattr(0, &tio); tcgetattr(0, &saved); tio.c_lflag &= ~ICANON; tio.c_lflag &= ~ECHO; tcsetattr(0, TCSANOW, &tio); tcsetattr(0, TCSANOW, &saved); llp_initialized = 1; return (0); } static void llp_fin(liste * phrases) { int ilang; // Nettoyage étiquetage liberer_tagger(S_ET_tagger); liberer_lexique(S_ET_lex); liberer_model_morpho(S_ET_morpho_np); // Nettoyage phonetisation_phase2 liberer_lexique(S_PH2_hlex); // Nettoyage phonetisation_phase3 liberer_exceptions(); liberer_regles_ph(S_PH3_regsP, S_PH3_nbrP); liberer_regles_ph(S_PH3_regsD, S_PH3_nbrD); liberer_regles_ph(S_PH3_regsL, S_PH3_nbrL); liberer_regles_ph(S_PH3_regsE, S_PH3_nbrE); for (ilang = 0; ilang < NBTNP; ilang++) liberer_regles_ph(S_PH3_regs[ilang], S_PH3_nbr[ilang]); // Nettoyage phonetisation_phase4 liberer_regles_ph(S_PH4_regles, S_PH4_nbr); return; }
Index: init.c =================================================================== RCS file: /cvsroot/biglux/LibraLux/src/init.c,v retrieving revision 1.2 diff -r1.2 init.c 51a52,53 > #include "sys/stat.h" > 101c103,104 < mkdir(prefix); --- > mkdir(prefix,S_IRWXU); > //mkdir(prefix);
Attachment:
init.c.diff.u
Description: Binary data