mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +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>
This commit is contained in:
parent
c3eb12cace
commit
c321bfc5c3
@ -1228,6 +1228,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