chg: support long socket path
This patch replaces UNIX_PATH_MAX (108) with PATH_MAX (4096) so we can have
long unix path.
--- 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