#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
