X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudev-builtin-net_id.c;h=95e54520b0f6c722b0bdfcc51ceed1e0fbcf8fab;hb=1693a943ca581aca2beebb4c812ec6c9f17b8164;hp=96ac21c16771ff0f25cbb881e2e14049140f4e81;hpb=3058e017fced6d5c8712e10c8c1477421bc1e960;p=elogind.git diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 96ac21c16..95e54520b 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -149,25 +149,22 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) { /* read the 256 bytes PCI configuration space to check the multi-function bit */ static bool is_pci_multifunction(struct udev_device *dev) { - char filename[256]; - FILE *f = NULL; - char config[64]; - bool multi = false; + _cleanup_fclose_ FILE *f = NULL; + const char *filename; + uint8_t config[64]; - snprintf(filename, sizeof(filename), "%s/config", udev_device_get_syspath(dev)); + filename = strappenda(udev_device_get_syspath(dev), "/config"); f = fopen(filename, "re"); if (!f) - goto out; + return false; if (fread(&config, sizeof(config), 1, f) != 1) - goto out; + return false; /* bit 0-6 header type, bit 7 multi/single function device */ if ((config[PCI_HEADER_TYPE] & 0x80) != 0) - multi = true; -out: - if (f) - fclose(f); - return multi; + return true; + + return false; } static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { @@ -310,7 +307,7 @@ static int names_usb(struct udev_device *dev, struct netnames *names) { s[0] = '\0'; interf = s+1; - /* prefix every port number in the chain with "u"*/ + /* prefix every port number in the chain with "u" */ s = ports; while ((s = strchr(s, '.'))) s[0] = 'u';