From d1274745b6ff493b3ad9830b6ee2a541455800df Mon Sep 17 00:00:00 2001 From: hyunuktak Date: Tue, 10 Oct 2017 14:33:38 +0900 Subject: [PATCH] Extract file name using /usr/apps keyword And ignore blank space Change-Id: I36813811a9f0ad358d591ae197de0034c326486a Signed-off-by: hyunuktak --- src/helper/helper-procfs.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/helper/helper-procfs.c b/src/helper/helper-procfs.c index ca291ac..168c34a 100755 --- a/src/helper/helper-procfs.c +++ b/src/helper/helper-procfs.c @@ -38,12 +38,16 @@ #include "stc-manager-util.h" #include "helper-procfs.h" +#define USRAPPS "/usr/apps/" + int proc_get_cmdline(pid_t pid, char *cmdline) { char buf[PROC_BUF_MAX]; char cmdline_buf[PROC_NAME_MAX]; char *filename; FILE *fp; + char *token = NULL; + char *saveptr = NULL; snprintf(buf, sizeof(buf), "/proc/%d/cmdline", pid); fp = fopen(buf, "r"); @@ -56,11 +60,24 @@ int proc_get_cmdline(pid_t pid, char *cmdline) } fclose(fp); - filename = strrchr(cmdline_buf, '/'); - if (filename == NULL) - filename = cmdline_buf; - else - filename = filename + 1; + if (g_strstr_len(cmdline_buf, strlen(USRAPPS), USRAPPS) != NULL) { + /* Application */ + filename = cmdline_buf + strlen(USRAPPS); + token = strtok_r(filename, "/", &saveptr); + if (token != NULL) + filename = token; + } else { + token = strtok_r(cmdline_buf, " ", &saveptr); + if (token != NULL) + filename = strrchr(token, '/'); + else + filename = strrchr(cmdline_buf, '/'); + + if (filename == NULL) + filename = cmdline_buf; + else + filename = filename + 1; + } strncpy(cmdline, filename, PROC_NAME_MAX-1); -- 2.7.4