Please find patch attached to address this. Steve -- http://www.steve.org.uk/
--- /tmp/screen-4.0.3/process.c 2003-09-18 13:53:54.000000000 +0100 +++ /tmp/user/1000/screen-4.0.3/process.c 2007-10-24 21:43:39.000000000 +0100 @@ -32,13 +32,77 @@ #ifndef sun #include <sys/ioctl.h> #endif +#include <pwd.h> #include "config.h" char *noargs[1]; + +/* + * naive tilde expansion for filenames. + * + * NOTE: Caller frees. + */ +char * +expand_tilde( char *input ) +{ + int i = 0; + char *slash = NULL; + + if ( input == NULL ) + return NULL; + + if ( input[0] != '~' ) + return strdup(input); + + /* OK the string starts with a tilde. Find the first '/' */ + slash = strchr( input, '/' ); + + if (( slash != NULL ) && (( slash-input ) <= 128 )) + { + /* username between ~foo/ */ + char user[128 ]; + + /* memory we allocate for return */ + char *mem; + + memset(user, '\0', sizeof(user)); + strncpy( user, input+1, (slash-input)-1); + + if ( strlen(user) > 0 ) + { + /* we did find a username after ~ */ + + struct passwd *user_entry; + if ((user_entry = getpwnam(user)) != 0) + { + mem = (char *)malloc( strlen( input ) + strlen( user_entry->pw_dir ) + 2 ); + sprintf( mem, "%s%s", user_entry->pw_dir, slash ); + return mem; + } + } + else + { + /* current user */ + char *home = getenv( "HOME" ); + if ( NULL != home ) + { + mem = (char *)malloc( strlen( input ) + strlen( home ) + 2 ); + + sprintf( mem, "%s%s", home, slash ); + return mem; + } + } + } + + /* can't happen? */ + return strdup(input); +} + + void InitKeytab() { @@ -1031,6 +1098,7 @@ int argc, i, n, msgok; char *s; char ch; + char *expanded; /* tilde-expanded filename for chdir */ struct display *odisplay = display; struct acluser *user; @@ -2368,8 +2441,10 @@ break; case RC_CHDIR: s = *args ? *args : home; - if (chdir(s) == -1) - Msg(errno, "%s", s); + expanded = expand_tilde( s ); + if (chdir(expanded) == -1) + Msg(errno, "%s", expanded); + free(expanded); break; case RC_SHELL: case RC_DEFSHELL: -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]