summaryrefslogtreecommitdiff
path: root/scripts/openvpn-script.c
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2012-11-12 14:07:54 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-11-23 12:58:52 +0200
commit7270920bf73fe37ff15a25360dd1e63bad239515 (patch)
tree3cf743b93dad7fdcdd49f360391a35ca01ff7c59 /scripts/openvpn-script.c
parentd3910ab6489d16082543215ffaa780981e520e31 (diff)
downloadconnman-7270920bf73fe37ff15a25360dd1e63bad239515.tar.gz
connman-7270920bf73fe37ff15a25360dd1e63bad239515.tar.bz2
connman-7270920bf73fe37ff15a25360dd1e63bad239515.zip
openvpn-script: Print errors to syslog instead of stderr
Use syslog for error printing because normally the stderr goes to /dev/null and we do not see the errors.
Diffstat (limited to 'scripts/openvpn-script.c')
-rw-r--r--scripts/openvpn-script.c42
1 files changed, 32 insertions, 10 deletions
diff --git a/scripts/openvpn-script.c b/scripts/openvpn-script.c
index 3d463843..e359c314 100644
--- a/scripts/openvpn-script.c
+++ b/scripts/openvpn-script.c
@@ -27,11 +27,23 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <syslog.h>
+#include <libgen.h>
#include <dbus/dbus.h>
extern char **environ;
+static void print(const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vsyslog(LOG_INFO, format, ap);
+ va_end(ap);
+}
+
+
static void append(DBusMessageIter *dict, const char *pattern)
{
DBusMessageIter entry;
@@ -61,6 +73,9 @@ int main(int argc, char *argv[])
DBusMessage *msg;
DBusMessageIter iter, dict;
char **envp, *busname, *interface, *path, *reason;
+ int ret = 0;
+
+ openlog(basename(argv[0]), LOG_NDELAY | LOG_PID, LOG_DAEMON);
busname = getenv("CONNMAN_BUSNAME");
interface = getenv("CONNMAN_INTERFACE");
@@ -69,27 +84,29 @@ int main(int argc, char *argv[])
reason = getenv("script_type");
if (!busname || !interface || !path || !reason) {
- fprintf(stderr, "Required environment variables not set\n");
- return 1;
+ print("Required environment variables not set");
+ ret = 1;
+ goto out;
}
dbus_error_init(&error);
conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
if (conn == NULL) {
if (dbus_error_is_set(&error) == TRUE) {
- fprintf(stderr, "%s\n", error.message);
+ print("%s", error.message);
dbus_error_free(&error);
} else
- fprintf(stderr, "Failed to get on system bus\n");
- return 0;
+ print("Failed to get on system bus");
+
+ goto out;
}
msg = dbus_message_new_method_call(busname, path,
interface, "notify");
if (msg == NULL) {
dbus_connection_unref(conn);
- fprintf(stderr, "Failed to allocate method call\n");
- return 0;
+ print("Failed to allocate method call");
+ goto out;
}
dbus_message_set_no_reply(msg, TRUE);
@@ -110,8 +127,10 @@ int main(int argc, char *argv[])
dbus_message_iter_close_container(&iter, &dict);
- if (dbus_connection_send(conn, msg, NULL) == FALSE)
- fprintf(stderr, "Failed to send message\n");
+ if (dbus_connection_send(conn, msg, NULL) == FALSE) {
+ print("Failed to send message");
+ goto out;
+ }
dbus_connection_flush(conn);
@@ -119,5 +138,8 @@ int main(int argc, char *argv[])
dbus_connection_unref(conn);
- return 0;
+out:
+ closelog();
+
+ return ret;
}