char WRERR
[] = "WRITE ERROR";
extern int onintr(), quit(), onhup();
oldquit
= signal(SIGQUIT
, SIG_IGN
);
oldhup
= signal(SIGHUP
, SIG_IGN
);
oldintr
= signal(SIGINT
, SIG_IGN
);
if ((int)signal(SIGTERM
, SIG_IGN
) == 0)
while (argc
> 1 && **argv
=='-') {
signal(SIGQUIT
, SIG_DFL
);
kflag
= crinit(key
, perm
);
zero
= (int *)malloc(nlall
*sizeof(int));
tfname
= mktemp("/tmp/eXXXXX");
if (((int)oldintr
&01) == 0)
if (((int)oldhup
&01) == 0)
if ((a1
= address())==0) {
if ((c
=getchr()) == ';') {
if ((c
= getchr()) < 'a' || c
> 'z')
names
[c
-'a'] = *addr2
& ~01;
if ((io
= open(file
, 0)) < 0) {
if ((*addr2
&~01) != subnewa
)
((io
= open(file
,1)) == -1) ||
((lseek(io
, 0L, 2)) == -1))
if ((io
= creat(file
, 0666)) < 0)
if (addr1
==zero
+1 && addr2
==dol
)
puts("Entering encrypting mode!");
kflag
= crinit(key
, perm
);
count
= (addr2
-zero
)&077777;
} while ((c
= getchr())>='0' && c
<='9');
if ((c
= getchr()) < 'a' || c
> 'z')
for (a1
=zero
; a1
<=dol
; a1
++)
if (names
[c
-'a'] == (*a1
& ~01))
if (addr1
<=zero
|| addr2
>dol
)
if ((c
= getchr()) == '\n')
while ((c
= getchr()) == ' ')
} while ((c
= getchr()) != '\n');
if (savedfile
[0]==0 || comm
=='e' || comm
=='f') {
io
= creat("ed.hup", 0666);
while ((c
= getchr()) != '\n' && c
!= EOF
)
if ((lastc
= *globp
++) != 0)
while ((c
= getchr()) != '\n') {
if (p
>= &linebuf
[LBSIZE
-2])
if (linebuf
[0]=='.' && linebuf
[1]==0)
if ((ninbuf
= read(io
, genbuf
, LBSIZE
)-1) < 0)
while(fp
< &genbuf
[ninbuf
]) {
crblock(perm
, genbuf
, ninbuf
+1, count
);
if (c
&0200 || lp
>= &linebuf
[LBSIZE
]) {
crblock(perm
, genbuf
, n
, count
-n
);
if(write(io
, genbuf
, n
) != n
) {
if ((*fp
++ = *lp
++) == 0) {
crblock(perm
, genbuf
, n
, count
-n
);
if(write(io
, genbuf
, n
) != n
) {
register *a1
, *a2
, *rdot
;
if ((dol
-zero
)+1 >= nlall
) {
if ((zero
= (int *)realloc((char *)zero
, nlall
*sizeof(int)))==NULL
) {
register (*savint
)(), pid
, rpid
;
if ((pid
= fork()) == 0) {
signal(SIGQUIT
, oldquit
);
execl("/bin/sh", "sh", "-t", 0);
savint
= signal(SIGINT
, SIG_IGN
);
while ((rpid
= wait(&retcode
)) != pid
&& rpid
!= -1)
if (vflag
&& fchange
&& dol
!=zero
) {
for (a1
=zero
+1; (*a1
&01)==0; a1
++)
bp
= getblock(tl
+=0400, READ
);
bp
= getblock(tl
, WRITE
);
bp
= getblock(tl
+=0400, WRITE
);
tline
+= (((lp
-linebuf
)+03)>>1)&077776;
crblock(tperm
, ibuff
, 512, (long)0);
blkio(iblock
, ibuff
, write
);
crblock(tperm
, ibuff
, 512, (long)0);
crblock(tperm
, crbuf
, 512, (long)0);
blkio(oblock
, crbuf
, write
);
blkio(oblock
, obuff
, write
);
lseek(tfile
, (long)b
<<9, 0);
if ((*iofcn
)(tfile
, buf
, 512) != 512) {
for (markp
= names
; markp
< &names
[26]; )
close(creat(tfname
, 0600));
while ((c
= getchr()) != '\n') {
if (gp
>= &globuf
[GBSIZE
-2])
for (a1
=zero
; a1
<=dol
; a1
++) {
if (a1
>=addr1
&& a1
<=addr2
&& execute(0, a1
)==k
)
* Special case: g/.../d (avoid n^2 algorithm)
if (globuf
[0]=='d' && globuf
[1]=='\n' && globuf
[2]=='\0') {
for (a1
=zero
; a1
<=dol
; a1
++) {
for (a1
=addr1
; a1
<=addr2
; a1
++) {
if (gp
++ >= &genbuf
[LBSIZE
-2])
register *markp
, *a1
, nl
;
for (a1
= addr1
; a1
<= addr2
; a1
++) {
if (execute(1, (int *)0)==0)
for (markp
= names
; markp
< &names
[26]; markp
++)
if ((seof
= getchr()) == '\n' || seof
== ' ')
if (p
>= &rhsbuf
[LBSIZE
/2])
if ((peekc
= getchr()) == 'g') {
register char *lp
, *sp
, *rp
;
sp
= place(sp
, loc1
, loc2
);
} else if (c
&0200 && (c
&= 0177) >='1' && c
< nbra
+'1') {
sp
= place(sp
, braslist
[c
-'1'], braelist
[c
-'1']);
if (sp
>= &genbuf
[LBSIZE
])
loc2
= sp
- genbuf
+ linebuf
;
if (sp
>= &genbuf
[LBSIZE
])
register char *sp
, *l1
, *l2
;
if (sp
>= &genbuf
[LBSIZE
])
register int *adt
, *ad1
, *ad2
;
if ((adt
= address())==0)
for (ad1
= addr1
; ad1
<= ad2
;)
char bracket
[NBRA
], *bracketp
;
if ((c
= getchr()) == eof
) {
if (ep
>= &expbuf
[ESIZE
])
if ((c
= getchr())=='(') {
if (c
>='1' && c
<'1'+NBRA
) {
if (lastep
==0 || *lastep
==CBRA
|| *lastep
==CKET
)
if ((peekc
=getchr()) != eof
)
if ((c
=getchr()) == '^') {
if (c
=='-' && ep
[-1]!=0) {
if (ep
>= &expbuf
[ESIZE
])
} while ((c
= getchr()) != ']');
register char *p1
, *p2
, c
;
/* fast check for first character */
for (;;) switch (*ep
++) {
if (cclass(ep
, *lp
++, 1)) {
if (cclass(ep
, *lp
++, 0)) {
if (braelist
[i
= *ep
++]==0)
lp
+= braelist
[i
] - braslist
[i
];
if (braelist
[i
= *ep
++] == 0)
lp
+= braelist
[i
] - braslist
[i
];
lp
-= braelist
[i
] - braslist
[i
];
while (cclass(ep
, *lp
++, ep
[-1]==(CCL
|STAR
)))
if(c
== '\n' || lp
>= &line
[64]) {
crblock(permp
, buf
, nchar
, startn
)
register char *t1
, *t2
, *t3
;
*p1
= t2
[(t3
[(t1
[(*p1
+n1
)&0377]+n2
)&0377]-n2
)&0377]-n1
;
sig
= signal(SIGINT
, SIG_IGN
);
while(((c
=getchr()) != EOF
) && (c
!='\n')) {
* Besides initializing the encryption machine, this routine
* returns 0 if the key is null, and 1 if it is non-null.
register char *t1
, *t2
, *t3
;
execl("/usr/lib/makekey", "-", 0);
execl("/lib/makekey", "-", 0);
if (wait((int *)NULL
)==-1 || read(pf
[0], buf
, 13)!=13)
error("crypt: cannot generate key");
seed
= 5*seed
+ buf
[i
%13];
ic
= (random
&0377) % (k
+1);
while(t3
[ic
]!=0) ic
= (ic
+1) % k
;
for(i
= 0; i
< KSIZE
; i
++)
temp
[i
] ^= (t
>>(8*i
))&0377;