# HG changeset patch # User Jun Wu # Date 1482510400 0 # Node ID c80c16a8a0b092f7b0dd89169ecfc7bc6c1e1a5e # Parent b83bddfc8048ba722873b8d41afbe09c36396c3a chg: support long socket path This patch replaces UNIX_PATH_MAX (108) with PATH_MAX (4096) so we can have long unix path. diff -r b83bddfc8048 -r c80c16a8a0b0 contrib/chg/chg.c --- 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 diff -r b83bddfc8048 -r c80c16a8a0b0 tests/test-chg.t --- 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