commit 5bd21066c5fa3a39816416f93186c88832957330 from: rsc date: Wed Jan 18 23:11:00 2006 UTC different login shell commit - 8a6837e8c0d174477fd6e8aca509c2107b414bf0 commit + 5bd21066c5fa3a39816416f93186c88832957330 blob - 0fc979dbfa087448e471722c7d5643c454e4a757 blob + 0c5609bd35afcea3b034d1aa09bf45d1c082617c --- src/cmd/9term/9term.c +++ src/cmd/9term/9term.c @@ -59,6 +59,9 @@ threadmain(int argc, char *argv[]) ARGBEGIN{ default: usage(); + case 'l': + loginshell = TRUE; + break; case 'f': fontname = EARGF(usage()); break; blob - 5b4f48c019211dde80498734b4a128194904d692 blob + c137b8f89f05d8075af127ecae443bd451f2c9c3 --- src/cmd/9term/rcstart.c +++ src/cmd/9term/rcstart.c @@ -3,6 +3,8 @@ #include #include "term.h" +int loginshell; + static void sys(char *buf, int devnull) { @@ -31,7 +33,7 @@ int rcstart(int argc, char **argv, int *pfd, int *tfd) { int fd[2], i, pid; - char *xargv[3]; + char *cmd, *xargv[3]; char slave[256]; int sfd; @@ -44,6 +46,13 @@ rcstart(int argc, char **argv, int *pfd, int *tfd) argv[1] = "-i"; argv[2] = 0; } + cmd = argv[0]; + if(loginshell){ + argv[0] = malloc(strlen(cmd)+2); + strcpy(argv[0]+1, cmd); + argv[0][0] = '-'; + } + /* * fd0 is slave (tty), fd1 is master (pty) */ @@ -85,7 +94,7 @@ rcstart(int argc, char **argv, int *pfd, int *tfd) signal(SIGINT, SIG_DFL); signal(SIGHUP, SIG_DFL); signal(SIGTERM, SIG_DFL); - execvp(argv[0], argv); + execvp(cmd, argv); fprint(2, "exec %s failed: %r\n", argv[0]); _exit(2); break; blob - 272b484791029182d58237c6b89c7d1968f0ce47 blob + c8d9926f705e7eb714562da1eba77a0095a4cfec --- src/cmd/9term/term.h +++ src/cmd/9term/term.h @@ -7,3 +7,4 @@ extern int isecho(int); extern int setecho(int, int); extern int noecho; extern int getintr(int); +extern int loginshell;