mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
Add virFileMakeParentPath helper function
Add a helper function which takes a file path and ensures
that all directory components leading up to the file exist.
IOW, it strips the filename part of the path and passes
the result to virFileMakePath.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit c321bfc5c3
)
This commit is contained in:
parent
d8074fbf29
commit
7289743c01
@ -1216,6 +1216,7 @@ virFileIsMountPoint;
|
||||
virFileLinkPointsTo;
|
||||
virFileLock;
|
||||
virFileLoopDeviceAssociate;
|
||||
virFileMakeParentPath;
|
||||
virFileMakePath;
|
||||
virFileMakePathWithMode;
|
||||
virFileMatchesNameSuffix;
|
||||
|
@ -2340,6 +2340,35 @@ cleanup:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virFileMakeParentPath(const char *path)
|
||||
{
|
||||
char *p;
|
||||
char *tmp;
|
||||
int ret = -1;
|
||||
|
||||
VIR_DEBUG("path=%s", path);
|
||||
|
||||
if (VIR_STRDUP(tmp, path) < 0) {
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((p = strrchr(tmp, '/')) == NULL) {
|
||||
errno = EINVAL;
|
||||
goto cleanup;
|
||||
}
|
||||
*p = '\0';
|
||||
|
||||
ret = virFileMakePathHelper(tmp, 0777);
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Build up a fully qualified path for a config file to be
|
||||
* associated with a persistent guest or network */
|
||||
char *
|
||||
|
@ -198,6 +198,7 @@ int virDirCreate(const char *path, mode_t mode, uid_t uid, gid_t gid,
|
||||
int virFileMakePath(const char *path) ATTRIBUTE_RETURN_CHECK;
|
||||
int virFileMakePathWithMode(const char *path,
|
||||
mode_t mode) ATTRIBUTE_RETURN_CHECK;
|
||||
int virFileMakeParentPath(const char *path) ATTRIBUTE_RETURN_CHECK;
|
||||
|
||||
char *virFileBuildPath(const char *dir,
|
||||
const char *name,
|
||||
|
Loading…
Reference in New Issue
Block a user