351 |
mu_tilde_expansion (const char *ref, const char *delim, const char *homedir) |
mu_tilde_expansion (const char *ref, const char *delim, const char *homedir) |
352 |
{ |
{ |
353 |
char *p = strdup (ref); |
char *p = strdup (ref); |
354 |
|
char *home = NULL; |
355 |
|
|
356 |
if (*p == '~') |
if (*p == '~') |
357 |
{ |
{ |
361 |
char *s; |
char *s; |
362 |
if (!homedir) |
if (!homedir) |
363 |
{ |
{ |
364 |
homedir = mu_get_homedir (); |
home = mu_get_homedir (); |
365 |
if (!homedir) |
if (!home) |
366 |
return NULL; |
return NULL; |
367 |
|
homedir = home; |
368 |
} |
} |
369 |
s = calloc (strlen (homedir) + strlen (p) + 1, 1); |
s = calloc (strlen (homedir) + strlen (p) + 1, 1); |
370 |
strcpy (s, homedir); |
strcpy (s, homedir); |
371 |
strcat (s, p); |
strcat (s, p); |
372 |
free (--p); |
free (--p); |
373 |
p = s; |
p = s; |
|
free (homedir); |
|
374 |
} |
} |
375 |
else |
else |
376 |
{ |
{ |
398 |
p--; |
p--; |
399 |
} |
} |
400 |
} |
} |
401 |
|
if (home) |
402 |
|
free (home); |
403 |
return p; |
return p; |
404 |
} |
} |
405 |
|
|