4 * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
8 * Jaewon Lim <jaewon81.lim@samsung.com>
9 * Woojin Jung <woojin2.jung@samsung.com>
10 * Juyoung Kim <j0.kim@samsung.com>
12 * This library is free software; you can redistribute it and/or modify it under
13 * the terms of the GNU Lesser General Public License as published by the
14 * Free Software Foundation; either version 2.1 of the License, or (at your option)
17 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
18 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20 * License for more details.
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this library; if not, write to the Free Software Foundation, Inc., 51
24 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
31 #include <wchar.h> // for wcslen
32 #include <unistd.h> // for unlink
33 #include <sys/types.h>
34 #include <dirent.h> // for opendir, readdir
38 int app_efl_main_flg = 0;
40 const char *lib_string[NUM_ORIGINAL_LIBRARY] = {
42 "libpthread.so.0", //1
43 "libelementary.so.1", //2
44 "libecore_input_evas.so.1", //3
46 "libcapi-appfw-application.so.0", //5
51 void *lib_handle[NUM_ORIGINAL_LIBRARY];
53 /* trace info global variable */
54 __traceInfo gTraceInfo =
58 PTHREAD_MUTEX_INITIALIZER // pthread_mutex_t eventMutex
62 PTHREAD_MUTEX_INITIALIZER // ptrhread_mutex_t sockMutex
65 {0, }, // char appName[128]
66 0 // unsigned int startTime
70 PTHREAD_MUTEX_INITIALIZER // ptrhread_mutex_t ssMutex
71 }, // __screenshotInfo
77 0, // int init_complete
78 0, // int custom_chart_callback_count
79 0 // unsigned long optionflag
82 void WcharToChar(char* pstrDest, const wchar_t* pwstrSrc)
84 int nLen=(int)wcslen(pwstrSrc);
85 wcstombs(pstrDest, pwstrSrc, nLen+1);
88 // return 0 if succeed
89 // return -1 if error occured
90 int remove_indir(const char *dirname)
94 char path[MAX_PATH_LENGTH];
95 static char dirent_buffer[ sizeof(struct dirent) + PATH_MAX + 1 ] = {0,};
96 static struct dirent *dirent_r = (struct dirent *)dirent_buffer;
99 dir = opendir(dirname);
105 while ((readdir_r(dir, dirent_r, &entry) == 0) && entry) {
106 if (strcmp(entry->d_name, ".") && strcmp(entry->d_name, ".."))
108 snprintf(path, (size_t) MAX_PATH_LENGTH, "%s/%s", dirname, entry->d_name);
109 if (entry->d_type != DT_DIR) // file
113 else { } // directory
121 static int absolute_filepath_p(const char *fname)
123 return fname[0] == '/';
126 char *absolutize_filepath(const char *fname, char *buffer, size_t bufsiz)
130 assert(fname && "Filename, passed to stdc function is NULL.");
131 if (absolute_filepath_p(fname) || getcwd(cwd, sizeof(cwd)) == NULL)
132 snprintf(buffer, bufsiz, "%s", fname);
134 snprintf(buffer, bufsiz, "%s/%s", cwd, fname);
138 char *real_abs_path(int fd, char *buffer, size_t bufsiz)
140 static const char *PROC_FD = "/proc/self/fd/%d";
141 char proc_path[sizeof(PROC_FD) + 16]; /* PATH_MAX not needed here */
147 snprintf(proc_path, sizeof(proc_path), PROC_FD, fd);
149 ret = readlink(proc_path, buffer, bufsiz);
150 if (ret < 0) /* some error occured */