mirror of https://gitee.com/openkylin/libvirt.git
util: Introduce virFileReadLink
We will need to traverse the symlinks one step at the time. Therefore we need to see where a symlink is pointing to. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
3172d26730
commit
6094169b83
|
@ -1616,6 +1616,7 @@ virFileReadAllQuiet;
|
||||||
virFileReadBufQuiet;
|
virFileReadBufQuiet;
|
||||||
virFileReadHeaderFD;
|
virFileReadHeaderFD;
|
||||||
virFileReadLimFD;
|
virFileReadLimFD;
|
||||||
|
virFileReadLink;
|
||||||
virFileRelLinkPointsTo;
|
virFileRelLinkPointsTo;
|
||||||
virFileRemove;
|
virFileRemove;
|
||||||
virFileRemoveLastComponent;
|
virFileRemoveLastComponent;
|
||||||
|
|
|
@ -76,6 +76,7 @@
|
||||||
#include "virutil.h"
|
#include "virutil.h"
|
||||||
|
|
||||||
#include "c-ctype.h"
|
#include "c-ctype.h"
|
||||||
|
#include "areadlink.h"
|
||||||
|
|
||||||
#define VIR_FROM_THIS VIR_FROM_NONE
|
#define VIR_FROM_THIS VIR_FROM_NONE
|
||||||
|
|
||||||
|
@ -1614,6 +1615,17 @@ virFileIsLink(const char *linkpath)
|
||||||
return S_ISLNK(st.st_mode) != 0;
|
return S_ISLNK(st.st_mode) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read where symlink is pointing to.
|
||||||
|
*
|
||||||
|
* Returns 0 on success (@linkpath is a successfully read link),
|
||||||
|
* -1 with errno set upon error.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
virFileReadLink(const char *linkpath, char **resultpath)
|
||||||
|
{
|
||||||
|
return (*resultpath = areadlink(linkpath)) ? 0 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finds a requested executable file in the PATH env. e.g.:
|
* Finds a requested executable file in the PATH env. e.g.:
|
||||||
|
|
|
@ -166,6 +166,9 @@ int virFileResolveAllLinks(const char *linkpath,
|
||||||
int virFileIsLink(const char *linkpath)
|
int virFileIsLink(const char *linkpath)
|
||||||
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
|
||||||
|
int virFileReadLink(const char *linkpath, char **resultpath)
|
||||||
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
|
||||||
|
|
||||||
char *virFindFileInPath(const char *file);
|
char *virFindFileInPath(const char *file);
|
||||||
|
|
||||||
char *virFileFindResource(const char *filename,
|
char *virFileFindResource(const char *filename,
|
||||||
|
|
Loading…
Reference in New Issue