/** * @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); }
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; } }