Page 1 sur 1

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

Publié : 18 mai 2014, 07:50
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) {

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

Publié : 19 mai 2014, 19:42
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. :)

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

Publié : 19 mai 2014, 20:57
par Crayona
Est-ce que tu as essayé si ça fonctionne sous windows (et mac) ?

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

Publié : 19 mai 2014, 21:12
par tosh
Non, je n'ai pas ça sous la main pour tester.