fix: relative path is set unnormally
authorHeebum Kwak <heebum0.kwak@samsung.com>
Thu, 16 May 2013 09:03:09 +0000 (18:03 +0900)
committerBoram Park <boram1288.park@samsung.com>
Mon, 17 Jun 2013 08:44:34 +0000 (17:44 +0900)
Change-Id: Ie374dc9431a78625a4d974c97f70a7e7b911695d

bin/xdbg/xdbg.c
module/xdbg_module.h
module/xdbg_module_command.c
module/xdbg_module_evlog.c

index 0e371c2..d0722db 100644 (file)
@@ -54,7 +54,7 @@ int main(int argc, char ** argv)
     char **new_argv;
     int new_argc, i;
     char temp[128];
-
+    char cwd[128];
     dpy = XOpenDisplay (NULL);
     if (!dpy)
     {
@@ -69,7 +69,7 @@ int main(int argc, char ** argv)
         exit (-1);
     }
 
-    new_argc = argc + 1;
+    new_argc = argc + 2;
     new_argv = (char**)malloc (new_argc * sizeof (char*));
     if (!new_argv)
     {
@@ -80,8 +80,11 @@ int main(int argc, char ** argv)
     snprintf (temp, sizeof(temp), "%d", getpid ());
     new_argv[0] = temp;
 
+    if (getcwd (cwd, sizeof(cwd)))
+        new_argv[1] = cwd;
+
     for (i = 0; i < argc; i++)
-        new_argv[i+1] = argv[i];
+        new_argv[i+2] = argv[i];
 
     xDbugDBusClientSendMessage (dbus_info, new_argc, new_argv);
 
index 9d63e66..baf528d 100644 (file)
@@ -50,8 +50,8 @@ typedef struct _XDbgModule
 {
     char *log_path;
     char *real_log_path;
-
     char *evlog_path;
+    char *cwd;
 } XDbgModule;
 
 extern DevPrivateKeyRec debug_client_key;
index ba29d82..bb14b23 100644 (file)
@@ -76,9 +76,8 @@ _CommandSetLogFile (int pid, char *path, char *reply, int *len, XDbgModule *pMod
             snprintf (fd_name, XDBG_PATH_MAX, "%s", path);
         else
         {
-            char cwd[128];
-            if (getcwd (cwd, sizeof (cwd)))
-                snprintf (fd_name, XDBG_PATH_MAX, "%s/%s", cwd, path);
+            if (pMod->cwd)
+                snprintf (fd_name, XDBG_PATH_MAX, "%s/%s", pMod->cwd, path);
             else
                 snprintf (fd_name, XDBG_PATH_MAX, "%s", path);
         }
@@ -234,7 +233,10 @@ _CommandSetEvlogPath (int pid, int argc, char **argv, char *reply, int *len, XDb
 
     pMod->evlog_path = strdup (argv[2]);
 
-    XDBG_REPLY ("evlog path: %s\n", pMod->evlog_path);
+    if (pMod->evlog_path[0] == '/')
+        XDBG_REPLY ("evlog path: %s\n", pMod->evlog_path);
+    else
+        XDBG_REPLY ("evlog path: %s/%s\n", pMod->cwd, pMod->evlog_path);
 }
 
 static void
@@ -378,8 +380,9 @@ xDbgModuleCommand (void *data, int argc, char **argv, char *reply, int *len)
     char **new_argv;
 
     pid = atoi (argv[0]);
+    pMod->cwd = strdup (argv[1]);
 
-    new_argc = argc - 1;
+    new_argc = argc - 2;
     new_argv = (char**)malloc (new_argc * sizeof (char*));
     if (!new_argv)
     {
@@ -388,9 +391,9 @@ xDbgModuleCommand (void *data, int argc, char **argv, char *reply, int *len)
     }
 
     for (i = 0; i < new_argc; i++)
-        new_argv[i] = argv[i+1];
+        new_argv[i] = argv[i+2];
 
-    if (argc < 3)
+    if (argc < 4)
     {
         _CommandPrintUsage (reply, len, new_argv[0]);
         free (new_argv);
index 3723cce..6f2191b 100644 (file)
@@ -696,9 +696,8 @@ xDbgModuleEvlogSetEvlogPath (XDbgModule *pMod, int pid, char *path, char *reply,
         snprintf (fd_name, XDBG_PATH_MAX, "%s", path);
     else
     {
-        char cwd[128];
-        if (getcwd (cwd, sizeof (cwd)))
-            snprintf (fd_name, XDBG_PATH_MAX, "%s/%s", cwd, path);
+        if (pMod->cwd)
+            snprintf (fd_name, XDBG_PATH_MAX, "%s/%s", pMod->cwd, path);
         else
             snprintf (fd_name, XDBG_PATH_MAX, "%s", path);
     }