diff --git a/src/calc.c b/src/calc.c index e54eb01fe2a96246634e2abc83660184a3fc9ab2..79bd4ec976f025e7e12d367229c6ef492d200187 100644 --- a/src/calc.c +++ b/src/calc.c @@ -344,9 +344,13 @@ void calc_process() { strcpy(t->name, orig->name); } else { t->name = malloc(strlen(path)+strlen(name)+1); - strcpy(t->name, path); - strcat(t->name, "/"); - strcat(t->name, name); + if(strcmp(path, "/")) + strcpy(t->name, path); + if(strcmp(name, ".")) { + strcat(t->name, "/"); + strcat(t->name, name); + } else + t->name[0] = 0; } root = t; curdev = fs.st_dev; diff --git a/src/util.c b/src/util.c index 76f43d7b123355f47856a79bd9065212c536e5fe..a19fea0790f09463b39173e7e7e7ef89221f0f18 100644 --- a/src/util.c +++ b/src/util.c @@ -214,6 +214,9 @@ char *getpath(struct dir *cur) { struct dir *d, **list; int c, i; + if(!cur->name[0]) + return "/"; + c = i = 1; for(d=cur; d!=NULL; d=d->parent) { i += strlen(d->name)+1;