chg: support long socket path
authorJun Wu <quark@fb.com>
Fri, 23 Dec 2016 16:26:40 +0000
changeset 30677 c80c16a8a0b0
parent 30676 b83bddfc8048
child 30678 caf7e1c5efe4
chg: support long socket path This patch replaces UNIX_PATH_MAX (108) with PATH_MAX (4096) so we can have long unix path.
contrib/chg/chg.c
tests/test-chg.t
--- a/contrib/chg/chg.c	Fri Dec 23 16:16:44 2016 +0000
+++ b/contrib/chg/chg.c	Fri Dec 23 16:26:40 2016 +0000
@@ -25,14 +25,14 @@
 #include "hgclient.h"
 #include "util.h"
 
-#ifndef UNIX_PATH_MAX
-#define UNIX_PATH_MAX (sizeof(((struct sockaddr_un *)NULL)->sun_path))
+#ifndef PATH_MAX
+#define PATH_MAX 4096
 #endif
 
 struct cmdserveropts {
-	char sockname[UNIX_PATH_MAX];
-	char initsockname[UNIX_PATH_MAX];
-	char redirectsockname[UNIX_PATH_MAX];
+	char sockname[PATH_MAX];
+	char initsockname[PATH_MAX];
+	char redirectsockname[PATH_MAX];
 	size_t argsize;
 	const char **args;
 };
@@ -130,7 +130,7 @@
 static void setcmdserveropts(struct cmdserveropts *opts)
 {
 	int r;
-	char sockdir[UNIX_PATH_MAX];
+	char sockdir[PATH_MAX];
 	const char *envsockname = getenv("CHGSOCKNAME");
 	if (!envsockname) {
 		/* by default, put socket file in secure directory
--- a/tests/test-chg.t	Fri Dec 23 16:16:44 2016 +0000
+++ b/tests/test-chg.t	Fri Dec 23 16:26:40 2016 +0000
@@ -16,6 +16,20 @@
   [255]
 
   $ cp $HGRCPATH.orig $HGRCPATH
+
+long socket path
+
+  $ sockpath=$TESTTMP/this/path/should/be/longer/than/one-hundred-and-seven/characters/where/107/is/the/typical/size/limit/of/unix-domain-socket
+  $ mkdir -p $sockpath
+  $ bakchgsockname=$CHGSOCKNAME
+  $ CHGSOCKNAME=$sockpath/server
+  $ export CHGSOCKNAME
+  $ chg root
+  $TESTTMP/foo
+  $ rm -rf $sockpath
+  $ CHGSOCKNAME=$bakchgsockname
+  $ export CHGSOCKNAME
+
   $ cd ..
 
 server lifecycle