mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Add virFileAbsPath() utility
* src/util/util.[ch]: Add virFileAbsPath() function to ensure an absolute path for a potentially realtive path. * src/libvirt_private.syms: add it in libvirt private symbols
This commit is contained in:
parent
624a7927f0
commit
2e812c89e9
@ -445,6 +445,7 @@ virFileExists;
|
|||||||
virFileHasSuffix;
|
virFileHasSuffix;
|
||||||
virFileLinkPointsTo;
|
virFileLinkPointsTo;
|
||||||
virFileMakePath;
|
virFileMakePath;
|
||||||
|
virFileAbsPath;
|
||||||
virFileOpenTty;
|
virFileOpenTty;
|
||||||
virFileReadLimFD;
|
virFileReadLimFD;
|
||||||
virFilePid;
|
virFilePid;
|
||||||
|
@ -1402,6 +1402,42 @@ cleanup:
|
|||||||
|
|
||||||
#endif /* PROXY */
|
#endif /* PROXY */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates an absolute path for a potentialy realtive path.
|
||||||
|
* Return 0 if the path was not relative, or on success.
|
||||||
|
* Return -1 on error.
|
||||||
|
*
|
||||||
|
* You must free the result.
|
||||||
|
*/
|
||||||
|
int virFileAbsPath(const char *path, char **abspath)
|
||||||
|
{
|
||||||
|
char *buf;
|
||||||
|
int cwdlen;
|
||||||
|
|
||||||
|
if (path[0] == '/') {
|
||||||
|
buf = strdup(path);
|
||||||
|
if (buf == NULL)
|
||||||
|
return(-1);
|
||||||
|
} else {
|
||||||
|
buf = getcwd(NULL, 0);
|
||||||
|
if (buf == NULL)
|
||||||
|
return(-1);
|
||||||
|
|
||||||
|
cwdlen = strlen(buf);
|
||||||
|
/* cwdlen includes the null terminator */
|
||||||
|
if (VIR_REALLOC_N(buf, cwdlen + strlen(path) + 1) < 0) {
|
||||||
|
VIR_FREE(buf);
|
||||||
|
errno = ENOMEM;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[cwdlen] = '/';
|
||||||
|
strcpy(&buf[cwdlen + 1], path);
|
||||||
|
}
|
||||||
|
|
||||||
|
*abspath = buf;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Like strtol, but produce an "int" result, and check more carefully.
|
/* Like strtol, but produce an "int" result, and check more carefully.
|
||||||
Return 0 upon success; return -1 to indicate failure.
|
Return 0 upon success; return -1 to indicate failure.
|
||||||
|
@ -115,6 +115,9 @@ int virFileBuildPath(const char *dir,
|
|||||||
char *buf,
|
char *buf,
|
||||||
unsigned int buflen);
|
unsigned int buflen);
|
||||||
|
|
||||||
|
int virFileAbsPath(const char *path,
|
||||||
|
char **abspath);
|
||||||
|
|
||||||
int virFileOpenTty(int *ttymaster,
|
int virFileOpenTty(int *ttymaster,
|
||||||
char **ttyName,
|
char **ttyName,
|
||||||
int rawmode);
|
int rawmode);
|
||||||
|
Loading…
Reference in New Issue
Block a user