summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeonjae Jang <heonjae.jang@samsung.com>2018-04-06 14:42:49 +0900
committerHeonjae Jang <heonjae.jang@samsung.com>2018-04-06 14:42:49 +0900
commit86b85fd070375c40ea98b223b8dd48154ddb6cbb (patch)
treed7c5a38e96ec4c3ed610a556d801979e97493537
parentdc67c28f1c54fe578064e83600c3fdaa3c5a9dc2 (diff)
parentd394ce6aaf9cb8672f9c9677b280e840c30294a5 (diff)
downloadttsd-worker-package-86b85fd070375c40ea98b223b8dd48154ddb6cbb.tar.gz
ttsd-worker-package-86b85fd070375c40ea98b223b8dd48154ddb6cbb.tar.bz2
ttsd-worker-package-86b85fd070375c40ea98b223b8dd48154ddb6cbb.zip
Merge branch 'master' into heonjae
-rwxr-xr-xCMakeLists.txt1
-rw-r--r--inc/log.h108
-rwxr-xr-xinc/package-manager-worker.h6
-rw-r--r--src/downloader.c14
-rw-r--r--src/log.c138
-rwxr-xr-xsrc/package-manager-worker.c3
6 files changed, 254 insertions, 16 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 122a218..893d0c7 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,7 @@ SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/inc)
SET(SRCS
+ src/log.c
src/package-manager-worker.c
src/downloader.c
src/installer.c
diff --git a/inc/log.h b/inc/log.h
new file mode 100644
index 0000000..d5a9d56
--- /dev/null
+++ b/inc/log.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __PACKAGE_MANAGER_WORKER_LOG_H__
+#define __PACKAGE_MANAGER_WORKER_LOG_H__
+
+#include <dlog.h>
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "PKG_MANAGER_WORKER"
+
+#if !defined(_V)
+#define _V(fmt, arg...) log_print(DLOG_VERBOSE, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_D)
+#define _D(fmt, arg...) log_print(DLOG_DEBUG, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_I)
+#define _I(fmt, arg...) log_print(DLOG_INFO, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_W)
+#define _W(fmt, arg...) log_print(DLOG_WARN, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_E)
+#define _E(fmt, arg...) log_print(DLOG_ERROR, LOG_TAG, "[%s:%d] " fmt "\n", __func__, __LINE__, ##arg)
+#endif
+
+#define retvm_if(expr, val, fmt, arg...) do { \
+ if (expr) { \
+ _E(fmt, ##arg); \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return val; \
+ } \
+} while (0)
+
+#define retv_if(expr, val) do { \
+ if (expr) { \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+} while (0)
+
+#define retm_if(expr, fmt, arg...) do { \
+ if (expr) { \
+ _E(fmt, ##arg); \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+
+#define ret_if(expr) do { \
+ if (expr) { \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+
+#define goto_if(expr, val) do { \
+ if (expr) { \
+ _E("(%s) -> goto", #expr); \
+ goto val; \
+ } \
+} while (0)
+
+#define break_if(expr) { \
+ if (expr) { \
+ _E("(%s) -> break", #expr); \
+ break; \
+ } \
+}
+
+#define continue_if(expr) { \
+ if (expr) { \
+ _E("(%s) -> continue", #expr); \
+ continue; \
+ } \
+}
+
+typedef enum {
+ LOG_TYPE_DLOG = 0,
+ LOG_TYPE_FILE,
+ LOG_TYPE_ALL,
+} log_type;
+
+int log_print(log_priority prio, const char *tag, const char *fmt, ...);
+int log_type_set(log_type type);
+void log_file_close(void);
+
+#endif /* __PACKAGE_MANAGER_WORKER_LOG_H__*/
diff --git a/inc/package-manager-worker.h b/inc/package-manager-worker.h
index a1edbad..fdd9c35 100755
--- a/inc/package-manager-worker.h
+++ b/inc/package-manager-worker.h
@@ -1,11 +1,5 @@
#ifndef __PACKAGE_MANAGER_WORKER_H__
#define __PACKAGE_MANAGER_WORKER_H__
-#include <dlog.h>
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-#define LOG_TAG "package-manager-worker"
#endif /* __PACKAGE_MANAGER_WORKER_H__ */
diff --git a/src/downloader.c b/src/downloader.c
index 8181c82..6dbcb89 100644
--- a/src/downloader.c
+++ b/src/downloader.c
@@ -2,11 +2,11 @@
#include "installer.h"
#include <app_common.h>
#include <curl/curl.h>
-#include <dlog.h>
#include <libgen.h>
#include <stdio.h>
#include <stdlib.h>
#include <tizen.h>
+#include "log.h"
#define MAX_BUFFER_SIZE 1024
@@ -33,10 +33,8 @@ void downloader_download(char *path) {
data_path = NULL;
file_name = NULL;
- dlog_print(DLOG_DEBUG, "package-manager-worker", "download_path : {%s}",
- path);
- dlog_print(DLOG_DEBUG, "package-manager-worker",
- "downloaded_path : {%s}", downloaded_path);
+ _D("download_path : {%s}", path);
+ _D("downloaded_path : {%s}", downloaded_path);
fp = fopen(downloaded_path, "wb");
curl_easy_setopt(curl, CURLOPT_URL, path);
@@ -45,11 +43,9 @@ void downloader_download(char *path) {
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
- dlog_print(DLOG_DEBUG, "package-manager-worker",
- "curl_easy_perform() failed: %s",
- curl_easy_strerror(res));
+ _D("curl_easy_perform() failed: %s", curl_easy_strerror(res));
} else {
- dlog_print(DLOG_DEBUG, "package-manager-worker", "o");
+ _D("o");
}
curl_easy_cleanup(curl);
diff --git a/src/log.c b/src/log.c
new file mode 100644
index 0000000..442d62d
--- /dev/null
+++ b/src/log.c
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <time.h>
+#include <dlog.h>
+#include "log.h"
+
+static FILE *log_fp = NULL;
+static log_type ltype = LOG_TYPE_DLOG;
+
+static const char log_prio_name[][DLOG_PRIO_MAX-1] = {
+ "UNKNOWN",
+ "DEFAULT", /**< Default */
+ "VERBOSE", /**< Verbose */
+ "DEBUG", /**< Debug */
+ "INFO", /**< Info */
+ "WARN", /**< Warning */
+ "ERROR", /**< Error */
+ "FATAL", /**< Fatal */
+ "SILENT" /**< Silent */
+};
+
+static inline char* getFormattedTime(void)
+{
+ struct timespec time_s;
+ struct tm *ptm;
+ static char res_time[40] = {0, };
+
+ if (0 == clock_gettime(CLOCK_REALTIME, &time_s)) {
+ ptm = localtime((const time_t *)&time_s.tv_sec);
+
+ // format : YY-MM-DD hh:mm:ss:uuuuuu
+ snprintf(res_time, sizeof(res_time),
+ "%04d-%02d-%02d %02d:%02d:%02d:%06ld"
+ , ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday
+ , ptm->tm_hour, ptm->tm_min, ptm->tm_sec
+ , time_s.tv_nsec);
+ }
+
+ return res_time;
+}
+
+static int __open_log_file(void)
+{
+ log_fp = fopen("/var/log/ttd.log", "a");
+ /* TODO : splits log file, if log file size is exceeded specified max size */
+ if (log_fp == NULL) {
+ dlog_print(DLOG_WARN, LOG_TAG, "%s\n", strerror(errno));
+ dlog_print(DLOG_WARN, LOG_TAG,
+ "error to use log file, so use dlog as log system\n");
+ ltype = LOG_TYPE_DLOG;
+ return -1;
+ }
+
+ return 0;
+}
+
+int log_type_set(log_type type)
+{
+ ltype = type;
+ dlog_print(DLOG_DEBUG, LOG_TAG, "setting log type : [%d]\n", type);
+ switch (type) {
+ case LOG_TYPE_FILE:
+ case LOG_TYPE_ALL:
+ __open_log_file();
+ break;
+ case LOG_TYPE_DLOG: /* nothing to do */
+ default:
+ ltype = LOG_TYPE_DLOG;
+ break;
+ }
+ return 0;
+}
+
+void log_file_close(void)
+{
+ if (log_fp) {
+ fclose(log_fp);
+ log_fp = NULL;
+ dlog_print(DLOG_DEBUG, LOG_TAG, "close log file\n");
+ }
+
+ log_type_set(LOG_TYPE_DLOG);
+
+ return;
+}
+
+int log_print(log_priority prio, const char *tag, const char *fmt, ...)
+{
+ va_list ap;
+
+ switch (ltype) {
+ case LOG_TYPE_FILE:
+ if (log_fp) {
+ va_start(ap, fmt);
+ fprintf(log_fp, "[%s] [%s]", getFormattedTime(), log_prio_name[prio]);
+ vfprintf(log_fp, fmt, ap);
+ va_end(ap);
+ fflush(log_fp);
+ }
+ break;
+ case LOG_TYPE_ALL:
+ va_start(ap, fmt);
+ if (log_fp) {
+ fprintf(log_fp, "[%s] [%s]", getFormattedTime(), log_prio_name[prio]);
+ vfprintf(log_fp, fmt, ap);
+ }
+ dlog_vprint(prio, tag, fmt, ap);
+ va_end(ap);
+
+ if (log_fp)
+ fflush(log_fp);
+ break;
+ case LOG_TYPE_DLOG:
+ default:
+ va_start(ap, fmt);
+ dlog_vprint(prio, tag, fmt, ap);
+ va_end(ap);
+ break;
+ }
+ return 0;
+}
diff --git a/src/package-manager-worker.c b/src/package-manager-worker.c
index 30446ae..aaaec2e 100755
--- a/src/package-manager-worker.c
+++ b/src/package-manager-worker.c
@@ -1,12 +1,13 @@
#include "package-manager-worker.h"
+#include "log.h"
#include "downloader.h"
#include <service_app.h>
#include <tizen.h>
bool service_app_create(void *data) {
// Todo: add your code here.
+ _D("On created");
- dlog_print(DLOG_DEBUG, "package-manager-worker", "On Created");
downloader_download("https://s3.ap-northeast-2.amazonaws.com/"
"dm-firmware-bucket/firmwares/sumin.lim%40samsung.com/"
"org.example.basic-ui-1.0.0-arm.tpk");