Ignore:
Timestamp:
Nov 4, 2007, 3:16:40 AM (17 years ago)
Author:
Bruno Cornec
Message:

Update to busybox 1.7.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.5/mindi-busybox/networking/udhcp/common.c

    r821 r1765  
    11/* vi: set sw=4 ts=4: */
    22/* common.c
    3  *
    4  * Functions for debugging and logging as well as some other
    5  * simple helper functions.
    6  *
    7  * Russ Dill <Russ.Dill@asu.edu> 2001-2003
    8  * Rewritten by Vladimir Oleynik <dzo@simtreas.ru> (C) 2003
    93 *
    104 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
    115 */
    126
    13 #include <fcntl.h>
    14 #include <unistd.h>
    15 #include <errno.h>
    16 #include <string.h>
    17 #include <stdlib.h>
    18 #include <signal.h>
    19 #include <paths.h>
    20 #include <sys/socket.h>
    21 #include <stdarg.h>
     7#include "common.h"
    228
    23 #include "common.h"
    24 #include "pidfile.h"
    25 
    26 
    27 static int daemonized;
    28 
    29 long uptime(void)
    30 {
    31     struct sysinfo info;
    32     sysinfo(&info);
    33     return info.uptime;
    34 }
    35 
    36 
    37 /*
    38  * This function makes sure our first socket calls
    39  * aren't going to fd 1 (printf badness...) and are
    40  * not later closed by daemon()
    41  */
    42 static inline void sanitize_fds(void)
    43 {
    44     int zero;
    45     if ((zero = open(bb_dev_null, O_RDWR, 0)) < 0)
    46         return;
    47     while (zero < 3)
    48         zero = dup(zero);
    49     close(zero);
    50 }
    51 
    52 
    53 void udhcp_background(const char *pidfile)
    54 {
    55 #ifdef __uClinux__
    56     LOG(LOG_ERR, "Cannot background in uclinux (yet)");
    57 #else /* __uClinux__ */
    58     int pid_fd;
    59 
    60     /* hold lock during fork. */
    61     pid_fd = pidfile_acquire(pidfile);
    62     if (daemon(0, 0) == -1) { /* bb_xdaemon? */
    63         perror("fork");
    64         exit(1);
    65     }
    66     daemonized++;
    67     pidfile_write_release(pid_fd);
    68 #endif /* __uClinux__ */
    69 }
    70 
    71 
    72 #ifdef CONFIG_FEATURE_UDHCP_SYSLOG
    73 
    74 void udhcp_logging(int level, const char *fmt, ...)
    75 {
    76     va_list p;
    77     va_list p2;
    78 
    79     va_start(p, fmt);
    80     __va_copy(p2, p);
    81     if (!daemonized) {
    82         vprintf(fmt, p);
    83         putchar('\n');
    84     }
    85     vsyslog(level, fmt, p2);
    86     va_end(p);
    87 }
    88 
    89 #else
    90 
    91 
    92 static char *syslog_level_msg[] = {
    93     [LOG_EMERG]   = "EMERGENCY!",
    94     [LOG_ALERT]   = "ALERT!",
    95     [LOG_CRIT]    = "critical!",
    96     [LOG_WARNING] = "warning",
    97     [LOG_ERR]     = "error",
    98     [LOG_INFO]    = "info",
    99     [LOG_DEBUG]   = "debug"
     9const uint8_t MAC_BCAST_ADDR[6] ALIGN2 = {
     10    0xff, 0xff, 0xff, 0xff, 0xff, 0xff
    10011};
    101 
    102 
    103 void udhcp_logging(int level, const char *fmt, ...)
    104 {
    105     va_list p;
    106 
    107     va_start(p, fmt);
    108     if (!daemonized) {
    109         printf("%s, ", syslog_level_msg[level]);
    110         vprintf(fmt, p);
    111         putchar('\n');
    112     }
    113     va_end(p);
    114 }
    115 #endif
    116 
    117 
    118 void udhcp_start_log_and_pid(const char *client_server, const char *pidfile)
    119 {
    120     int pid_fd;
    121 
    122     /* Make sure our syslog fd isn't overwritten */
    123     sanitize_fds();
    124 
    125     /* do some other misc startup stuff while we are here to save bytes */
    126     pid_fd = pidfile_acquire(pidfile);
    127     pidfile_write_release(pid_fd);
    128 
    129     /* equivelent of doing a fflush after every \n */
    130     setlinebuf(stdout);
    131 
    132     if (ENABLE_FEATURE_UDHCP_SYSLOG)
    133         openlog(client_server, LOG_PID | LOG_CONS, LOG_LOCAL0);
    134 
    135     udhcp_logging(LOG_INFO, "%s (v%s) started", client_server, BB_VER);
    136 }
Note: See TracChangeset for help on using the changeset viewer.