virfile: Introduce virFileRemoveLastComponent

Move some parts of virStorageFileRemoveLastPathComponent
into a separate function so they can be reused.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2016-05-12 13:05:37 +02:00
parent be1a7e6d31
commit 7fccf12482
4 changed files with 20 additions and 5 deletions

View File

@ -1517,6 +1517,7 @@ virFileReadHeaderFD;
virFileReadLimFD;
virFileRelLinkPointsTo;
virFileRemove;
virFileRemoveLastComponent;
virFileResolveAllLinks;
virFileResolveLink;
virFileRewrite;

View File

@ -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:

View File

@ -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,

View File

@ -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;
}