summaryrefslogtreecommitdiff
path: root/compat/win32/path-utils.h
blob: bba2b644080f064cb5160ce41da16841afadeeed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#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