Re: tilde_expand
- From: Leonard den Ottolander <leonard den ottolander nl>
- To: MC Devel <mc-devel gnome org>
- Subject: Re: tilde_expand
- Date: Mon, 13 Sep 2004 11:15:16 +0200
Hi,
I wrote:
> Seeking a bit of basic advise. I was wondering if passwd gets freed in
> the next example (taken from src/utilunix.c), or whether it should be
> freed explicitly.
> return g_strconcat (passwd->pw_dir, PATH_SEP_STR, q, NULL);
> }
Well, explicitly g_freeing passwd causes a segfault, so I guess for some
reason it gets freed automatically. Anyone cares to explain?
However, there is a problem expanding ~username<dir> in that code, as
the result returns an extra slash. Fix below (only the q++ is
essential):
--- src/utilunix.c.000 2004-09-03 14:40:09.000000000 +0200
+++ src/utilunix.c 2004-09-13 01:47:35.000000000 +0200
@@ -270,18 +270,18 @@ tilde_expand (const char *directory)
p = directory + 1;
- q = strchr (p, PATH_SEP);
-
/* d = "~" or d = "~/" */
if (!(*p) || (*p == PATH_SEP)) {
passwd = getpwuid (geteuid ());
q = (*p == PATH_SEP) ? p + 1 : "";
} else {
+ q = strchr (p, PATH_SEP);
if (!q) {
passwd = getpwnam (p);
} else {
name = g_strndup (p, q - p);
passwd = getpwnam (name);
+ q++;
g_free (name);
}
}
Leonard.
--
mount -t life -o ro /dev/dna /genetic/research
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]