[patch] afficher le chemin complet au dossier de données

Crayona
Messages : 457
Inscription : 24 juin 2012, 18:53

[patch] afficher le chemin complet au dossier de données

Message par Crayona »

Le client affiche le chemin d'accès au dossier de données dans la ligne "Tes fichiers de données sont stockés dans...", mais la valeur par défaut est le chemin relatif "./", qui n'est pas très utile. Ce patch fait afficher le chemin absolu: datadir_realpath.patch

Code : Tout sélectionner

diff --git a/init.c b/init.c
index 87e2776..45299d0 100644
--- a/init.c
+++ b/init.c
@@ -1015,7 +1015,8 @@ void init_stuff()
 	int seed;
 	char file_name[250];
 	int i;
-	char config_location[300];
+	char config_location[1000];
+	char *datadir_path;
 	const char * cfgdir;
 #ifndef ENGLISH
 	Uint8	str[256];
@@ -1413,7 +1414,10 @@ void init_stuff()
 	draw_scene_timer= SDL_AddTimer (1000/(18*4), my_timer, NULL);
 	misc_timer= SDL_AddTimer (500, check_misc, NULL);
 
-	safe_snprintf(config_location, sizeof(config_location), datadir_location_str, datadir);
+	if (!(datadir_path = realpath(datadir, NULL)))
+		datadir_path = strdup(datadir);
+	safe_snprintf(config_location, sizeof(config_location), datadir_location_str, datadir_path);
+	free(datadir_path);
 	LOG_TO_CONSOLE(c_green4, config_location);
 	cfgdir = get_path_config();
 	if (cfgdir != NULL) {

Avatar de l’utilisateur
tosh
Messages : 2379
Inscription : 01 sept. 2007, 01:09
Localisation : Quelque part sur la planete Terre.

Re: [patch] afficher le chemin complet au dossier de données

Message par tosh »

Salut,
d'après le man de realpath :

Code : Tout sélectionner

CONFORMING TO
       4.4BSD, POSIX.1-2001.

       POSIX.1-2001 says that the behavior if resolved_path is NULL is implementation-defined.  POSIX.1-2008 specifies the behavior described in this page.
Donc ce code ne devrait pas fonctionner sur Windows, et tous les systèmes non-POSIX. De plus, même sur certains systèmes POSIX, si le deuxième argument est NULL, on a un cas indéfini.

Autre chose : ici on est pas vraiment obligé d'augmenter la taille du buffer config_location. Et plutôt que d'utiliser une variable arbitraire comme 300 ou 1000, ça me paraît plus propre d'utiliser la constante PATH_MAX disponible dans limits.h, et qui a le mérite d'être standard.

En bref, si on choisi intégrer ce code au client, il faudrait quelque chose de standard pour bien faire. :)
Guerrier dans l'âme.

Membre de l'équipe.
Développeur Client & Serveur.

Crayona
Messages : 457
Inscription : 24 juin 2012, 18:53

Re: [patch] afficher le chemin complet au dossier de données

Message par Crayona »

Est-ce que tu as essayé si ça fonctionne sous windows (et mac) ?

Avatar de l’utilisateur
tosh
Messages : 2379
Inscription : 01 sept. 2007, 01:09
Localisation : Quelque part sur la planete Terre.

Re: [patch] afficher le chemin complet au dossier de données

Message par tosh »

Non, je n'ai pas ça sous la main pour tester.
Guerrier dans l'âme.

Membre de l'équipe.
Développeur Client & Serveur.

Répondre