diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-03-23 23:44:29 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-03-23 23:44:29 +0000 |
commit | 787140df3992ccc3ebdc09f6d2dcb584f580f49f (patch) | |
tree | 666fdb071676c676f52bdc204f6df801b17e7196 /networking/udhcp/common.c | |
parent | e0fe93759339a9e043cd0489f5bfabd59b5fcb78 (diff) | |
download | busybox-w32-787140df3992ccc3ebdc09f6d2dcb584f580f49f.tar.gz busybox-w32-787140df3992ccc3ebdc09f6d2dcb584f580f49f.tar.bz2 busybox-w32-787140df3992ccc3ebdc09f6d2dcb584f580f49f.zip |
remove in place of external link
Diffstat (limited to 'networking/udhcp/common.c')
-rw-r--r-- | networking/udhcp/common.c | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c deleted file mode 100644 index bf2ac4417..000000000 --- a/networking/udhcp/common.c +++ /dev/null | |||
@@ -1,162 +0,0 @@ | |||
1 | /* common.c | ||
2 | * | ||
3 | * Functions for debugging and logging as well as some other | ||
4 | * simple helper functions. | ||
5 | * | ||
6 | * Russ Dill <Russ.Dill@asu.edu> 2001-2003 | ||
7 | * Rewritten by Vladimir Oleynik <dzo@simtreas.ru> (C) 2003 | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
22 | */ | ||
23 | |||
24 | #include <fcntl.h> | ||
25 | #include <unistd.h> | ||
26 | #include <errno.h> | ||
27 | #include <string.h> | ||
28 | #include <stdlib.h> | ||
29 | #include <signal.h> | ||
30 | #include <paths.h> | ||
31 | #include <sys/socket.h> | ||
32 | #include <stdarg.h> | ||
33 | |||
34 | #include "common.h" | ||
35 | #include "pidfile.h" | ||
36 | |||
37 | |||
38 | static int daemonized; | ||
39 | |||
40 | long uptime(void) | ||
41 | { | ||
42 | struct sysinfo info; | ||
43 | sysinfo(&info); | ||
44 | return info.uptime; | ||
45 | } | ||
46 | |||
47 | |||
48 | /* | ||
49 | * This function makes sure our first socket calls | ||
50 | * aren't going to fd 1 (printf badness...) and are | ||
51 | * not later closed by daemon() | ||
52 | */ | ||
53 | static inline void sanitize_fds(void) | ||
54 | { | ||
55 | int zero; | ||
56 | if ((zero = open(_PATH_DEVNULL, O_RDWR, 0)) < 0) return; | ||
57 | while (zero < 3) zero = dup(zero); | ||
58 | close(zero); | ||
59 | } | ||
60 | |||
61 | |||
62 | void background(const char *pidfile) | ||
63 | { | ||
64 | #ifdef __uClinux__ | ||
65 | LOG(LOG_ERR, "Cannot background in uclinux (yet)"); | ||
66 | #else /* __uClinux__ */ | ||
67 | int pid_fd; | ||
68 | |||
69 | /* hold lock during fork. */ | ||
70 | pid_fd = pidfile_acquire(pidfile); | ||
71 | if (daemon(0, 0) == -1) { | ||
72 | perror("fork"); | ||
73 | exit(1); | ||
74 | } | ||
75 | daemonized++; | ||
76 | pidfile_write_release(pid_fd); | ||
77 | #endif /* __uClinux__ */ | ||
78 | } | ||
79 | |||
80 | |||
81 | #ifdef UDHCP_SYSLOG | ||
82 | void udhcp_logging(int level, const char *fmt, ...) | ||
83 | { | ||
84 | va_list p; | ||
85 | va_list p2; | ||
86 | |||
87 | va_start(p, fmt); | ||
88 | __va_copy(p2, p); | ||
89 | if(!daemonized) { | ||
90 | vprintf(fmt, p); | ||
91 | putchar('\n'); | ||
92 | } | ||
93 | vsyslog(level, fmt, p2); | ||
94 | va_end(p); | ||
95 | } | ||
96 | |||
97 | |||
98 | void start_log_and_pid(const char *client_server, const char *pidfile) | ||
99 | { | ||
100 | int pid_fd; | ||
101 | |||
102 | /* Make sure our syslog fd isn't overwritten */ | ||
103 | sanitize_fds(); | ||
104 | |||
105 | /* do some other misc startup stuff while we are here to save bytes */ | ||
106 | pid_fd = pidfile_acquire(pidfile); | ||
107 | pidfile_write_release(pid_fd); | ||
108 | |||
109 | /* equivelent of doing a fflush after every \n */ | ||
110 | setlinebuf(stdout); | ||
111 | |||
112 | openlog(client_server, LOG_PID | LOG_CONS, LOG_LOCAL0); | ||
113 | udhcp_logging(LOG_INFO, "%s (v%s) started", client_server, VERSION); | ||
114 | } | ||
115 | |||
116 | |||
117 | #else | ||
118 | |||
119 | |||
120 | static char *syslog_level_msg[] = { | ||
121 | [LOG_EMERG] = "EMERGENCY!", | ||
122 | [LOG_ALERT] = "ALERT!", | ||
123 | [LOG_CRIT] = "critical!", | ||
124 | [LOG_WARNING] = "warning", | ||
125 | [LOG_ERR] = "error", | ||
126 | [LOG_INFO] = "info", | ||
127 | [LOG_DEBUG] = "debug" | ||
128 | }; | ||
129 | |||
130 | |||
131 | void udhcp_logging(int level, const char *fmt, ...) | ||
132 | { | ||
133 | va_list p; | ||
134 | |||
135 | va_start(p, fmt); | ||
136 | if(!daemonized) { | ||
137 | printf("%s, ", syslog_level_msg[level]); | ||
138 | vprintf(fmt, p); | ||
139 | putchar('\n'); | ||
140 | } | ||
141 | va_end(p); | ||
142 | } | ||
143 | |||
144 | |||
145 | void start_log_and_pid(const char *client_server, const char *pidfile) | ||
146 | { | ||
147 | int pid_fd; | ||
148 | |||
149 | /* Make sure our syslog fd isn't overwritten */ | ||
150 | sanitize_fds(); | ||
151 | |||
152 | /* do some other misc startup stuff while we are here to save bytes */ | ||
153 | pid_fd = pidfile_acquire(pidfile); | ||
154 | pidfile_write_release(pid_fd); | ||
155 | |||
156 | /* equivelent of doing a fflush after every \n */ | ||
157 | setlinebuf(stdout); | ||
158 | |||
159 | udhcp_logging(LOG_INFO, "%s (v%s) started", client_server, VERSION); | ||
160 | } | ||
161 | #endif | ||
162 | |||