[Title] change DEBUGCH location
authorSon Hyunjun <hj79.son@samsung.com>
Fri, 13 Apr 2012 10:49:57 +0000 (19:49 +0900)
committerSon Hyunjun <hj79.son@samsung.com>
Fri, 13 Apr 2012 10:49:57 +0000 (19:49 +0900)
[Type] Feature
[Module] Logger
[Priority] Minor
[CQ#]
[Redmine#]
[Problem]
[Cause]
[Solution] before : in working directory, after : in binary directory

Change-Id: I8c16ddcdfd023a42734ce2269db3f0ef0c4f2f5f

tizen/src/debug_ch.c
tizen/src/debug_ch.h
tizen/src/emulator.c

index 506c3c4..7c2e372 100644 (file)
 #include <errno.h>
 #endif
 
+#include "emulator.h"
 #include "debug_ch.h"
 
+// DEBUGCH file is located in binary directory.
+char bin_dir[256] = {0,};
+
 static char logpath[512] = {0,};
-static char debugchfile[256] = {0, };
+static char debugchfile[512] = {0, };
 #ifdef _WIN32
 static HANDLE handle;
 #endif
@@ -277,8 +281,18 @@ static void debug_init(void)
        strcpy(debugchfile, get_etc_path());
        strcat(debugchfile, "/DEBUGCH");
 #endif
-       strcpy(debugchfile, "DEBUGCH");
 
+    if ( 0 == strlen( bin_dir ) ) {
+        strcpy( debugchfile, "DEBUGCH" );
+    } else {
+        strcat( debugchfile, bin_dir );
+#ifdef _WIN32
+        strcat( debugchfile, "\\" );
+#else
+        strcat( debugchfile, "/" );
+#endif
+        strcat( debugchfile, "DEBUGCH" );
+    }
 
        fp= fopen(debugchfile, "r");
        if( fp == NULL){
index 08c9c35..298b7c5 100644 (file)
@@ -95,6 +95,9 @@ void set_log_path(char *path);
         (dbg_log(__DBCL##dbcl,(dbch), "") == -1)) ? \
 (void)0 : (void)dbg_printf
 */
+
+extern char bin_dir[256];
+
 extern unsigned char _dbg_get_channel_flags( struct _debug_channel *channel );
 extern int _dbg_set_channel_flags( struct _debug_channel *channel,
                unsigned char set, unsigned char clear );
index d4c6eaf..0243dd9 100644 (file)
@@ -132,6 +132,37 @@ static void parse_options(int argc, char* argv[], int* skin_argc, char*** skin_a
     }
 }
 
+static void get_bin_dir( char* exec_argv ) {
+
+    if ( !exec_argv ) {
+        return;
+    }
+
+    char* data = strdup( exec_argv );
+    if ( !data ) {
+        fprintf( stderr, "Fail to strdup for paring a binary directory.\n" );
+        return;
+    }
+
+    char* p = NULL;
+#ifdef _WIN32
+    p = strrchr( data, '\\' );
+    if ( !p ) {
+        p = strrchr( data, '/' );
+    }
+#else
+    p = strrchr( data, '/' );
+#endif
+    if ( !p ) {
+        return;
+    }
+
+    strncpy( bin_dir, data, strlen( data ) - strlen( p ) );
+
+    free( data );
+
+}
+
 void set_image_and_log_path(char* qemu_argv)
 {
     int i;
@@ -286,6 +317,7 @@ int qemu_main(int argc, char** argv, char** envp);
 int main(int argc, char* argv[])
 {
     parse_options(argc, argv, &skin_argc, &skin_argv, &qemu_argc, &qemu_argv);
+    get_bin_dir( qemu_argv[0] );
     socket_init();
     extract_info(qemu_argc, qemu_argv);