[libvirt] [PATCH 13/23] src: replace last_component() with g_path_get_basename()
Daniel P. Berrangé
berrange at redhat.com
Fri Jan 3 11:18:47 UTC 2020
On Thu, Jan 02, 2020 at 05:42:30PM +0100, Fabiano Fidêncio wrote:
> [snip]
>
> > diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
> > index f072afe857..16a527e399 100644
> > --- a/src/rpc/virnetsocket.c
> > +++ b/src/rpc/virnetsocket.c
> > @@ -55,7 +55,6 @@
> > #include "virprobe.h"
> > #include "virprocess.h"
> > #include "virstring.h"
> > -#include "dirname.h"
> > #include "passfd.h"
> >
> > #if WITH_SSH2
> > @@ -668,7 +667,7 @@ int virNetSocketNewConnectUNIX(const char *path,
> > remoteAddr.len = sizeof(remoteAddr.data.un);
> >
> > if (spawnDaemon) {
> > - const char *binname;
> > + g_autofree char *binname = NULL;
> >
> > if (spawnDaemon && !binary) {
> > virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> > @@ -677,7 +676,7 @@ int virNetSocketNewConnectUNIX(const char *path,
> > goto cleanup;
> > }
> >
> > - if (!(binname = last_component(binary)) || binname[0] == '\0') {
> > + if (!(binname = g_path_get_basename(binary)) || binname[0] == '\0') {
>
> IIUC, this check is no longer valid.
> According to the g_path_get_basename() documentation "If file_name
> ends with a directory separator it gets the component before the last
> slash. If file_name consists only of directory separators (and on
> Windows, possibly a drive letter), a single separator is returned. If
> file_name is empty, it gets "."."
>
> Knowing that, shouldn't we adapt the check accordingly?
Yes,
- if (!(binname = g_path_get_basename(binary)) || binname[0] == '\0') {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Cannot determine basename for binary '%s'"),
- binary);
- goto cleanup;
- }
-
+ binname = g_path_get_basename(binary);
>
> [snip]
>
> > diff --git a/src/util/virmdev.c b/src/util/virmdev.c
> > index cd52a91ffd..c2499c0a20 100644
> > --- a/src/util/virmdev.c
> > +++ b/src/util/virmdev.c
> > @@ -18,7 +18,6 @@
> >
> > #include <config.h>
> >
> > -#include "dirname.h"
> > #include "virmdev.h"
> > #include "virlog.h"
> > #include "virerror.h"
> > @@ -207,6 +206,7 @@ char *
> > virMediatedDeviceGetIOMMUGroupDev(const char *uuidstr)
> > {
> > g_autofree char *result_path = NULL;
> > + g_autofree char *result_file = NULL;
> > g_autofree char *iommu_path = NULL;
> > g_autofree char *dev_path = virMediatedDeviceGetSysfsPath(uuidstr);
> > char *vfio_path = NULL;
> > @@ -226,7 +226,9 @@ virMediatedDeviceGetIOMMUGroupDev(const char *uuidstr)
> > return NULL;
> > }
> >
> > - vfio_path = g_strdup_printf("/dev/vfio/%s", last_component(result_path));
> > + result_file = g_path_get_basename(result_path);
> > +
> > + vfio_path = g_strdup_printf("/dev/vfio/%s", result_file);
>
> Please, while changing it, use g_build_filename() instead of g_strdup_printf().
I'm going to leave this as is, as we have so much file name building
code already that just printfs.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list