diff --git a/obexd/client/main.c b/obexd/client/main.c
index 6387bff..b15729b 100644
--- a/obexd/client/main.c
+++ b/obexd/client/main.c
#include <stdlib.h>
#include <string.h>
#include <signal.h>
+#include <syslog.h>
#include <glib.h>
#include <gdbus.h>
+#include "logging.h"
#include "session.h"
#define CLIENT_SERVICE "org.openobex.client"
static GMainLoop *event_loop = NULL;
+static gboolean option_debug = FALSE;
+static gboolean option_stderr = FALSE;
+
+static GOptionEntry options[] = {
+ { "debug", 'd', 0, G_OPTION_ARG_NONE, &option_debug,
+ "Enable debug information output" },
+ { "stderr", 's', 0, G_OPTION_ARG_NONE, &option_stderr,
+ "Write log information to stderr" },
+ { NULL },
+};
+
static void sig_term(int sig)
{
g_main_loop_quit(event_loop);
int main(int argc, char *argv[])
{
+ GOptionContext *context;
struct sigaction sa;
DBusConnection *conn;
- DBusError err;
+ DBusError derr;
+ GError *gerr = NULL;
+ int log_option;
+
+ context = g_option_context_new(NULL);
+ g_option_context_add_main_entries(context, options, NULL);
+
+ g_option_context_parse(context, &argc, &argv, &gerr);
+ if (gerr != NULL) {
+ g_printerr("%s\n", gerr->message);
+ g_error_free(gerr);
+ exit(EXIT_FAILURE);
+ }
- dbus_error_init(&err);
+ g_option_context_free(context);
- conn = g_dbus_setup_bus(DBUS_BUS_SESSION, CLIENT_SERVICE, &err);
+ dbus_error_init(&derr);
+
+ conn = g_dbus_setup_bus(DBUS_BUS_SESSION, CLIENT_SERVICE, &derr);
if (conn == NULL) {
- if (dbus_error_is_set(&err) == TRUE) {
- fprintf(stderr, "%s\n", err.message);
- dbus_error_free(&err);
+ if (dbus_error_is_set(&derr) == TRUE) {
+ g_printerr("%s", derr.message);
+ dbus_error_free(&derr);
} else
- fprintf(stderr, "Can't register with session bus\n");
+ g_printerr("Can't register with session bus\n");
exit(EXIT_FAILURE);
}
if (g_dbus_register_interface(conn, CLIENT_PATH, CLIENT_INTERFACE,
client_methods, NULL, NULL,
NULL, NULL) == FALSE) {
- fprintf(stderr, "Can't register client interface\n");
+ g_printerr("Can't register client interface\n");
dbus_connection_unref(conn);
exit(EXIT_FAILURE);
}
event_loop = g_main_loop_new(NULL, FALSE);
+ log_option = LOG_NDELAY | LOG_PID;
+
+ if (option_stderr == TRUE)
+ log_option |= LOG_PERROR;
+
+ openlog("obex-client", log_option, LOG_DAEMON);
+
+ if (option_debug == TRUE) {
+ info("Enabling debug information");
+ enable_debug();
+ }
+
memset(&sa, 0, sizeof(sa));
sa.sa_handler = sig_term;
sigaction(SIGINT, &sa, NULL);
diff --git a/obexd/client/pbap.c b/obexd/client/pbap.c
index 97a63a8..06955b4 100644
--- a/obexd/client/pbap.c
+++ b/obexd/client/pbap.c
#include <glib.h>
#include <gdbus.h>
+#include "logging.h"
#include "session.h"
#include "pbap.h"
struct apparam_hdr *hdr = (struct apparam_hdr *) buf;
if (hdr->len > size - APPARAM_HDR_SIZE) {
- fprintf(stderr, "Unexpected PBAP pullphonebook app"
- " length, tag %d, len %d\n",
+ error("Unexpected PBAP pullphonebook app"
+ " length, tag %d, len %d",
hdr->tag, hdr->len);
return;
}
*new_missed_calls = hdr->val[0];
break;
default:
- fprintf(stderr, "Unexpected PBAP pullphonebook app"
- " parameter, tag %d, len %d\n",
+ error("Unexpected PBAP pullphonebook app"
+ " parameter, tag %d, len %d",
hdr->tag, hdr->len);
}
func = phonebook_size_callback;
break;
default:
- fprintf(stderr, "Unexpected type : 0x%2x\n", type);
+ error("Unexpected type : 0x%2x", type);
return NULL;
}
diff --git a/obexd/client/session.c b/obexd/client/session.c
index 86ae746..ed0b94b 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
#include <bluetooth/sdp.h>
#include <bluetooth/sdp_lib.h>
+#include "logging.h"
#include "pbap.h"
#include "sync.h"
#include "session.h"
}
if (err) {
- fprintf(stderr, "gw_obex_xfer_read(): %s\n",
+ error("gw_obex_xfer_read(): %s",
OBEX_ResponseToString(err));
goto complete;
}
}
if (ret == FALSE) {
- fprintf(stderr, "gw_obex_xfer_read(): %s\n",
+ error("gw_obex_xfer_read(): %s",
OBEX_ResponseToString(err));
goto complete;
}
dbus_error_init(&derr);
if (dbus_set_error_from_message(&derr, reply)) {
- fprintf(stderr, "Replied with an error: %s, %s\n",
+ error("Replied with an error: %s, %s",
derr.name, derr.message);
dbus_error_free(&derr);
goto fail;
fd = open(targetname, O_WRONLY | O_CREAT, 0600);
if (fd < 0) {
err = errno;
- fprintf(stderr, "open(): %s(%d)\n", strerror(err), err);
+ error("open(): %s(%d)", strerror(err), err);
return -err;
}
}