From: Yu Watanabe Date: Fri, 15 Apr 2022 04:45:26 +0000 (+0900) Subject: sd-device: shorten code a bit X-Git-Tag: v251-rc2~117^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5fa9d220c2b74d17126e5b1150d2c4955d2fa97d;p=thirdparty%2Fsystemd.git sd-device: shorten code a bit --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index ef3586ddfb5..6c8e7d646fb 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -1170,8 +1170,8 @@ _public_ int sd_device_get_devname(sd_device *device, const char **devname) { static int device_set_sysname_and_sysnum(sd_device *device) { _cleanup_free_ char *sysname = NULL; - const char *sysnum = NULL; - size_t len = 0; + char *p; + int r; assert(device); @@ -1180,21 +1180,14 @@ static int device_set_sysname_and_sysnum(sd_device *device) { return r; /* some devices have '!' in their name, change that to '/' */ - while (sysname[len] != '\0') { - if (sysname[len] == '!') - sysname[len] = '/'; - - len++; - } - - /* trailing number */ - while (len > 0 && isdigit(sysname[--len])) - sysnum = &sysname[len]; + for (p = strchrnul(sysname, '!'); *p != '\0'; p = strchrnul(p, '!')) + *p = '/'; - if (len == 0) - sysnum = NULL; + /* trailing number (refuse number only sysname)*/ + for (; p > sysname && isdigit(p[-1]); p--) + ; - device->sysnum = sysnum; + device->sysnum = p > sysname && *p != '\0' ? p : NULL; return free_and_replace(device->sysname, sysname); }