From 85f70e971af111ab7ef35495932ad847f5fd5d43 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 24 Feb 2015 19:07:44 +0100 Subject: [PATCH] (Android) Cleanups to system_property_get --- frontend/drivers/platform_android.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index f2bf63ee77..1d67d199a5 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -430,30 +430,37 @@ static bool android_run_events(void *data) static int system_property_get(const char *name, char *value) { - char cmd[1024]; + FILE *pipe; + int length = 0; + char buffer[PATH_MAX_LENGTH]; + char cmd[PATH_MAX_LENGTH]; + char *curpos = NULL; + + snprintf(cmd, sizeof(cmd), "getprop %s", name); + + pipe = popen(cmd, "r"); - sprintf(cmd, "getprop %s", name); - FILE *pipe = popen(cmd, "r"); if (!pipe) { RARCH_ERR("Could not create pipe.\n"); return 0; } - int length = 0; - char buffer[128]; - char *curpos = value; + curpos = value; while (!feof(pipe)) { if (fgets(buffer, 128, pipe) != NULL) { int curlen = strlen(buffer); + memcpy(curpos, buffer, curlen); - curpos += curlen; - length += curlen; + + curpos += curlen; + length += curlen; } } + *curpos = '\0'; pclose(pipe);