Index: ./src/util/storage.c =================================================================== RCS file: /var/cvs/GNUnet/GNUnet/src/util/storage.c,v retrieving revision 1.105 diff -U3 -r1.105 storage.c --- ./src/util/storage.c 20 Jan 2003 06:59:57 -0000 1.105 +++ ./src/util/storage.c 21 Jan 2003 05:28:30 -0000 @@ -159,45 +159,40 @@ char * expandFileName(const char * fil) { char * fm; char * fn; + char *fil_ptr; if (fil == NULL) return NULL; - if (fil[0] == '~') { - /* char dbg[1000]; */ - - fm = getenv("HOME"); - if (fm == NULL) - fm = "$HOME"; /* keep it symbolic to show error to user! */ - - /* strcpy(dbg, - "expandFileName: "); - strcat(dbg, fm); - strcat(dbg, fil); */ - fn = xmalloc(strlen(fm) + strlen(fil) + 1, - /*dbg */"expandFileName: "); - fn[0] = 0; - strcat(fn, fm); - strcat(fn, "/"); - strcat(fn, &fil[1]); /* do not copy '~' */ - return fn; - } if (fil[0] == '/') { /* absolute path, just copy */ - fn = xmalloc(strlen(fil) + 1, - "expandFileName: fn (2)"); - strcpy(fn, fil); - return fn; + return(strdup(fil)); + } + else if (fil[0] == '~') { + fm = getenv("HOME"); + if (fm == NULL) { + /* keep it symbolic to show error to user! */ + fm = "$HOME"; + } + + /* do not copy '~' */ + fil_ptr = fil + 1; + + /* skip over dir seperator to be consistent */ + if (fil_ptr[0] == '/') { + fil_ptr++; + } + } else { + fm = getenv("PWD"); + if (fm == NULL) + fm = "$PWD"; } - fm = getenv("PWD"); - if (fm == NULL) - fm = "$PWD"; - fn = xmalloc(strlen(fm) + 1 + strlen(fil) + 1, - "expandFileName: fn (3)"); - fn[0] = 0; - strcat(fn, fm); - strcat(fn, "/"); - strcat(fn, fil); + + fn = xmalloc(strlen(fm) + 1 + strlen(fil_ptr + 1), + /*dbg */"expandFileName: "); + + sprintf(fn, "%s/%s", fm, fil_ptr); + return fn; }