summaryrefslogtreecommitdiffstats
path: root/compat/win32/path-utils.h
blob: 65fa3b9263a47c2dfaad4a110c253cbaae88fc7b (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
#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
#define is_dir_sep is_xplatform_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