X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dbus%2Fdbus-sysdeps-util-unix.c;h=6053265b6f69aeacdbd88dcaa5a1bcbcdda4ae5d;hb=7e1820aa89f6242fdf96e96352e4f27cbd8ccf60;hp=805c919d768d86fa5a582f86309f658b77fae59b;hpb=513f1379125c208197846dce135d1f886ebc3361;p=platform%2Fupstream%2Fdbus.git diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c index 805c919..6053265 100644 --- a/dbus/dbus-sysdeps-util-unix.c +++ b/dbus/dbus-sysdeps-util-unix.c @@ -49,12 +49,17 @@ #include #include #include + +#ifdef HAVE_SYSLOG_H #include +#endif #ifdef HAVE_SYS_SYSLIMITS_H #include #endif +#include "sd-daemon.h" + #ifndef O_BINARY #define O_BINARY 0 #endif @@ -123,6 +128,7 @@ _dbus_become_daemon (const DBusString *pidfile, dup2 (dev_null_fd, 2); else _dbus_verbose ("keeping stderr open due to DBUS_DEBUG_OUTPUT\n"); + close (dev_null_fd); } if (!keep_umask) @@ -254,8 +260,8 @@ _dbus_write_pid_to_file_and_pipe (const DBusString *pidfile, DBusString pid; int bytes; - _dbus_verbose ("writing our pid to pipe %"PRIuPTR"\n", - print_pid_pipe->fd_or_handle); + _dbus_verbose ("writing our pid to pipe %d\n", + print_pid_pipe->fd); if (!_dbus_string_init (&pid)) { @@ -375,13 +381,13 @@ _dbus_change_to_daemon_user (const char *user, /** * Attempt to ensure that the current process can open - * at least @limit file descriptors. + * at least @p limit file descriptors. * - * If @limit is lower than the current, it will not be + * If @p limit is lower than the current, it will not be * lowered. No error is returned if the request can * not be satisfied. * - * @limit Number of file descriptors + * @param limit number of file descriptors */ void _dbus_request_file_descriptor_limit (unsigned int limit) @@ -421,11 +427,23 @@ _dbus_request_file_descriptor_limit (unsigned int limit) #endif } -void -_dbus_init_system_log (void) +void +_dbus_init_system_log (dbus_bool_t is_daemon) { - openlog ("dbus", LOG_PID | LOG_PERROR, LOG_DAEMON); +#ifdef HAVE_SYSLOG_H + int logopts = LOG_PID; + +#if HAVE_DECL_LOG_PERROR +#ifdef HAVE_SYSTEMD + if (!is_daemon || sd_booted () <= 0) +#endif + logopts |= LOG_PERROR; +#endif + + openlog ("dbus", logopts, LOG_DAEMON); +#endif } + /** * Log a message to the system log file (e.g. syslog on Unix). * @@ -459,6 +477,8 @@ _dbus_system_log (DBusSystemLogSeverity severity, const char *msg, ...) void _dbus_system_logv (DBusSystemLogSeverity severity, const char *msg, va_list args) { + va_list tmp; +#ifdef HAVE_SYSLOG_H int flags; switch (severity) { @@ -475,7 +495,21 @@ _dbus_system_logv (DBusSystemLogSeverity severity, const char *msg, va_list args return; } - vsyslog (flags, msg, args); + DBUS_VA_COPY (tmp, args); + vsyslog (flags, msg, tmp); + va_end (tmp); +#endif + +#if !defined(HAVE_SYSLOG_H) || !HAVE_DECL_LOG_PERROR + { + /* vsyslog() won't write to stderr, so we'd better do it */ + DBUS_VA_COPY (tmp, args); + fprintf (stderr, "dbus[" DBUS_PID_FORMAT "]: ", _dbus_getpid ()); + vfprintf (stderr, msg, tmp); + fputc ('\n', stderr); + va_end (tmp); + } +#endif if (severity == DBUS_SYSTEM_LOG_FATAL) exit (1); @@ -522,7 +556,7 @@ _dbus_user_at_console (const char *username, DBusError *error) { - DBusString f; + DBusString u, f; dbus_bool_t result; result = FALSE; @@ -538,8 +572,9 @@ _dbus_user_at_console (const char *username, goto out; } + _dbus_string_init_const (&u, username); - if (!_dbus_string_append (&f, username)) + if (!_dbus_concat_dir_and_file (&f, &u)) { _DBUS_SET_OOM (error); goto out;