9 #include <sys/utsname.h>
10 #include <sys/system_properties.h>
17 struct android_version {
23 android_to_name(const char *version)
28 /* https://en.wikipedia.org/wiki/Android_version_history#Overview */
29 struct android_version versions[] = {
33 {"6.0", "Marshmallow"},
36 {"4.1", "Jelly Bean"},
37 {"4.0", "Ice Cream Sandwich"},
39 {"2.3", "Gingerbread"},
47 for (i = 0; i < (sizeof(versions) / sizeof(versions[0])); i++ ) {
48 if (!strncmp(version, versions[i].number, 3)) {
49 name = versions[i].name;
55 for (i = 0; i < (sizeof(versions) / sizeof(versions[0])); i++ ) {
56 if (!strncmp(version, versions[i].number, 1)) {
57 name = versions[i].name;
69 static void system_kernel(void)
75 __system_property_get("ro.build.host", build_host);
76 __system_property_get("ro.build.user", build_user);
78 if (uname(&uts) != -1) {
79 printf("%-25s: %s %s %s@%s %s %s\n", "Kernel version", uts.sysname,
80 uts.release, build_user, build_host, uts.version, uts.machine);
84 static void system_cpu(void)
89 const char *needle = "Processor :";
91 fd = open("/proc/cpuinfo", O_RDONLY);
96 bytes = read(fd, buffer, sizeof(buffer) - 1);
101 buffer[bytes] = '\0';
104 p = strstr(p, "Processor :");
105 p += strlen(needle) - 1;
107 printf("%-25s: ", "CPU");
108 while ( *p != '\n') {
117 static void system_properties(struct prop *array, int size)
120 char value[1024] = {0};
122 for (i=0; i < size; i++) {
126 len = __system_property_get(array[i].prop_name, value);
129 printf("%-25s: %s", array[i].key_name, value);
130 printf(" (%s)\n", android_to_name(value));
132 printf("%-25s: %s\n", array[i].key_name, value);
142 struct prop props[] = {
143 {.key_name = "Model name", .prop_name = "ro.product.model"},
144 {.key_name = "Android codename", .prop_name = "ro.build.product"},
145 {.key_name = "Android version", .prop_name = "ro.build.version.release"},
146 {.key_name = "Android SDK version", .prop_name = "ro.build.version.sdk"},
147 {.key_name = "Baseband version", .prop_name = "gsm.version.baseband"},
148 {.key_name = "Build number", .prop_name = "ro.build.display.id"},
151 system_properties(props, sizeof(props) / sizeof(props[0]));