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;
|
virFileLinkPointsTo;
|
||||||
virFileLock;
|
virFileLock;
|
||||||
virFileLoopDeviceAssociate;
|
virFileLoopDeviceAssociate;
|
||||||
|
virFileMakeParentPath;
|
||||||
virFileMakePath;
|
virFileMakePath;
|
||||||
virFileMakePathWithMode;
|
virFileMakePathWithMode;
|
||||||
virFileMatchesNameSuffix;
|
virFileMatchesNameSuffix;
|
||||||
|
@ -2340,6 +2340,35 @@ cleanup:
|
|||||||
return ret;
|
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
|
/* Build up a fully qualified path for a config file to be
|
||||||
* associated with a persistent guest or network */
|
* associated with a persistent guest or network */
|
||||||
char *
|
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 virFileMakePath(const char *path) ATTRIBUTE_RETURN_CHECK;
|
||||||
int virFileMakePathWithMode(const char *path,
|
int virFileMakePathWithMode(const char *path,
|
||||||
mode_t mode) ATTRIBUTE_RETURN_CHECK;
|
mode_t mode) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
int virFileMakeParentPath(const char *path) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
|
||||||
char *virFileBuildPath(const char *dir,
|
char *virFileBuildPath(const char *dir,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
Loading…
Reference in New Issue
Block a user