diff -ruN screen-3.9.10.org/fileio.c screen-3.9.10/fileio.c --- screen-3.9.10.org/fileio.c Thu May 3 16:43:24 2001 +++ screen-3.9.10/fileio.c Sun Jun 2 01:23:37 2002 @@ -112,7 +112,14 @@ rc = SaveStr(p); } else - { + if (getenv("CONFIG_DIR")) { + debug(" ...nothing in $SCREENRC, defaulting $HOME/$CONFIG_DIR/screen/screenrc\n"); + if ((strlen(home)+strlen(getenv("CONFIG_DIR"))+7) > sizeof(buf) - 12) + Panic(0, "Rc: home too large"); + sprintf(buf, "%s/%s/screen/screenrc", home, getenv("CONFIG_DIR")); + rc = SaveStr(buf); + } + else { debug(" ...nothing in $SCREENRC, defaulting $HOME/.screenrc\n"); if (strlen(home) > sizeof(buf) - 12) Panic(0, "Rc: home too large"); diff -ruN screen-3.9.10.org/screen.c screen-3.9.10/screen.c --- screen-3.9.10.org/screen.c Sun Jun 2 01:08:28 2002 +++ screen-3.9.10/screen.c Sun Jun 2 01:27:43 2002 @@ -882,7 +882,10 @@ #endif /* DEBUG */ } - snprintf(bufferfile,sizeof(bufferfile),"%s/.screen-exchange", home); + if (getenv("CONFIG_DIR")) + snprintf(bufferfile,sizeof(bufferfile),"%s/%s/screen/exchange", home, getenv("CONFIG_DIR")); + else + snprintf(bufferfile,sizeof(bufferfile),"%s/.screen-exchange", home); BufferFile = SaveStr(bufferfile); #ifdef _MODE_T oumask = umask(0); /* well, unsigned never fails? jw. */ @@ -904,7 +907,10 @@ if (multiattach) { # ifndef SOCKDIR - sprintf(SockPath, "%s/.screen", multi_home); + if (getenv("CONFIG_DIR")) + sprintf(SockPath, "%s/%s/screen/sockets", multi_home, getenv("CONFIG_DIR")); + else + sprintf(SockPath, "%s/.screen", multi_home); SockDir = SockPath; # else SockDir = SOCKDIR; @@ -917,7 +923,10 @@ #ifndef SOCKDIR if (SockDir == 0) { - sprintf(SockPath, "%s/.screen", home); + if (getenv("CONFIG_DIR")) + sprintf(SockPath, "%s/%s/screen/sockets", home, getenv("CONFIG_DIR")); + else + sprintf(SockPath, "%s/.screen", home); SockDir = SockPath; } #endif