示例#1
0
/**
 * @brief Given filename, calcualtes dirname+tempfile
 *
 * @param p resolverHandle with filename set
 */
static void elektraResolveFinishByFilename(resolverHandle *p)
{
	size_t filenameSize = strlen(p->filename);
	p->dirname = elektraMalloc (filenameSize);
	char * dup = strdup(p->filename);
	//dirname might change the buffer, so better work on a copy
	strcpy (p->dirname, dirname(dup));
	elektraFree (dup);

	p->tempfile = elektraMalloc (filenameSize + POSTFIX_SIZE);
	elektraGenTempFilename(p->tempfile, p->filename);
}
示例#2
0
static void elektraResolveFinishByFilename (ElektraResolved * handle, ElektraResolveTempfile tmpDir)
{
	size_t filenameSize = strlen (handle->fullPath);
	char * dir = elektraMalloc (filenameSize);
	char * dup = elektraStrDup (handle->fullPath);
	strcpy (dir, dirname (dup));
	elektraFree (dup);
	handle->dirname = dir;

	switch (tmpDir)
	{
	case ELEKTRA_RESOLVER_TEMPFILE_NONE:
		return;
	case ELEKTRA_RESOLVER_TEMPFILE_SAMEDIR:
		elektraGenTempFilename (handle, tmpDir);
		return;
	case ELEKTRA_RESOLVER_TEMPFILE_TMPDIR:
		elektraGenTempFilename (handle, tmpDir);
		return;
	}
}