Pages : 1
#1 Le 06/01/2008, à 00:40
- alexises
je comprend pas une fonction
boànjour
je travail sur l'empacktage d'un loçgiciel j'ai extret une fonction
FILE* open_el_ini (const char *mode)
{
#ifdef ENGLISH
#ifdef WINDOWS
return my_fopen ("el.ini", mode);
#else
char el_ini[256];
char el_tmp[256];
FILE *f;
safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", configdir);
f= my_fopen (el_ini, mode); // try local file first
if (f == NULL)
{
FILE *f2;
int flen;
char *data;
//OK, no local el.ini - copy the defaults
safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", datadir);
f= fopen(el_ini, mode);
if(f == NULL)
{
return NULL;//Shit, no global el.ini either? Fortunately we'll write one on exit...
}
safe_snprintf(el_tmp, sizeof (el_tmp), "%s/el.ini", configdir);
f2= my_fopen (el_tmp, "w");
if(f2 == NULL) {
//Hmm... we cannot create a file in ~/.elc/
fclose(f);
return NULL;
}
//Copy the data from the global el.ini to the ~/.elc/el.ini
fseek(f, 0, SEEK_END);
flen=ftell(f);
fseek(f, 0, SEEK_SET);
data=calloc(flen+1, sizeof(char));
fread(data, flen, sizeof(char), f);
fwrite(data, flen, sizeof(char), f2);
fclose(f);
fclose(f2);
free(data);
//Now load it as read-only
safe_snprintf(el_ini, sizeof (el_ini), "%s/el.ini", configdir);
f= my_fopen(el_ini, mode);
}
if(f) {
int fd = fileno (f);
struct stat statbuff;
fstat (fd, &statbuff);
/* Set perms to 600 on el_ini if they are anything else */
if (statbuff.st_mode != (S_IRUSR|S_IWUSR))
fchmod (fd, S_IRUSR|S_IWUSR);
}
return f;
#endif //WINDOWS
#else //ENGLISH
char el_ini[256];
char el_tmp[256];
FILE *f;
mode_t modes;
#ifdef WINDOWS
safe_snprintf (el_ini, sizeof (el_ini), "./data/config/el.ini");
#else //WINDOWS
safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", configdir);
#endif //WINDOWS
f= my_fopen (el_ini, mode); // try local file first
if (f == NULL)
{
FILE *f2;
int flen;
char *data;
//OK, no local el.ini - copy the defaults
#ifdef WINDOWS
safe_snprintf (el_ini, sizeof (el_ini), "./data/config/el.ini");
#else //WINDOWS
safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", datadir);
#endif //WINDOWS
f= fopen(el_ini, mode);
if(f == NULL)
{
return NULL;//Shit, no global el.ini either? Fortunately we'll write one on exit...
}
#ifdef WINDOWS
safe_snprintf(el_tmp, sizeof (el_tmp), ".data/config/el.ini");
#else //WINDOWS
safe_snprintf(el_tmp, sizeof (el_tmp), "%s/el.ini", configdir);
#endif //WINDOWS
f2= my_fopen (el_tmp, "w");
if(f2 == NULL) {
//Hmm... we cannot create a file in ~/.lec/
fclose(f);
return NULL;
}
//Copy the data from the global el.ini to the ~/.lec/el.ini
fseek(f, 0, SEEK_END);
flen=ftell(f);
fseek(f, 0, SEEK_SET);
data=calloc(flen+1, sizeof(char));
fread(data, flen, sizeof(char), f);
fwrite(data, flen, sizeof(char), f2);
fclose(f);
fclose(f2);
free(data);
//Now load it as read-only
#ifdef WINDOWS
safe_snprintf(el_ini, sizeof (el_ini), ".data/config/el.ini");
#else //WINDOWS
safe_snprintf(el_ini, sizeof (el_ini), "%s/el.ini", configdir);
#endif //WINDOWS
f= my_fopen(el_ini, mode);
}
#ifndef WINDOWS
if(f) {
int fd = fileno (f);
struct stat statbuff;
fstat (fd, &statbuff);
/* Set perms to 600 on el_ini if they are anything else */
if (statbuff.st_mode != (S_IRUSR|S_IWUSR))
fchmod (fd, S_IRUSR|S_IWUSR);
}
#endif //WIN
return f;
#endif //ENGLISH
}
qui ouvre le fichier mais je 'narrive pas à la modificier correctement pour qu'il n'ouvre pas ce fichier localement mais dans un dossier précis
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#2 Le 06/01/2008, à 01:25
- telliam
Re : je comprend pas une fonction
il y a pas mal de code sous flag de compilation : px tu fournir les flags?
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#3 Le 06/01/2008, à 02:55
- ipingu
Re : je comprend pas une fonction
Si tu pouvais être plus clair sur exactement ce que tu veux, je ne sais pas toute la diffèrence entre ouvrir un fichier local et un fichier précis ?
Ce que tu veux est changer le fichier qui sera ouvert ? Si c'est cela, peut-être, il faut juste que tu changes les lignes ou le "el.ini" apparaît, le plus propre serait de faire un tableau de chars qui contiennent le nom du fichier.
Enfin, je peux pas t'aider vraiment avec si peu d'informations ... GL )
Hors ligne
#4 Le 06/01/2008, à 13:06
- alexises
Re : je comprend pas une fonction
c'est ca que je veux et je te trouve les flag toput de suite
#ifndef ENGLISH
extern int bip_mp;
#endif //ENGLISH
je trouve pas l'autre mais je crois pas qu'il soit utile
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#5 Le 06/01/2008, à 13:39
- rotototo
Re : je comprend pas une fonction
je pense que tu devrais modifier a cet endroit :
safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", configdir);
genre si tu veux le fichier toto.ini que se trouve dans /home/toto/init/
tu modifie comme ca :
safe_snprintf (el_ini, sizeof (el_ini), "%s/toto.ini","/home/toto/init");
#6 Le 06/01/2008, à 13:52
- alexises
Re : je comprend pas une fonction
non je veux pas le fichier toto.ini mais le fichier el.ini qui est situer ailleur qe à coté du fichier exécutable (dans un autre dossier)
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#7 Le 06/01/2008, à 13:59
- rotototo
Re : je comprend pas une fonction
modifie donc configdir pour pointer sur ton repertoire .
#8 Le 06/01/2008, à 16:04
- alexises
Re : je comprend pas une fonction
dans la makefile ?
tu eput me donner plus d'infos je suis meilleur en packadging que en c
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#9 Le 06/01/2008, à 17:01
- ipingu
Re : je comprend pas une fonction
Pas à toucher au Makefile, cela concerne le code C ici.
Trouve l'endroit ou la variable configdir est initialisé, apparement c'est une variable globale, donc en dehors de la fonction. Et initialise la comme tu veux.
Hors ligne
#10 Le 06/01/2008, à 17:08
- alexises
Re : je comprend pas une fonction
arf il y en as pas mal
alexises@alexises-legeek-desktop:~/Bureau/packadhing/landeseternelles-1.5$ grep -i "configdir" *
CHANGES:Have windows use configdir & data dir, but just deault to current
chat.c: safe_snprintf (file, sizeof (file), "%slanguages/%s/strings/channels.xml", configdir, lang);
chat.c: safe_snprintf (file, sizeof (file), "%slanguages/en/strings/channels.xml", configdir);
counters.c: safe_snprintf(filename, sizeof(filename), "%s/counters_%s.dat", configdir, username);
elconfig.c: safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", configdir);
elconfig.c: safe_snprintf(el_tmp, sizeof (el_tmp), "%s/el.ini", configdir);
elconfig.c: safe_snprintf(el_ini, sizeof (el_ini), "%s/el.ini", configdir);
elconfig.c: safe_snprintf (el_ini, sizeof (el_ini), "%s/el.ini", configdir);
elconfig.c: safe_snprintf(el_tmp, sizeof (el_tmp), "%s/el.ini", configdir);
elconfig.c: safe_snprintf(el_ini, sizeof (el_ini), "%s/el.ini", configdir);
elmemory.c: safe_snprintf(path, sizeof(path), "%s/elmemory.log", configdir);
errors.c: safe_snprintf(error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf(error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf(error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf(error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf (error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf (error_log, sizeof(error_log), "%serror_log.txt", configdir);
errors.c: safe_snprintf(func_log, sizeof(func_log), "%sfunction_log.txt", configdir);
errors.c: safe_snprintf(func_log, sizeof(func_log), "%sfunction_log.txt", configdir);
errors.c: safe_snprintf(connection_log, sizeof(connection_log), "%sconnection_log.txt", configdir);
errors.c: safe_snprintf(connection_log, sizeof(connection_log), "%sconnection_log.txt", configdir);
errors.c: safe_snprintf(connection_log, sizeof(connection_log), "%sconnection_log.txt", configdir);
errors.c: safe_snprintf(connection_log, sizeof(connection_log), "%sconnection_log.txt", configdir);
filter.c: safe_snprintf (local_filters, sizeof (local_filters), "%s/local_filters.txt", configdir);
filter.c: safe_snprintf (local_filters, sizeof (local_filters), "%s/local_filters.txt", configdir);
filter.c: safe_snprintf (local_filters, sizeof (local_filters), "%s/local_filters.txt", configdir);
ignore.c: safe_snprintf(local_ignores, sizeof(local_ignores), "%slocal_ignores.txt", configdir);
ignore.c: safe_snprintf(local_ignores, sizeof(local_ignores), "%slocal_ignores.txt", configdir);
ignore.c: safe_snprintf(local_ignores, sizeof(local_ignores), "%slocal_ignores.txt", configdir);
init.c:char configdir[256]="./";
init.c: my_strncp ( configdir, getenv ("HOME") , sizeof(configdir));
init.c: safe_strcat (configdir, "/.elc/", sizeof(configdir));
init.c: safe_strcat (configdir, "/.lec/", sizeof(configdir));
init.c: safe_strcat (configdir, "/Library/Application\ Support/Eternal\ Lands/", sizeof(configdir));
init.c: d = opendir (configdir);
init.c: mkdir (configdir, 0700);
init.c: /* Set perms to 700 on configdir if they anything else */
init.c: safe_snprintf(el_cfg, sizeof(el_cfg), "%sel.cfg", configdir);
init.c: safe_snprintf(el_cfg, sizeof(el_cfg), "%sel.cfg", configdir);
init.c: safe_snprintf(el_cfg, sizeof(el_cfg), "%sel.cfg", configdir);
init.c: safe_snprintf(el_cfg, sizeof(el_cfg), "%sel.cfg", configdir);
init.h:extern char configdir[256]; /*!< the default directory where we look for configuration files */
interface.c: safe_snprintf (marks_file, sizeof(marks_file), "%s/%s.txt", configdir, strrchr (map_file_name,'/') + 1);
keys.c: safe_snprintf (key_ini, sizeof (key_ini), "%s/key.ini", configdir);
map_io.c: safe_snprintf (marks_file, sizeof (marks_file), "%s%s.txt", configdir, mapname + 1);
misc.c: safe_snprintf (fname, sizeof (fname), "%sscreenshots", configdir);
misc.c: safe_snprintf (fname, sizeof (fname), "%sscreenshots", configdir);
notepad.c: safe_snprintf (file, sizeof (file), "%snotes.xml", configdir);
notepad.c: safe_snprintf (file, sizeof (file), "%snotes.xml", configdir);
questlog.c: safe_snprintf (questlog_ini, sizeof (questlog_ini), "%s/quest.log", configdir);
questlog.c: snprintf (questlog_ini, sizeof (questlog_ini), "%s/%s_quest.log", configdir, temp);
questlog.c: strcpy(questlog_ini, configdir);
questlog.c: safe_snprintf (questlog_ini, sizeof (questlog_ini), "%s/quest.log", configdir);
spells.c: safe_snprintf (fname, sizeof (fname), "%s/spells_%s.dat", configdir, username);
spells.c: safe_snprintf (fname, sizeof (fname), "%s/spells_%s.dat", configdir, username);
spells.c: safe_snprintf (fname, sizeof (fname), "%s/spells_%s.dat", configdir, username);
spells.c: snprintf (fname, sizeof (fname), "%s/spells_%s.dat", configdir, username);
text.c: safe_snprintf (chat_log_file, sizeof (chat_log_file), "%s/chat_log.txt", configdir);
text.c: safe_snprintf (srv_log_file, sizeof (srv_log_file), "%s/srv_log.txt", configdir);
text.c: safe_snprintf (chat_log_file, sizeof (chat_log_file), "%s/chat_log_%s.txt", configdir,username_str);
text.c: safe_snprintf (srv_log_file, sizeof (srv_log_file), "%s/srv_log_%s.txt", configdir,username_str);
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
#11 Le 06/01/2008, à 18:33
- ipingu
Re : je comprend pas une fonction
init.c:char configdir[256]="./";
Mets le dossier que tu veux à la place de "./".
Hors ligne
#12 Le 07/01/2008, à 18:10
- alexises
Re : je comprend pas une fonction
merchi tonton vien me faire un gris bisous
/!\ aveugle ne pas matraquer /!\
¨¨¨ ¨¨¨
il est ou le bouton poster ?
Hors ligne
Pages : 1