summary refs log tree commit diff
path: root/nix/nix-daemon/guix-daemon.cc
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-02-19 22:48:13 +0100
committerLudovic Courtès <ludo@gnu.org>2013-02-19 22:48:13 +0100
commitb8d2aa264de4ebff472698347588f36ed6d4a3e8 (patch)
tree9556f5c65f0a2cc0bc573a7209683115a115ada0 /nix/nix-daemon/guix-daemon.cc
parent15b673ebe88cd98d3f49039a5da1a37bfc5f9b8e (diff)
downloadguix-b8d2aa264de4ebff472698347588f36ed6d4a3e8.tar.gz
daemon: Add `--listen'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_LISTEN): New macro.
  (options): Add `--listen'.
  (parse_opt): Handle it.
* doc/guix.texi (Invoking guix-daemon): Mention it.
Diffstat (limited to 'nix/nix-daemon/guix-daemon.cc')
-rw-r--r--nix/nix-daemon/guix-daemon.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 604a26f0b1..1611840bd4 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -1,5 +1,5 @@
 /* GNU Guix --- Functional package management for GNU
-   Copyright (C) 2012  Ludovic Courtès <ludo@gnu.org>
+   Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
 
    This file is part of GNU Guix.
 
@@ -64,6 +64,7 @@ builds derivations on behalf of its clients.";
 #define GUIX_OPT_IMPERSONATE_LINUX_26 8
 #define GUIX_OPT_DEBUG 9
 #define GUIX_OPT_CHROOT_DIR 10
+#define GUIX_OPT_LISTEN 11
 
 static const struct argp_option options[] =
   {
@@ -103,6 +104,8 @@ static const struct argp_option options[] =
       " (this option has no effect in this configuration)"
 #endif
     },
+    { "listen", GUIX_OPT_LISTEN, "SOCKET", 0,
+      "Listen for connections on SOCKET" },
     { "debug", GUIX_OPT_DEBUG, 0, 0,
       "Produce debugging output" },
     { 0, 0, 0, 0, 0 }
@@ -138,6 +141,17 @@ parse_opt (int key, char *arg, struct argp_state *state)
     case GUIX_OPT_LOSE_LOGS:
       settings.keepLog = false;
       break;
+    case GUIX_OPT_LISTEN:
+      try
+	{
+	  settings.nixDaemonSocketFile = canonPath (arg);
+	}
+      catch (std::exception &e)
+	{
+	  fprintf (stderr, "error: %s\n", e.what ());
+	  exit (EXIT_FAILURE);
+	}
+      break;
     case GUIX_OPT_DEBUG:
       verbosity = lvlDebug;
       break;
@@ -207,6 +221,9 @@ main (int argc, char *argv[])
 	}
 #endif
 
+      printMsg (lvlDebug,
+		format ("listening on `%1%'") % settings.nixDaemonSocketFile);
+
       run (nothing);
     }
   catch (std::exception &e)