blob: bba2b644080f064cb5160ce41da16841afadeeed [file] [log] [blame]
#ifndef WIN32_PATH_UTILS_H
#define WIN32_PATH_UTILS_H
int win32_has_dos_drive_prefix(const char *path);
#define has_dos_drive_prefix win32_has_dos_drive_prefix
int win32_skip_dos_drive_prefix(char **path);
#define skip_dos_drive_prefix win32_skip_dos_drive_prefix
static inline int win32_is_dir_sep(int c)
{
return c == '/' || c == '\\';
}
#define is_dir_sep win32_is_dir_sep
static inline char *win32_find_last_dir_sep(const char *path)
{
char *ret = NULL;
for (; *path; ++path)
if (is_dir_sep(*path))
ret = (char *)path;
return ret;
}
#define find_last_dir_sep win32_find_last_dir_sep
static inline int win32_has_dir_sep(const char *path)
{
/*
* See how long the non-separator part of the given path is, and
* if and only if it covers the whole path (i.e. path[len] is NUL),
* there is no separator in the path---otherwise there is a separator.
*/
size_t len = strcspn(path, "/\\");
return !!path[len];
}
#define has_dir_sep(path) win32_has_dir_sep(path)
int win32_offset_1st_component(const char *path);
#define offset_1st_component win32_offset_1st_component
#endif