Factor the code obtaining a bunch of a block devices attributes: vendor, rev, model, size since this is a repetitive and identical procedure for each of these.
This also fixes unused fgets() return values for these parts of the code. Signed-off-by: Florian Fainelli <f.faine...@gmail.com> --- mount.c | 89 ++++++++++++++++++++++++----------------------------------------- 1 file changed, 33 insertions(+), 56 deletions(-) diff --git a/mount.c b/mount.c index a7f1862f2747..fa01eeba7402 100644 --- a/mount.c +++ b/mount.c @@ -432,6 +432,33 @@ static char* mount_get_serial(char *dev) return disc_id; } +static void mount_dev_get_property(char *name, char *prop_val, + const char *prop_name) +{ + char tmp[64]; + FILE *fp; + + snprintf(tmp, 64, "/sys/class/block/%s/device/%s", name, prop_name); + fp = fopen(tmp, "r"); + if(!fp) + { + snprintf(tmp, 64, "/sys/block/%s/device/%s", name, prop_name); + fp = fopen(tmp, "r"); + } + if(!fp) + goto unknown; + else { + if (!fgets(prop_val, 64, fp)) + goto unknown; + + prop_val[strlen(prop_val) - 1] = '\0'; + fclose(fp); + return; + } +unknown: + snprintf(prop_val, 64, "unknown"); +} + static void mount_dev_add(char *dev) { struct mount *mount = mount_find(0, dev); @@ -489,62 +516,12 @@ static void mount_dev_add(char *dev) } strcpy(name, dev); name[3] = '\0'; - snprintf(tmp, 64, "/sys/class/block/%s/device/model", name); - fp = fopen(tmp, "r"); - if(!fp) - { - snprintf(tmp, 64, "/sys/block/%s/device/model", name); - fp = fopen(tmp, "r"); - } - if(!fp) - snprintf(model, 64, "unknown"); - else { - fgets(model, 64, fp); - model[strlen(model) - 1] = '\0';; - fclose(fp); - } - snprintf(tmp, 64, "/sys/class/block/%s/device/vendor", name); - fp = fopen(tmp, "r"); - if(!fp) - { - snprintf(tmp, 64, "/sys/block/%s/device/vendor", name); - fp = fopen(tmp, "r"); - } - if(!fp) - snprintf(vendor, 64, "unknown"); - else { - fgets(vendor, 64, fp); - vendor[strlen(vendor) - 1] = '\0'; - fclose(fp); - } - snprintf(tmp, 64, "/sys/class/block/%s/device/rev", name); - fp = fopen(tmp, "r"); - if(!fp) - { - snprintf(tmp, 64, "/sys/block/%s/device/rev", name); - fp = fopen(tmp, "r"); - } - if(!fp) - snprintf(rev, 64, "unknown"); - else { - fgets(rev, 64, fp); - rev[strlen(rev) - 1] = '\0'; - fclose(fp); - } - snprintf(tmp, 64, "/sys/class/block/%s/size", dev); - fp = fopen(tmp, "r"); - if(!fp) - { - snprintf(tmp, 64, "/sys/block/%s/%s/size", name, dev); - fp = fopen(tmp, "r"); - } - if(!fp) - snprintf(size, 64, "unknown"); - else { - fgets(size, 64, fp); - size[strlen(size) - 1] = '\0'; - fclose(fp); - } + + mount_dev_get_property(name, model, "model"); + mount_dev_get_property(name, vendor, "vendor"); + mount_dev_get_property(name, rev, "rev"); + mount_dev_get_property(name, size, "size"); + strcpy(tmp2, dev); tmp2[3] = '\0'; snprintf(tmp, 64, "/sys/block/%s/queue/hw_sector_size", tmp2); -- 2.9.3 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev