system: introduce new attribute board_name
[project/procd.git] / system.c
index 1e31ce6859cd760fb07e43266ab62a1f07db09e8..c4d67a6dd4eefad3a931aed538c620a1e5080d11 100644 (file)
--- a/system.c
+++ b/system.c
@@ -115,6 +115,40 @@ static int system_board(struct ubus_context *ctx, struct ubus_object *obj,
                fclose(f);
        }
 
+       if ((f = fopen("/tmp/sysinfo/board_name", "r")) != NULL)
+       {
+               if (fgets(line, sizeof(line), f))
+               {
+                       val = strtok(line, "\t\n");
+
+                       if (val)
+                               blobmsg_add_string(&b, "board_name", val);
+               }
+
+               fclose(f);
+       }
+       else if ((f = fopen("/proc/device-tree/compatible", "r")) != NULL)
+       {
+               if (fgets(line, sizeof(line), f))
+               {
+                       val = strtok(line, "\t\n");
+
+                       if (val)
+                       {
+                               next = val;
+                               while ((next = strchr(next, ',')) != NULL)
+                               {
+                                       *next = '-';
+                                       next++;
+                               }
+
+                               blobmsg_add_string(&b, "board_name", val);
+                       }
+               }
+
+               fclose(f);
+       }
+
        if ((f = fopen("/etc/openwrt_release", "r")) != NULL)
        {
                c = blobmsg_open_table(&b, "release");