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.
29 #define LOG_FILE_PATH "/opt/usr/data/network/netconfig.log"
30 #define MAX_LOG_SIZE 1 * 1024 * 1024
31 #define MAX_LOG_COUNT 1
33 static FILE *log_file = NULL;
35 static inline void __netconfig_log_update_file_revision(int rev)
38 char *log_file = NULL;
39 char *next_log_file = NULL;
41 next_log_rev = rev + 1;
43 log_file = g_strdup_printf("%s.%d", LOG_FILE_PATH, rev);
44 next_log_file = g_strdup_printf("%s.%d", LOG_FILE_PATH, next_log_rev);
46 if (next_log_rev >= MAX_LOG_COUNT)
47 remove(next_log_file);
49 if (access(next_log_file, F_OK) == 0)
50 __netconfig_log_update_file_revision(next_log_rev);
52 if (rename(log_file, next_log_file) != 0)
56 g_free(next_log_file);
59 static inline void __netconfig_log_make_backup(void)
64 backup = g_strdup_printf("%s.%d", LOG_FILE_PATH, rev);
66 if (access(backup, F_OK) == 0)
67 __netconfig_log_update_file_revision(rev);
69 if (rename(LOG_FILE_PATH, backup) != 0)
70 remove(LOG_FILE_PATH);
75 static inline void __netconfig_log_get_local_time(char *strtime, const int size)
81 gettimeofday(&tv, NULL);
82 local_ptm = localtime(&tv.tv_sec);
85 strftime(buf, sizeof(buf), "%m/%d %H:%M:%S", local_ptm);
87 snprintf(strtime, size, "%s.%03ld", buf, tv.tv_usec / 1000);
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)