[gtk+] broadway: Proper handling of http port and display nr
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] broadway: Proper handling of http port and display nr
- Date: Thu, 27 Dec 2012 21:52:03 +0000 (UTC)
commit 3558e655b40c4e8c4b998553727d02bd44de5e66
Author: Alexander Larsson <alexl redhat com>
Date: Sun Dec 23 23:05:05 2012 +0100
broadway: Proper handling of http port and display nr
gdk/broadway/broadwayd.c | 47 ++++++++++++++++++++++++++++++++----
gdk/broadway/gdkdisplay-broadway.c | 6 ++++-
2 files changed, 47 insertions(+), 6 deletions(-)
---
diff --git a/gdk/broadway/broadwayd.c b/gdk/broadway/broadwayd.c
index 62685ad..c4ae7be 100644
--- a/gdk/broadway/broadwayd.c
+++ b/gdk/broadway/broadwayd.c
@@ -1,7 +1,9 @@
+#include "config.h"
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <stdlib.h>
#include <glib.h>
#include <gio/gio.h>
@@ -376,24 +378,59 @@ incoming_client (GSocketService *service,
return TRUE;
}
+
int
main (int argc, char *argv[])
{
- GError *error;
+ GError *error = NULL;
+ GOptionContext *context;
GMainLoop *loop;
GSocketAddress *address;
GSocketService *listener;
- char *path;
+ char *path, *base;
+ int http_port = 0;
+ int display = 1;
+ const GOptionEntry entries[] = {
+ { "port", 'p', 0, G_OPTION_ARG_INT, &http_port, "Httpd port", "PORT" },
+ { NULL }
+ };
+
+ context = g_option_context_new ("[:DISPLAY] - broadway display daemon");
+ g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+ if (!g_option_context_parse (context, &argc, &argv, &error))
+ {
+ g_printerr ("option parsing failed: %s\n", error->message);
+ exit (1);
+ }
+
+ if (argc > 1)
+ {
+ if (*argv[1] != ':')
+ {
+ g_printerr ("Usage broadwayd [:DISPLAY]\n");
+ exit (1);
+ }
+ display = strtol(argv[1]+1, NULL, 10);
+ if (display == 0)
+ {
+ g_printerr ("Failed to parse display num %s\n", argv[1]);
+ exit (1);
+ }
+ }
+
+ if (http_port == 0)
+ http_port = 8080 + (display - 1);
- error = NULL;
- server = _gdk_broadway_server_new (8080, &error);
+ server = _gdk_broadway_server_new (http_port, &error);
if (server == NULL)
{
g_printerr ("%s\n", error->message);
return 1;
}
- path = g_build_filename (g_get_user_runtime_dir (), "broadway1.socket", NULL);
+ base = g_strdup_printf ("broadway%d.socket", display);
+ path = g_build_filename (g_get_user_runtime_dir (), base, NULL);
+ g_free (base);
g_print ("Listening on %s\n", path);
address = g_unix_socket_address_new_with_type (path, -1,
G_UNIX_SOCKET_ADDRESS_ABSTRACT);
diff --git a/gdk/broadway/gdkdisplay-broadway.c b/gdk/broadway/gdkdisplay-broadway.c
index ef3084c..8a3bf65 100644
--- a/gdk/broadway/gdkdisplay-broadway.c
+++ b/gdk/broadway/gdkdisplay-broadway.c
@@ -157,7 +157,11 @@ _gdk_broadway_display_open (const gchar *display_name)
port = 0;
if (display_name != NULL)
- port = strtol(display_name, NULL, 10);
+ {
+ if (*display_name == ':')
+ display_name++;
+ port = strtol(display_name, NULL, 10);
+ }
if (port == 0)
port = 1;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]