2 * Copyright 2013 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
24 #include <sys/types.h>
32 #include "critical_log.h"
33 #include "livebox-errno.h" /* For error code */
49 int critical_log(const char *func, int line, const char *fmt, ...)
55 return LB_STATUS_ERROR_IO;
58 #if defined(_USE_ECORE_TIME_GET)
60 tv = util_timestamp();
61 fprintf(s_info.fp, "%d %lf [%s:%d] ", getpid(), tv, util_basename((char *)func), line);
64 gettimeofday(&tv, NULL);
65 fprintf(s_info.fp, "%d %lu.%lu [%s:%d] ", getpid(), tv.tv_sec, tv.tv_usec, util_basename((char *)func), line);
69 ret = vfprintf(s_info.fp, fmt, ap);
73 if (s_info.nr_of_lines == MAX_LOG_LINE) {
77 s_info.file_id = (s_info.file_id + 1) % MAX_LOG_FILE;
79 namelen = strlen(s_info.filename) + strlen(SLAVE_LOG_PATH) + 20;
80 filename = malloc(namelen);
82 snprintf(filename, namelen, "%s/%d_%s", SLAVE_LOG_PATH, s_info.file_id, s_info.filename);
85 if (fclose(s_info.fp) != 0) {
86 ErrPrint("fclose: %s\n", strerror(errno));
90 s_info.fp = fopen(filename, "w+");
92 ErrPrint("Failed to open a file: %s\n", filename);
98 s_info.nr_of_lines = 0;
105 int critical_log_init(const char *name)
114 s_info.filename = strdup(name);
115 if (!s_info.filename) {
116 ErrPrint("Failed to create a log file\n");
117 return LB_STATUS_ERROR_MEMORY;
120 namelen = strlen(name) + strlen(SLAVE_LOG_PATH) + 20;
122 filename = malloc(namelen);
124 ErrPrint("Failed to create a log file\n");
125 free(s_info.filename);
126 s_info.filename = NULL;
127 return LB_STATUS_ERROR_MEMORY;
130 snprintf(filename, namelen, "%s/%d_%s", SLAVE_LOG_PATH, s_info.file_id, name);
132 s_info.fp = fopen(filename, "w+");
134 ErrPrint("Failed to open log: %s\n", strerror(errno));
135 free(s_info.filename);
136 s_info.filename = NULL;
138 return LB_STATUS_ERROR_IO;
147 int critical_log_fini(void)
149 if (s_info.filename) {
150 free(s_info.filename);
151 s_info.filename = NULL;
155 if (fclose(s_info.fp) != 0) {
156 ErrPrint("fclose: %s\n", strerror(errno));