lab5: path_append 支持 sub 为绝对路径

This commit is contained in:
KAAAsS 2022-04-21 14:33:12 +08:00
parent 495c7c195f
commit 50da90a75f
Signed by: KAAAsS
GPG Key ID: D22F53AF662411FE

View File

@ -320,11 +320,17 @@ void path_to_absolute(char *path) {
} }
/** /**
* sub .. * ..
*/ */
void path_append(char *path, char *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 不为空,则末尾应该有 '/' // 如果 path 不为空,则末尾应该有 '/'
size_t path_len = strlen(path);
if (path_len > 0) { if (path_len > 0) {
if (path[path_len - 1] == '/') { if (path[path_len - 1] == '/') {
path += path_len; path += path_len;
@ -333,8 +339,6 @@ void path_append(char *path, char *sub) {
path += ++path_len; path += ++path_len;
} }
} }
// sub 之前没有 '/'
while (*sub == '/') sub++;
// 连接路径 // 连接路径
strcpy(path, sub); strcpy(path, sub);
path += strlen(sub); path += strlen(sub);