commit - 8a6837e8c0d174477fd6e8aca509c2107b414bf0
commit + 5bd21066c5fa3a39816416f93186c88832957330
blob - 0fc979dbfa087448e471722c7d5643c454e4a757
blob + 0c5609bd35afcea3b034d1aa09bf45d1c082617c
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
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
#include <libc.h>
#include "term.h"
+int loginshell;
+
static void
sys(char *buf, int devnull)
{
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;
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)
*/
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
extern int setecho(int, int);
extern int noecho;
extern int getintr(int);
+extern int loginshell;