diff --git a/lab5/user/lab5/apps/init.c b/lab5/user/lab5/apps/init.c index d4db52a..7531246 100644 --- a/lab5/user/lab5/apps/init.c +++ b/lab5/user/lab5/apps/init.c @@ -320,11 +320,17 @@ void path_to_absolute(char *path) { } /** - * 路径连接,sub 必须为相对路径且不支持 .. + * 路径连接,不支持 .. */ void path_append(char *path, char *sub) { - size_t path_len = strlen(path); + // 如果 sub 为绝对路径,清空 path + if (*sub == '/') { + path[0] = '/'; + path[1] = '\0'; + while (*sub == '/') sub++; + } // 如果 path 不为空,则末尾应该有 '/' + size_t path_len = strlen(path); if (path_len > 0) { if (path[path_len - 1] == '/') { path += path_len; @@ -333,8 +339,6 @@ void path_append(char *path, char *sub) { path += ++path_len; } } - // sub 之前没有 '/' - while (*sub == '/') sub++; // 连接路径 strcpy(path, sub); path += strlen(sub);