Lines Matching refs:path

48 static int skip_dotdir_if_any(const char *path[], int has_parent);
49 static char * try_replace_tilde(const char path[]);
50 static char * find_ext_dot(const char path[]);
53 chosp(char path[]) in chosp() argument
57 if(path[0] == '\0') in chosp()
62 len = strlen(path); in chosp()
64 if(path[len - 1] == '/') in chosp()
66 if(path[len - 1] == '/' || path[len - 1] == '\\') in chosp()
69 path[len - 1] = '\0'; in chosp()
80 path_starts_with(const char path[], const char prefix[]) in path_starts_with() argument
88 return (path[0] == '/'); in path_starts_with()
96 return strnoscmp(path, prefix, len) == 0 in path_starts_with()
97 && (path[len] == '\0' || path[len] == '/'); in path_starts_with()
209 skip_dotdir_if_any(const char *path[], int has_parent) in skip_dotdir_if_any() argument
214 while((*path)[dot_count] == '.') in skip_dotdir_if_any()
228 tail = &(*path)[dot_count]; in skip_dotdir_if_any()
238 *path += dot_count - ((*path)[dot_count] == '\0' ? 1 : 0); in skip_dotdir_if_any()
245 make_rel_path(const char path[], const char base[]) in make_rel_path() argument
250 if(path[1] == ':' && base[1] == ':' && path[0] != base[0]) in make_rel_path()
252 canonicalize_path(path, buf, sizeof(buf)); in make_rel_path()
260 if(os_realpath(path, path_real) == path_real) in make_rel_path()
262 path = path_real; in make_rel_path()
269 const char *p = path, *b = base; in make_rel_path()
277 p = path + strlen(path); in make_rel_path()
280 if(p - path != b - base || strnoscmp(path, base, p - path) != 0) in make_rel_path()
314 is_path_absolute(const char *path) in is_path_absolute() argument
317 if(isalpha(path[0]) && path[1] == ':') in is_path_absolute()
319 if(path[0] == '/' && path[1] == '/') in is_path_absolute()
322 return (path[0] == '/'); in is_path_absolute()
326 is_root_dir(const char *path) in is_root_dir() argument
329 if(isalpha(path[0]) && stroscmp(path + 1, ":/") == 0) in is_root_dir()
332 if(path[0] == '/' && path[1] == '/' && path[2] != '\0') in is_root_dir()
334 char *p = strchr(path + 2, '/'); in is_root_dir()
339 return (path[0] == '/' && path[1] == '\0'); in is_root_dir()
343 is_unc_root(const char *path) in is_unc_root() argument
346 if(is_unc_path(path) && path[2] != '\0') in is_unc_root()
348 char *p = strchr(path + 2, '/'); in is_unc_root()
438 replace_home_part(const char path[]) in replace_home_part() argument
440 char *result = replace_home_part_strict(path); in replace_home_part()
449 replace_home_part_strict(const char path[]) in replace_home_part_strict() argument
455 if(strnoscmp(path, cfg.home_dir, len) == 0 && in replace_home_part_strict()
456 (path[len] == '\0' || path[len] == '/')) in replace_home_part_strict()
458 strncat(strcpy(buf, "~"), path + len, sizeof(buf) - strlen(buf) - 1); in replace_home_part_strict()
462 copy_str(buf, sizeof(buf), path); in replace_home_part_strict()
469 expand_tilde(const char path[]) in expand_tilde() argument
471 char *const expanded_path = try_replace_tilde(path); in expand_tilde()
472 if(expanded_path == path) in expand_tilde()
474 return strdup(path); in expand_tilde()
480 replace_tilde(char path[]) in replace_tilde() argument
482 char *const expanded_path = try_replace_tilde(path); in replace_tilde()
483 if(expanded_path != path) in replace_tilde()
485 free(path); in replace_tilde()
493 try_replace_tilde(const char path[]) in try_replace_tilde() argument
502 if(path[0] != '~') in try_replace_tilde()
504 return (char *)path; in try_replace_tilde()
507 if(path[1] == '\0' || path[1] == '/') in try_replace_tilde()
510 (path[1] == '/') ? (path + 2) : ""); in try_replace_tilde()
515 if((p = strchr(path, '/')) == NULL) in try_replace_tilde()
517 p = path + strlen(path); in try_replace_tilde()
518 copy_str(name, sizeof(name), path + 1); in try_replace_tilde()
522 copy_str(name, p - (path + 1) + 1, path + 1); in try_replace_tilde()
528 return (char *)path; in try_replace_tilde()
536 return (char *)path; in try_replace_tilde()
541 get_last_path_component(const char path[]) in get_last_path_component() argument
543 char *slash = strrchr(path, '/'); in get_last_path_component()
546 slash = (char *)path; in get_last_path_component()
551 while(slash > path && slash[0] == '/') in get_last_path_component()
556 while(slash > path && slash[-1] != '/') in get_last_path_component()
569 remove_last_path_component(char path[]) in remove_last_path_component() argument
574 while(ends_with_slash(path)) in remove_last_path_component()
576 chosp(path); in remove_last_path_component()
579 slash = strrchr(path, '/'); in remove_last_path_component()
583 path[0] = '\0'; in remove_last_path_component()
590 if(!is_root_dir(path)) in remove_last_path_component()
597 is_path_well_formed(const char *path) in is_path_well_formed() argument
600 return strchr(path, '/') != NULL; in is_path_well_formed()
602 return is_unc_path(path) || (strlen(path) >= 2 && path[1] == ':' && in is_path_well_formed()
603 drive_exists(path[0])); in is_path_well_formed()
608 ensure_path_well_formed(char *path) in ensure_path_well_formed() argument
610 if(is_path_well_formed(path)) in ensure_path_well_formed()
616 strcpy(path, "/"); in ensure_path_well_formed()
618 strcpy(path, env_get("SYSTEMDRIVE")); in ensure_path_well_formed()
619 strcat(path, "/"); in ensure_path_well_formed()
624 to_canonic_path(const char path[], const char base[], char buf[], in to_canonic_path() argument
627 if(!is_path_absolute(path)) in to_canonic_path()
633 snprintf(full_path, sizeof(full_path), "%s/%s", base, path); in to_canonic_path()
638 canonicalize_path(path, buf, buf_len); in to_canonic_path()
648 contains_slash(const char *path) in contains_slash() argument
650 char *slash_pos = strchr(path, '/'); in contains_slash()
653 slash_pos = strchr(path, '\\'); in contains_slash()
659 find_slashr(const char *path) in find_slashr() argument
661 char *result = strrchr(path, '/'); in find_slashr()
664 result = strrchr(path, '\\'); in find_slashr()
670 cut_extension(char path[]) in cut_extension() argument
675 if((ext = strrchr(path, '.')) == NULL) in cut_extension()
676 return path + strlen(path); in cut_extension()
679 if((e = strrchr(path, '.')) != NULL && stroscmp(e + 1, "tar") == 0) in cut_extension()
690 split_ext(char path[], int *root_len, const char **ext_pos) in split_ext() argument
692 char *const dot = find_ext_dot(path); in split_ext()
696 const size_t len = strlen(path); in split_ext()
698 *ext_pos = path + len; in split_ext()
706 *root_len = dot - path; in split_ext()
710 get_ext(const char path[]) in get_ext() argument
712 char *const dot = find_ext_dot(path); in get_ext()
716 return (char *)path + strlen(path); in get_ext()
725 find_ext_dot(const char path[]) in find_ext_dot() argument
727 const char *const slash = strrchr(path, '/'); in find_ext_dot()
728 char *const dot = strrchr(path, '.'); in find_ext_dot()
732 || dot == path in find_ext_dot()
739 exclude_file_name(char path[]) in exclude_file_name() argument
741 if(path_exists(path, DEREF) && !is_valid_dir(path)) in exclude_file_name()
743 remove_last_path_component(path); in exclude_file_name()
748 is_parent_dir(const char path[]) in is_parent_dir() argument
750 return path[0] == '.' && path[1] == '.' && in is_parent_dir()
751 ((path[2] == '/' && path[3] == '\0') || path[2] == '\0'); in is_parent_dir()
762 find_cmd_in_path(const char cmd[], size_t path_len, char path[]) in find_cmd_in_path() argument
778 if(path != NULL) in find_cmd_in_path()
780 copy_str(path, path_len, tmp_path); in find_cmd_in_path()
820 is_unc_path(const char path[]) in is_unc_path() argument
822 return (path[0] == '/' && path[1] == '/' && path[2] != '/'); in is_unc_path()
826 system_to_internal_slashes(char path[]) in system_to_internal_slashes() argument
828 replace_char(path, '\\', '/'); in system_to_internal_slashes()
832 internal_to_system_slashes(char path[]) in internal_to_system_slashes() argument
834 replace_char(path, '/', '\\'); in internal_to_system_slashes()