2 * Network Configuration Module
4 * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
26 #include <tzplatform_config.h>
30 #define LOG_FILE_PATH "/opt/usr/data/network/netconfig.log"
31 #define MAX_LOG_SIZE 1 * 1024 * 1024
32 #define MAX_LOG_COUNT 1
34 static FILE *log_file = NULL;
36 static inline void __netconfig_log_update_file_revision(int rev)
39 char *log_file = NULL;
40 char *next_log_file = NULL;
42 next_log_rev = rev + 1;
44 log_file = g_strdup_printf("%s.%d", LOG_FILE_PATH, rev);
45 next_log_file = g_strdup_printf("%s.%d", LOG_FILE_PATH, next_log_rev);
47 if (next_log_rev >= MAX_LOG_COUNT)
48 remove(next_log_file);
50 if (access(next_log_file, F_OK) == 0)
51 __netconfig_log_update_file_revision(next_log_rev);
53 if (rename(log_file, next_log_file) != 0)
57 g_free(next_log_file);
60 static inline void __netconfig_log_make_backup(void)
65 backup = g_strdup_printf("%s.%d", LOG_FILE_PATH, rev);
67 if (access(backup, F_OK) == 0)
68 __netconfig_log_update_file_revision(rev);
70 if (rename(LOG_FILE_PATH, backup) != 0)
71 remove(LOG_FILE_PATH);
76 static inline void __netconfig_log_get_local_time(char *strtime, const int size)
80 struct tm result = {0, };
84 local_ptm = localtime_r(&buf, &result);
87 strftime(strtime, size, "%m/%d %H:%M:%S", local_ptm);
90 void netconfig_log(const char *format, ...)
99 log_file = (FILE *)fopen(LOG_FILE_PATH, "a+");
101 if (log_file == NULL)
104 va_start(ap, format);
106 if (fstat(fileno(log_file), &buf) == 0)
107 log_size = buf.st_size;
109 if (log_size >= MAX_LOG_SIZE) {
113 __netconfig_log_make_backup();
115 log_file = (FILE *)fopen(LOG_FILE_PATH, "a+");
117 if (log_file == NULL) {
123 __netconfig_log_get_local_time(strtime, sizeof(strtime));
125 if (vsnprintf(str, sizeof(str), format, ap) > 0)
126 fprintf(log_file, "%s %s", strtime, str);
131 void log_cleanup(void)
133 if (log_file == NULL)