sd-device: use strjoin instead of asprintf

strjoin should be faster for string concatenation.
Also drop "_"-prefix from function prototypes.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2020-07-16 15:20:57 +02:00
parent 22ba4525d3
commit fe20121a4c
2 changed files with 27 additions and 36 deletions

View File

@ -94,8 +94,8 @@ int device_read_uevent_file(sd_device *device);
int device_set_syspath(sd_device *device, const char *_syspath, bool verify);
int device_set_ifindex(sd_device *device, const char *ifindex);
int device_set_devmode(sd_device *device, const char *devmode);
int device_set_devname(sd_device *device, const char *_devname);
int device_set_devtype(sd_device *device, const char *_devtype);
int device_set_devname(sd_device *device, const char *devname);
int device_set_devtype(sd_device *device, const char *devtype);
int device_set_devnum(sd_device *device, const char *major, const char *minor);
int device_set_subsystem(sd_device *device, const char *_subsystem);
int device_set_driver(sd_device *device, const char *_driver);

View File

@ -320,24 +320,22 @@ _public_ int sd_device_new_from_subsystem_sysname(sd_device **ret, const char *s
return -ENODEV;
}
int device_set_devtype(sd_device *device, const char *_devtype) {
_cleanup_free_ char *devtype = NULL;
int device_set_devtype(sd_device *device, const char *devtype) {
_cleanup_free_ char *t = NULL;
int r;
assert(device);
assert(_devtype);
assert(devtype);
devtype = strdup(_devtype);
if (!devtype)
t = strdup(devtype);
if (!t)
return -ENOMEM;
r = device_add_property_internal(device, "DEVTYPE", devtype);
r = device_add_property_internal(device, "DEVTYPE", t);
if (r < 0)
return r;
free_and_replace(device->devtype, devtype);
return 0;
return free_and_replace(device->devtype, t);
}
int device_set_ifindex(sd_device *device, const char *name) {
@ -359,30 +357,25 @@ int device_set_ifindex(sd_device *device, const char *name) {
return 0;
}
int device_set_devname(sd_device *device, const char *_devname) {
_cleanup_free_ char *devname = NULL;
int device_set_devname(sd_device *device, const char *devname) {
_cleanup_free_ char *t = NULL;
int r;
assert(device);
assert(_devname);
assert(devname);
if (_devname[0] != '/') {
r = asprintf(&devname, "/dev/%s", _devname);
if (r < 0)
return -ENOMEM;
} else {
devname = strdup(_devname);
if (!devname)
return -ENOMEM;
}
if (devname[0] != '/')
t = strjoin("/dev/", devname);
else
t = strdup(devname);
if (!t)
return -ENOMEM;
r = device_add_property_internal(device, "DEVNAME", devname);
r = device_add_property_internal(device, "DEVNAME", t);
if (r < 0)
return r;
free_and_replace(device->devname, devname);
return 0;
return free_and_replace(device->devname, t);
}
int device_set_devmode(sd_device *device, const char *_devmode) {
@ -1250,17 +1243,15 @@ int device_get_id_filename(sd_device *device, const char **ret) {
if (!subsystem)
return -EINVAL;
if (streq(subsystem, "drivers")) {
if (streq(subsystem, "drivers"))
/* the 'drivers' pseudo-subsystem is special, and needs the real subsystem
* encoded as well */
r = asprintf(&id, "+drivers:%s:%s", device->driver_subsystem, sysname);
if (r < 0)
return -ENOMEM;
} else {
r = asprintf(&id, "+%s:%s", subsystem, sysname);
if (r < 0)
return -ENOMEM;
}
id = strjoin("+drivers:", device->driver_subsystem, ":", sysname);
else
id = strjoin("+", subsystem, ":", sysname);
if (!id)
return -ENOMEM;
}
device->id_filename = TAKE_PTR(id);