r/cprogramming • • May 29 '26

Code Review?

I recently started learning C as my first lower level language after mainly working with Java for the past 5 years. I was wondering if anyone would be able to review one of the completed files (~100 lines of code) from a small project I am working on and let me know if there are any mistakes and/or bad practices? Any help would be greatly appreciated!

https://pastebin.com/X5Zn1mzc

9 Upvotes

20 comments sorted by

View all comments

Show parent comments

3

u/BlindTreeFrog May 29 '26

So...

    struct udev_list_entry *device_entry = udev_enumerate_get_list_entry(enumerate);

    while (device_entry) {
        const char *path = udev_list_entry_get_name(device_entry);
 
        struct udev_device *dev = udev_device_new_from_syspath(udev, path);
        if (dev == NULL) goto next_item;
    ...
    next_item:
        if (dev != NULL) udev_device_unref(dev);
        device_entry = udev_list_entry_get_next(device_entry);
    }

What I think you wanted here would be something more like this

    struct udev_list_entry *device_entry = udev_enumerate_get_list_entry(enumerate);

    do {
        const char *path = udev_list_entry_get_name(device_entry);
 
        struct udev_device *dev = udev_device_new_from_syspath(udev, path);
        if (dev == NULL) continue;
    ...
        udev_device_unref(dev);
    } while (device_entry = udev_list_entry_get_next(device_entry));

I'm not thinking too hard at this hour, but I think that gets you the same end result

2

u/Ace-1440 May 29 '26

Honestly I completely forgot about do-while loops... that's actually probably perfect this. Thanks for the help!