aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bb.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/bb.c b/bb.c
index a9059a9..5a38693 100644
--- a/bb.c
+++ b/bb.c
@@ -744,7 +744,7 @@ entry_t* load_entry(bb_t *bb, const char *path)
strcpy(pbuf, bb->path);
strcat(pbuf, path);
}
- if (pbuf[strlen(pbuf)-1] == '/')
+ if (pbuf[strlen(pbuf)-1] == '/' && pbuf[1])
pbuf[strlen(pbuf)-1] = '\0';
// Check for pre-existing:
@@ -768,9 +768,13 @@ entry_t* load_entry(bb_t *bb, const char *path)
char *end = stpcpy(entry->fullname, pbuf);
if (linkpathlen >= 0)
entry->linkname = strcpy(end + 1, linkbuf);
- entry->name = strrchr(entry->fullname, '/');
- if (!entry->name) err("No slash found in '%s'", entry->fullname);
- ++entry->name;
+ if (strcmp(entry->fullname, "/") == 0) {
+ entry->name = entry->fullname;
+ } else {
+ entry->name = strrchr(entry->fullname, '/');
+ if (!entry->name) err("No slash found in '%s' from '%s'", entry->fullname, path);
+ ++entry->name;
+ }
if (S_ISLNK(filestat.st_mode))
entry->linkedmode = linkedstat.st_mode;
entry->info = filestat;