void
catch(void*, char *msg)
{
- if(strstr(msg, "interrupt") != nil){
+ if(strcmp(msg, "interrupt") == 0){
intr = 1;
noted(NCONT);
}
return 1;
memset(err, 0, sizeof(err));
errstr(err, sizeof(err));
- r = strstr(err, "interrupt") != nil;
+ r = strcmp(err, "interrupted") == 0;
errstr(err, sizeof(err));
return r;
}
return m;
}
-/* libsec */
-extern mpint* pkcs1padbuf(uchar *buf, int len, mpint *modulus, int blocktype);
-extern int asn1encodedigest(DigestState* (*fun)(uchar*, ulong, uchar*, DigestState*),
- uchar *digest, uchar *buf, int len);
-
mpint*
pkcs1digest(uchar *data, int len, RSApub *pub)
{
} tty;
void
-rawon(void)
+getdim(void)
{
- int ctl;
char *s;
- close(0);
- if(open("/dev/cons", OREAD) != 0)
- sysfatal("open: %r");
- close(1);
- if(open("/dev/cons", OWRITE) != 1)
- sysfatal("open: %r");
- dup(1, 2);
- if((ctl = open("/dev/consctl", OWRITE)) >= 0)
- write(ctl, "rawon", 5);
if(s = getenv("XPIXELS")){
tty.xpixels = atoi(s);
free(s);
}
}
+void
+rawon(void)
+{
+ int ctl;
+
+ close(0);
+ if(open("/dev/cons", OREAD) != 0)
+ sysfatal("open: %r");
+ close(1);
+ if(open("/dev/cons", OWRITE) != 1)
+ sysfatal("open: %r");
+ dup(1, 2);
+ if((ctl = open("/dev/consctl", OWRITE)) >= 0){
+ write(ctl, "rawon", 5);
+ write(ctl, "winchon", 7); /* vt(1): interrupt note on window change */
+ }
+ getdim();
+}
+
#pragma varargck type "k" char*
kfmt(Fmt *f)
void
usage(void)
{
- fprint(2, "usage: %s [-dR] [-t thumbfile] [-T tries] [-u user] [user@]host [cmd args...]\n", argv0);
+ fprint(2, "usage: %s [-dR] [-t thumbfile] [-T tries] [-u user] [-h] [user@]host [cmd args...]\n", argv0);
exits("usage");
}
case 'u':
user = EARGF(usage());
break;
+ case 'h':
+ host = EARGF(usage());
+ break;
case 't':
thumbfile = EARGF(usage());
break;
break;
} ARGEND;
- if(argc == 0)
- usage();
+ if(host == nil){
+ if(argc == 0)
+ usage();
+ host = *argv++;
+ }
- host = *argv++;
if(user == nil){
s = strchr(host, '@');
if(s != nil){
break;
if(n < 0 && wasintr()){
if(!raw) break;
- sendpkt("busbs", MSG_CHANNEL_REQUEST,
- send.chan,
- "signal", 6,
- 0,
- "INT", 3);
- intr = 0;
+ if(intr){
+ getdim();
+ sendpkt("busbuuuu", MSG_CHANNEL_REQUEST,
+ send.chan,
+ "window-change", 13,
+ 0,
+ tty.cols,
+ tty.lines,
+ tty.xpixels,
+ tty.ypixels);
+ sendpkt("busbs", MSG_CHANNEL_REQUEST,
+ send.chan,
+ "signal", 6,
+ 0,
+ "INT", 3);
+ intr = 0;
+ }
continue;
}
if(n <= 0)