提交 2e812c89 编写于 作者: A Amy Griffis 提交者: Daniel Veillard

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
上级 624a7927
...@@ -445,6 +445,7 @@ virFileExists; ...@@ -445,6 +445,7 @@ virFileExists;
virFileHasSuffix; virFileHasSuffix;
virFileLinkPointsTo; virFileLinkPointsTo;
virFileMakePath; virFileMakePath;
virFileAbsPath;
virFileOpenTty; virFileOpenTty;
virFileReadLimFD; virFileReadLimFD;
virFilePid; virFilePid;
......
...@@ -1402,6 +1402,42 @@ cleanup: ...@@ -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, ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册