summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/devices.c46
1 files changed, 4 insertions, 42 deletions
diff --git a/modules/devices.c b/modules/devices.c
index 50cf0bd2..87bb8a80 100644
--- a/modules/devices.c
+++ b/modules/devices.c
@@ -236,44 +236,7 @@ static struct {
{ NULL, NULL, NULL, NULL, NULL, NULL }
};
-gchar *dt_get_model() {
- FILE *dtmodel;
- char *ret = NULL;
- size_t fs, rlen;
-
- dtmodel = fopen("/proc/device-tree/model", "r");
- if (!dtmodel)
- return NULL;
-
- if (fseek(dtmodel, 0L, SEEK_END) == 0) {
- fs = ftell(dtmodel);
- if (fs == -1) {
- fclose(dtmodel);
- return NULL;
- }
-
- ret = g_malloc(sizeof(char) * (fs + 1));
- if (fseek(dtmodel, 0L, SEEK_SET) != 0) {
- g_free(ret);
- fclose(dtmodel);
- return NULL;
- }
-
- rlen = fread(ret, sizeof(char), fs, dtmodel);
- if (ferror(dtmodel) != 0 ) {
- g_free(ret);
- fclose(dtmodel);
- return NULL;
- } else {
- ret[rlen+1] = '\0';
- }
- }
-
- fclose(dtmodel);
- return ret;
-}
-
-gchar *rpi_get_boardname(void) {
+static gchar *rpi_get_boardname(void) {
int i = 0, c = 0;
gchar *ret = NULL;
gchar *soc = NULL;
@@ -342,18 +305,17 @@ gchar *get_motherboard(void)
return g_strconcat(board_vendor, _(" (model unknown)"), NULL);
#else
/* use device tree "model" */
- board_vendor = dt_get_model();
+ if (g_file_get_contents("/proc/device-tree/model", &board_vendor, NULL, NULL)) {
- if (board_vendor != NULL) {
- /* maybe it is an rpi */
+ /* if a raspberry pi, try and get a more detailed name */
if (g_str_has_prefix(board_vendor, "Raspberry Pi")) {
- /* try and get a more detailed board name */
board_name = rpi_get_boardname();
if (board_name != NULL) {
g_free(board_vendor);
return board_name;
}
}
+
return board_vendor;
}
#endif