diff options
Diffstat (limited to 'ted.c')
-rw-r--r-- | ted.c | 27 |
1 files changed, 1 insertions, 26 deletions
@@ -264,30 +264,5 @@ static bool ted_save_all(Ted *ted) { } static void ted_full_path(Ted *ted, char const *relpath, char *abspath, size_t abspath_size) { - str_cpy(abspath, abspath_size, ted->cwd); - - while (1) { - size_t component_len = strcspn(relpath, ALL_PATH_SEPARATORS); - char const *component_end = relpath + component_len; - - size_t len = strlen(abspath); - if (abspath[len - 1] != PATH_SEPARATOR) - str_cat(abspath, abspath_size, PATH_SEPARATOR_STR); - if (component_len == 1 && relpath[0] == '.') { - // ., do nothing - } else if (component_len == 2 && relpath[0] == '.' && relpath[1] == '.') { - // .. - char *lastsep = strrchr(abspath, PATH_SEPARATOR); - if (lastsep == abspath) - lastsep[1] = '\0'; - else - lastsep[0] = '\0'; - } else { - strn_cat(abspath, abspath_size, relpath, component_len); - } - if (*component_end == 0) - break; - else - relpath = component_end + 1; - } + path_full(ted->cwd, relpath, abspath, abspath_size); } |