Skip to content

Commit 9f1bcb9

Browse files
committed
Simplify conc_dir_and_name implementation for Gemini
1 parent 4dfbdf2 commit 9f1bcb9

File tree

1 file changed

+9
-30
lines changed

1 file changed

+9
-30
lines changed

src/dsk.c

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2554,40 +2554,19 @@ int true_name(char *path, size_t pathsize)
25542554

25552555
void conc_dir_and_name(char *dir, char *name, char *fname, size_t fname_size)
25562556
{
2557-
char *lf_cp1, *lf_cp2;
2557+
size_t current_len;
25582558

2559-
lf_cp1 = dir;
2560-
lf_cp2 = dir;
2559+
/* Start with the directory */
2560+
strlcpy(fname, dir, fname_size);
2561+
current_len = strlen(fname);
25612562

2562-
while (*lf_cp2 != '\0') {
2563-
switch (*lf_cp2) {
2564-
2565-
case '/':
2566-
lf_cp1 = lf_cp2;
2567-
lf_cp2++;
2568-
break;
2569-
2570-
default:
2571-
lf_cp2++;
2572-
break;
2573-
}
2574-
}
2575-
if (lf_cp1 == (lf_cp2 - 1)) {
2576-
if (lf_cp1 == (dir)) {
2577-
/* dir is a root directory. */
2578-
strlcpy(fname, "/", fname_size);
2579-
strlcat(fname, name, fname_size);
2580-
} else {
2581-
/* The trail directory is included. */
2582-
strlcpy(fname, dir, fname_size);
2583-
strlcat(fname, name, fname_size);
2584-
}
2585-
} else {
2586-
/* The trail directory is not included */
2587-
strlcpy(fname, dir, fname_size);
2563+
/* Ensure the directory has a final slash */
2564+
if ((current_len == 0) || (current_len > 0 && fname[current_len - 1] != '/')) {
25882565
strlcat(fname, "/", fname_size);
2589-
strlcat(fname, name, fname_size);
25902566
}
2567+
2568+
/* Append the name as given */
2569+
strlcat(fname, name, fname_size);
25912570
}
25922571

25932572
/*

0 commit comments

Comments
 (0)