Apply smack rule.
[apps/native/starter.git] / src / lockd-debug.c
1  /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
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
7   *
8   *     http://floralicense.org/license/
9   *
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.
15   */
16
17
18
19 #include <stdio.h>
20 #include <stdarg.h>
21 #include <fcntl.h>
22 #include <time.h>
23 #include <string.h>
24 #include <stdlib.h>
25 #include <unistd.h>
26 #include <glib.h>
27
28 #include "lockd-debug.h"
29
30 #define LINEMAX 256
31 #define MAXFILELEN      1048576
32 #define LOGFILE "/tmp/starter.log"
33
34 void lockd_log_t(char *fmt, ...)
35 {
36         va_list ap;
37         FILE *fd = 0;
38         char buf[LINEMAX] = { 0, };
39         char debugString[LINEMAX] = { 0, };
40
41         va_start(ap, fmt);
42         vsnprintf(buf, sizeof(buf), fmt, ap);
43         va_end(ap);
44         int fileLen = 0;
45         struct tm local_t;
46         time_t current_time = 0;
47         bzero((char *)&debugString, LINEMAX);
48         time(&current_time);
49         gmtime_r(&current_time, &local_t);
50         int len = snprintf(debugString, sizeof(debugString),
51                            "[%d-%02d-%02d, %02d:%02d:%02d]: ",
52                            local_t.tm_year + 1900, local_t.tm_mon + 1,
53                            local_t.tm_mday, local_t.tm_hour, local_t.tm_min,
54                            local_t.tm_sec);
55         if (len == -1) {
56                 return;
57         } else {
58                 debugString[len] = '\0';
59         }
60         len = g_strlcat(debugString, buf, LINEMAX);
61         if (len >= LINEMAX) {
62                 return;
63         } else {
64                 debugString[len] = '\n';
65         }
66         if ((fd = fopen(LOGFILE, "at+")) == NULL) {
67                 LOCKD_DBG("File fopen fail for writing Pwlock information");
68         } else {
69                 int pid = -1;
70                 if (fwrite(debugString, strlen(debugString), 1, fd) < 1) {
71                         LOCKD_DBG
72                             ("File fwrite fail for writing Pwlock information");
73                         fclose(fd);
74                         if ((pid = fork()) < 0) {
75                         } else if (pid == 0) {
76                                 execl("/bin/rm", "rm", "-f", LOGFILE,
77                                       (char *)0);
78                         }
79                 } else {
80                         fseek(fd, 0l, SEEK_END);
81                         fileLen = ftell(fd);
82                         if (fileLen > MAXFILELEN) {
83                                 fclose(fd);
84                                 if ((pid = fork()) < 0) {
85                                         return;
86                                 } else if (pid == 0) {
87                                         execl("/bin/rm", "rm", "-f", LOGFILE,
88                                               (char *)0);
89                                 }
90                         } else
91                                 fclose(fd);
92                 }
93         }
94 }