Example #1
0
const char* path_translate(const char* path, const char* type)
{
	if (working != path)
		strcpy(working, path);
	path_translateInPlace(working, type);
	return working;
}
Example #2
0
int io_rmdir(const char* path, const char* dir)
{
	strcpy(buffer, path);
	if (strlen(buffer) > 0) 
		strcat(buffer, "/");
	strcat(buffer, dir);
	path_translateInPlace(buffer, NULL);
	return platform_rmdir(buffer);
}
Example #3
0
const char* path_absolute(const char* path)
{
	char  relative[8192];
	char* ptr;

	strcpy(relative, path);
	if (strlen(relative) == 0)
		strcpy(relative, ".");
	path_translateInPlace(relative, "posix");

	/* If the directory is already absolute I don't have to do anything */
	if (platform_isAbsolutePath(relative))
		return path;

	/* Figure out where I am currently */
	platform_getcwd(working, 8192);
	path_translateInPlace(working, "posix");

	/* Split the target path and add it in piece by piece */
	ptr = relative;
	while (ptr != NULL)
	{
		char* end = strchr(ptr, '/');
		if (end != NULL)
			*end = '\0';

		if (matches(ptr, ".."))
		{
			char* sep = strrchr(working, '/');
			if (sep != NULL)
				*sep = '\0';
		}
		else if (!matches(ptr, "."))
		{
			strcat(working, "/");
			strcat(working, ptr);
		}

		ptr = (end != NULL) ? end + 1 : NULL;
	}

	return working;
}
Example #4
0
const char* path_combine(const char* path0, const char* path1)
{
	strcpy(working, "");

	if (!matches(path0, ".") && !matches(path0, "./"))
		strcat(working, path0);

	path_translateInPlace(working, "posix");

	if (!matches(path1, "") && !matches(path1, ".") && !matches(path1, "./"))
	{
		if (strlen(working) > 0 && working[strlen(working) - 1] != '/')
			strcat(working, "/");
		strcat(working, path1);
	}

	path_translateInPlace(working, "posix");
	return working;
}
Example #5
0
const char* path_getname(const char* path)
{
	char* ptr;

	if (path == NULL)
		return NULL;

	strcpy(forpart, path);
	path_translateInPlace(forpart, "posix");

	ptr = strrchr(forpart, '/');
	return (ptr) ? ++ptr : forpart;
}
Example #6
0
const char* path_getdir(const char* path)
{
	char* ptr;

	if (path != NULL)
	{
		/* Convert path to neutral separators */
		strcpy(forpart, path);
		path_translateInPlace(forpart, "posix");

		/* Now split at last separator */
		ptr = strrchr(forpart, '/');
		if (ptr != NULL)
		{
			*ptr = '\0';
			return forpart;
		}
	}

	return "";
}
Example #7
0
const char* vs_list_refpaths(const char* name)
{
	char* path = (char*)path_absolute(name);
	path_translateInPlace(path, "windows");
	return path;
}