* mu_util_dir_expand fix issue #30: wrong use of realpath(3)

This commit is contained in:
Dirk-Jan C. Binnema 2010-12-04 19:08:23 +02:00
parent 46ba5e3a1b
commit 6a3decdc7c
3 changed files with 10 additions and 9 deletions

View File

@ -56,7 +56,7 @@ do_wordexp (const char *path)
char *dir; char *dir;
if (!path) { if (!path) {
g_debug ("%s: path is empty", __FUNCTION__); /* g_debug ("%s: path is empty", __FUNCTION__); */
return NULL; return NULL;
} }
@ -87,17 +87,17 @@ mu_util_dir_expand (const char *path)
{ {
char *dir; char *dir;
char resolved[PATH_MAX + 1]; char resolved[PATH_MAX + 1];
g_return_val_if_fail (path, NULL); g_return_val_if_fail (path, NULL);
dir = do_wordexp (path); dir = do_wordexp (path);
if (!dir) if (!dir)
return NULL; /* error */ return NULL; /* error */
/* now, resolve any symlinks, .. etc. */ /* now resolve any symlinks, .. etc. */
if (!realpath (dir, resolved)) { if (realpath (dir, resolved) == NULL) {
/* g_debug ("%s: could not get realpath for '%s': %s", */ g_debug ("%s: could not get realpath for '%s': %s",
/* __FUNCTION__, dir, strerror(errno)); */ __FUNCTION__, dir, strerror(errno));
g_free (dir); g_free (dir);
return NULL; return NULL;
} else } else

View File

@ -33,7 +33,8 @@ G_BEGIN_DECLS
gboolean mu_util_init_system (void); gboolean mu_util_init_system (void);
/** /**
* get the expanded path; ie. perform shell expansion on the path * get the expanded path; ie. perform shell expansion on the path. the
* path does not have to exist
* *
* @param path path to expand * @param path path to expand
* *

View File

@ -17,7 +17,7 @@
** **
*/ */
#ifdef HAVE_CONFIG_H #if HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif /*HAVE_CONFIG_H*/ #endif /*HAVE_CONFIG_H*/
@ -37,7 +37,7 @@ test_mu_util_dir_expand_01 (void)
got = mu_util_dir_expand ("~/Desktop"); got = mu_util_dir_expand ("~/Desktop");
expected = g_strdup_printf ("%s%cDesktop", expected = g_strdup_printf ("%s%cDesktop",
getenv("HOME"), G_DIR_SEPARATOR); getenv("HOME"), G_DIR_SEPARATOR);
g_assert_cmpstr (got,==,expected); g_assert_cmpstr (got,==,expected);