提交 7fccf124 编写于 作者: M Michal Privoznik

virfile: Introduce virFileRemoveLastComponent

Move some parts of virStorageFileRemoveLastPathComponent
into a separate function so they can be reused.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 be1a7e6d
......@@ -1517,6 +1517,7 @@ virFileReadHeaderFD;
virFileReadLimFD;
virFileRelLinkPointsTo;
virFileRemove;
virFileRemoveLastComponent;
virFileResolveAllLinks;
virFileResolveLink;
virFileRewrite;
......
......@@ -3132,6 +3132,23 @@ virFileSanitizePath(const char *path)
return cleanpath;
}
/**
* virFileRemoveLastComponent:
*
* For given path cut off the last component. If there's no dir
* separator (whole path is one file name), @path is turned into
* an empty string.
*/
void
virFileRemoveLastComponent(char *path)
{
char *tmp;
if ((tmp = strrchr(path, VIR_FILE_DIR_SEPARATOR)))
tmp[1] = '\0';
else
path[0] = '\0';
}
/**
* virFilePrintf:
......
......@@ -268,6 +268,7 @@ bool virFileIsAbsPath(const char *path);
int virFileAbsPath(const char *path,
char **abspath) ATTRIBUTE_RETURN_CHECK;
const char *virFileSkipRoot(const char *path);
void virFileRemoveLastComponent(char *path);
int virFileOpenTty(int *ttymaster,
char **ttyName,
......
......@@ -2868,16 +2868,12 @@ virStorageFileCanonicalizePath(const char *path,
static char *
virStorageFileRemoveLastPathComponent(const char *path)
{
char *tmp;
char *ret;
if (VIR_STRDUP(ret, path ? path : "") < 0)
return NULL;
if ((tmp = strrchr(ret, '/')))
tmp[1] = '\0';
else
ret[0] = '\0';
virFileRemoveLastComponent(ret);
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册