summaryrefslogtreecommitdiff
path: root/src/udev/udev-builtin-net_id.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-08-12 01:43:23 +0200
committerLennart Poettering <lennart@poettering.net>2014-08-12 01:54:39 +0200
commit1cb5d1f31909c731d93568eb4838cb86e033d783 (patch)
treede784fff09e7274f4711893602b2da9ab3c01f7a /src/udev/udev-builtin-net_id.c
parent6436165dbc500f14abfec738af28f87a71f6a12a (diff)
udev: modernize net_id builtin a bit
Diffstat (limited to 'src/udev/udev-builtin-net_id.c')
-rw-r--r--src/udev/udev-builtin-net_id.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index 96ac21c167..3e2c8f8a6a 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) {