use last_slash in file_path
This commit is contained in:
parent
d37068cfb8
commit
047f926540
|
@ -369,9 +369,7 @@ char *find_last_slash(const char *str)
|
|||
**/
|
||||
size_t fill_pathname_slash(char *s, size_t len)
|
||||
{
|
||||
const char *slash = strrchr(s, '/');
|
||||
const char *backslash = strrchr(s, '\\');
|
||||
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
char *last_slash = find_last_slash(s);
|
||||
if (!last_slash)
|
||||
return strlcat(s, PATH_DEFAULT_SLASH(), len);
|
||||
len = strlen(s);
|
||||
|
@ -460,33 +458,26 @@ size_t fill_pathname_basedir(char *s, const char *in_path, size_t len)
|
|||
**/
|
||||
size_t fill_pathname_parent_dir_name(char *s, const char *in_dir, size_t len)
|
||||
{
|
||||
size_t _len = 0;
|
||||
char *tmp = strdup(in_dir);
|
||||
const char *slash = strrchr(tmp, '/');
|
||||
const char *backslash = strrchr(tmp, '\\');
|
||||
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
size_t _len = 0;
|
||||
char *tmp = strdup(in_dir);
|
||||
char *last_slash = find_last_slash(tmp);
|
||||
|
||||
if (last_slash && last_slash[1] == 0)
|
||||
{
|
||||
*last_slash = '\0';
|
||||
slash = strrchr(tmp, '/');
|
||||
backslash = strrchr(tmp, '\\');
|
||||
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
*last_slash = '\0';
|
||||
last_slash = find_last_slash(tmp);
|
||||
}
|
||||
|
||||
/* Cut the last part of the string (the filename) after the slash,
|
||||
leaving the directory name (or nested directory names) only. */
|
||||
if (last_slash)
|
||||
*last_slash = '\0';
|
||||
*last_slash = '\0';
|
||||
|
||||
/* Point in_dir to the address of the last slash.
|
||||
* If in_dir is NULL, it means there was no slash in tmp,
|
||||
* so use tmp as-is. */
|
||||
slash = strrchr(tmp, '/');
|
||||
backslash = strrchr(tmp, '\\');
|
||||
in_dir = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
if (!in_dir)
|
||||
in_dir = tmp;
|
||||
if (!(in_dir = find_last_slash(tmp)))
|
||||
in_dir = tmp;
|
||||
|
||||
if (in_dir && in_dir[1])
|
||||
{
|
||||
|
@ -592,14 +583,10 @@ size_t fill_str_dated_filename(char *s,
|
|||
**/
|
||||
size_t path_basedir(char *s)
|
||||
{
|
||||
const char *slash;
|
||||
const char *backslash;
|
||||
char *last_slash = NULL;
|
||||
if (!s || s[0] == '\0' || s[1] == '\0')
|
||||
return (s && s[0] != '\0') ? 1 : 0;
|
||||
slash = strrchr(s, '/');
|
||||
backslash = strrchr(s, '\\');
|
||||
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
last_slash = find_last_slash(s);
|
||||
if (last_slash)
|
||||
{
|
||||
last_slash[1] = '\0';
|
||||
|
@ -630,15 +617,10 @@ size_t path_parent_dir(char *s, size_t len)
|
|||
if (len && PATH_CHAR_IS_SLASH(s[len - 1]))
|
||||
{
|
||||
char *last_slash;
|
||||
const char *slash;
|
||||
const char *backslash;
|
||||
bool was_absolute = path_is_absolute(s);
|
||||
|
||||
s[len - 1] = '\0';
|
||||
|
||||
slash = strrchr(s, '/');
|
||||
backslash = strrchr(s, '\\');
|
||||
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
last_slash = find_last_slash(s);
|
||||
|
||||
if (was_absolute && !last_slash)
|
||||
{
|
||||
|
@ -667,9 +649,7 @@ const char *path_basename(const char *path)
|
|||
/* We cut either at the first compression-related hash,
|
||||
* or we cut at the last slash */
|
||||
const char *ptr = NULL;
|
||||
const char *slash = strrchr(path, '/');
|
||||
const char *backslash = strrchr(path, '\\');
|
||||
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
char *last_slash = find_last_slash(path);
|
||||
return ((ptr = path_get_archive_delim(path)) || (ptr = last_slash))
|
||||
? (ptr + 1) : path;
|
||||
}
|
||||
|
@ -687,9 +667,7 @@ const char *path_basename(const char *path)
|
|||
const char *path_basename_nocompression(const char *path)
|
||||
{
|
||||
/* We cut at the last slash */
|
||||
const char *slash = strrchr(path, '/');
|
||||
const char *backslash = strrchr(path, '\\');
|
||||
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
char *last_slash = find_last_slash(path);
|
||||
return (last_slash) ? (last_slash + 1) : path;
|
||||
}
|
||||
|
||||
|
@ -999,9 +977,7 @@ size_t fill_pathname_join_special(char *s,
|
|||
|
||||
if (*s)
|
||||
{
|
||||
const char *slash = strrchr(s, '/');
|
||||
const char *backslash = strrchr(s, '\\');
|
||||
char *last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
char *last_slash = find_last_slash(s);
|
||||
if (last_slash)
|
||||
{
|
||||
/* Try to preserve slash type. */
|
||||
|
@ -1327,8 +1303,6 @@ size_t fill_pathname_abbreviated_or_relative(char *s,
|
|||
**/
|
||||
void path_basedir_wrapper(char *s)
|
||||
{
|
||||
const char *slash;
|
||||
const char *backslash;
|
||||
char *last_slash = NULL;
|
||||
if (!s || s[0] == '\0' || s[1] == '\0')
|
||||
return;
|
||||
|
@ -1337,9 +1311,7 @@ void path_basedir_wrapper(char *s)
|
|||
if ((last_slash = (char*)path_get_archive_delim(s)))
|
||||
*last_slash = '\0';
|
||||
#endif
|
||||
slash = strrchr(s, '/');
|
||||
backslash = strrchr(s, '\\');
|
||||
last_slash = (!slash || (backslash > slash)) ? (char*)backslash : (char*)slash;
|
||||
last_slash = find_last_slash(s);
|
||||
if (last_slash)
|
||||
last_slash[1] = '\0';
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue