mirror of https://github.com/0intro/conterm
various fixes
This commit is contained in:
parent
d1b585cfe2
commit
7f51f90cb3
|
@ -19,5 +19,5 @@ AUDIO=unix
|
||||||
all: default
|
all: default
|
||||||
|
|
||||||
libmachdep.a:
|
libmachdep.a:
|
||||||
arch=`uname -m|sed 's/i.86/386/;s/Power Macintosh/power/'`; \
|
arch=`uname -m|sed 's/i.86/386/;s/Power Macintosh/power/; s/x86_64/amd64/'`; \
|
||||||
(cd posix-$$arch && make)
|
(cd posix-$$arch && make)
|
||||||
|
|
25
cpu.c
25
cpu.c
|
@ -548,7 +548,7 @@ p9any(int fd)
|
||||||
char tbuf[TICKETLEN+TICKETLEN+AUTHENTLEN], trbuf[TICKREQLEN];
|
char tbuf[TICKETLEN+TICKETLEN+AUTHENTLEN], trbuf[TICKREQLEN];
|
||||||
char authkey[DESKEYLEN];
|
char authkey[DESKEYLEN];
|
||||||
Authenticator auth;
|
Authenticator auth;
|
||||||
int afd, i, v2;
|
int afd, i, n, v2;
|
||||||
Ticketreq tr;
|
Ticketreq tr;
|
||||||
Ticket t;
|
Ticket t;
|
||||||
AuthInfo *ai;
|
AuthInfo *ai;
|
||||||
|
@ -623,11 +623,26 @@ p9any(int fd)
|
||||||
auth.id = 0;
|
auth.id = 0;
|
||||||
convA2M(&auth, tbuf+TICKETLEN, t.key);
|
convA2M(&auth, tbuf+TICKETLEN, t.key);
|
||||||
|
|
||||||
if(write(fd, tbuf, TICKETLEN+AUTHENTLEN) != TICKETLEN+AUTHENTLEN)
|
if(write(fd, tbuf+1, TICKETLEN+AUTHENTLEN) != TICKETLEN+AUTHENTLEN)
|
||||||
fatal(1, "cannot send ticket and authenticator back in p9sk1");
|
fatal(1, "cannot send ticket and authenticator back in p9sk1");
|
||||||
|
|
||||||
if(readn(fd, tbuf, AUTHENTLEN) != AUTHENTLEN)
|
if((n=readn(fd, tbuf, AUTHENTLEN)) != AUTHENTLEN ||
|
||||||
fatal(1, "cannot read authenticator in p9sk1");
|
memcmp(tbuf, "cpu:", 4) == 0){
|
||||||
|
if(n <= 4)
|
||||||
|
fatal(1, "cannot read authenticator in p9sk1");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* didn't send back authenticator:
|
||||||
|
* sent back fatal error message.
|
||||||
|
*/
|
||||||
|
memmove(buf, tbuf, n);
|
||||||
|
i = readn(fd, buf+n, sizeof buf-n-1);
|
||||||
|
if(i > 0)
|
||||||
|
n += i;
|
||||||
|
buf[n] = 0;
|
||||||
|
werrstr("");
|
||||||
|
fatal(0, "server says: %s", buf);
|
||||||
|
}
|
||||||
|
|
||||||
convM2A(tbuf, &auth, t.key);
|
convM2A(tbuf, &auth, t.key);
|
||||||
if(auth.num != AuthAs
|
if(auth.num != AuthAs
|
||||||
|
@ -635,7 +650,7 @@ p9any(int fd)
|
||||||
|| auth.id != 0){
|
|| auth.id != 0){
|
||||||
print("?you and auth server agree about password.\n");
|
print("?you and auth server agree about password.\n");
|
||||||
print("?server is confused.\n");
|
print("?server is confused.\n");
|
||||||
fatal(1, "server lies got %llux.%d want %llux.%d", *(vlong*)auth.chal, auth.id, *(vlong*)cchal, 0);
|
fatal(0, "server lies got %llux.%d want %llux.%d", *(vlong*)auth.chal, auth.id, *(vlong*)cchal, 0);
|
||||||
}
|
}
|
||||||
//print("i am %s there.\n", t.suid);
|
//print("i am %s there.\n", t.suid);
|
||||||
ai = mallocz(sizeof(AuthInfo), 1);
|
ai = mallocz(sizeof(AuthInfo), 1);
|
||||||
|
|
|
@ -1126,18 +1126,28 @@ if(0) iprint("xselect target=%d requestor=%d property=%d selection=%d\n",
|
||||||
XChangeProperty(xd, xe->requestor, xe->property, xe->target,
|
XChangeProperty(xd, xe->requestor, xe->property, xe->target,
|
||||||
8, PropModeReplace, (uchar*)a, sizeof a);
|
8, PropModeReplace, (uchar*)a, sizeof a);
|
||||||
}else if(xe->target == XA_STRING || xe->target == utf8string || xe->target == text || xe->target == compoundtext){
|
}else if(xe->target == XA_STRING || xe->target == utf8string || xe->target == text || xe->target == compoundtext){
|
||||||
|
text:
|
||||||
/* if the target is STRING we're supposed to reply with Latin1 XXX */
|
/* if the target is STRING we're supposed to reply with Latin1 XXX */
|
||||||
qlock(&clip.lk);
|
qlock(&clip.lk);
|
||||||
XChangeProperty(xd, xe->requestor, xe->property, xe->target,
|
XChangeProperty(xd, xe->requestor, xe->property, xe->target,
|
||||||
8, PropModeReplace, (uchar*)clip.buf, strlen(clip.buf));
|
8, PropModeReplace, (uchar*)clip.buf, strlen(clip.buf));
|
||||||
qunlock(&clip.lk);
|
qunlock(&clip.lk);
|
||||||
}else{
|
}else{
|
||||||
iprint("get %d\n", xe->target);
|
|
||||||
name = XGetAtomName(xd, xe->target);
|
name = XGetAtomName(xd, xe->target);
|
||||||
if(name == nil)
|
if(name == nil)
|
||||||
iprint("XGetAtomName failed\n");
|
iprint("XGetAtomName %d failed\n", xe->target);
|
||||||
else if(strcmp(name, "TIMESTAMP") != 0)
|
if(name){
|
||||||
iprint("%s: cannot handle selection request for '%s' (%d)\n", argv0, name, (int)xe->target);
|
if(strcmp(name, "TIMESTAMP") == 0){
|
||||||
|
/* nothing */
|
||||||
|
}else if(strncmp(name, "image/", 6) == 0){
|
||||||
|
/* nothing */
|
||||||
|
}else if(strcmp(name, "text/html") == 0){
|
||||||
|
/* nothing */
|
||||||
|
}else if(strcmp(name, "text/plain") == 0 || strcmp(name, "text/plain;charset=UTF-8") == 0){
|
||||||
|
goto text;
|
||||||
|
}else
|
||||||
|
iprint("%s: cannot handle selection request for '%s' (%d)\n", argv0, name, (int)xe->target);
|
||||||
|
}
|
||||||
r.xselection.property = None;
|
r.xselection.property = None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,22 @@
|
||||||
|
#define __BSD_VISIBLE 1 /* FreeBSD 5.x */
|
||||||
|
#define _BSD_SOURCE 1
|
||||||
|
#define _NETBSD_SOURCE 1 /* NetBSD */
|
||||||
|
#define _SVID_SOURCE 1
|
||||||
|
#if !defined(__APPLE__) && !defined(__OpenBSD__)
|
||||||
|
# define _XOPEN_SOURCE 1000
|
||||||
|
# define _XOPEN_SOURCE_EXTENDED 1
|
||||||
|
#endif
|
||||||
|
#define _LARGEFILE64_SOURCE 1
|
||||||
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
#include <stddef.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
Loading…
Reference in New Issue