Ejemplo n.º 1
0
/**
 * @retval 0 if variant did not have a result
 * @retval 1 on success
 */
static int elektraResolveSystem (char variant, ElektraResolved * handle, ElektraResolveTempfile tmpDir, Key * warningsKey)
{
	// hardcoded path wins against variants for now
	if (handle->relPath[0] == '/')
	{
		/* Use absolute path */
		handle->fullPath = elektraStrDup (handle->relPath);
		elektraResolveFinishByFilename (handle, tmpDir);
		return 1;
	}
	if (handle->relPath[0] == '~')
	{
		if (elektraResolveSystemPasswd (handle, warningsKey) == -1)
		{
			return -1;
		}
		elektraResolveFinishByFilename (handle, tmpDir);
		return 1;
	}
	switch (variant)
	{
	case 'x':
		return elektraResolveSystemXDG (handle, tmpDir, warningsKey);
	case 'b':
		return elektraResolveSystemBuildin (handle, tmpDir, warningsKey);
		// TODO: also document in doc/COMPILE.md
	}
	return -1;
}
Ejemplo n.º 2
0
/**
 * @retval 0 if variant did not have a result
 * @retval 1 on success
 */
static int elektraResolveSystem (char variant, resolverHandle * p, Key * warningsKey)
{
	// hardcoded path wins against variants for now
	if (p->path[0] == '/')
	{
		/* Use absolute path */
		size_t filenameSize = strlen (p->path) + 1;
		p->filename = elektraMalloc (filenameSize);
		strcpy (p->filename, p->path);

		elektraResolveFinishByFilename (p);
		return 1;
	}
	if (p->path[0] == '~')
	{
		if (elektraResolvePasswdHome (p, warningsKey) == -1) return -1;
		elektraResolveFinishByFilename (p);
		return 1;
	}
	switch (variant)
	{
	case 'x':
		return elektraResolveSystemXDG (p, warningsKey);
	case 'b':
		return elektraResolveSystemBuildin (p, warningsKey);
		// TODO: also document in doc/COMPILE.md
	}
	return -1;
}