char *dirtry
[] = {"/usr/tmp", "/tmp", NULL
};
int unsafeout
; /*kludge to assure -m -o works*/
0200,0201,0202,0203,0204,0205,0206,0207,
0210,0211,0212,0213,0214,0215,0216,0217,
0220,0221,0222,0223,0224,0225,0226,0227,
0230,0231,0232,0233,0234,0235,0236,0237,
0240,0241,0242,0243,0244,0245,0246,0247,
0250,0251,0252,0253,0254,0255,0256,0257,
0260,0261,0262,0263,0264,0265,0266,0267,
0270,0271,0272,0273,0274,0275,0276,0277,
0300,0301,0302,0303,0304,0305,0306,0307,
0310,0311,0312,0313,0314,0315,0316,0317,
0320,0321,0322,0323,0324,0325,0326,0327,
0330,0331,0332,0333,0334,0335,0336,0337,
0340,0341,0342,0343,0344,0345,0346,0347,
0350,0351,0352,0353,0354,0355,0356,0357,
0360,0361,0362,0363,0364,0365,0366,0367,
0370,0371,0372,0373,0374,0375,0376,0377,
0000,0001,0002,0003,0004,0005,0006,0007,
0010,0011,0012,0013,0014,0015,0016,0017,
0020,0021,0022,0023,0024,0025,0026,0027,
0030,0031,0032,0033,0034,0035,0036,0037,
0040,0041,0042,0043,0044,0045,0046,0047,
0050,0051,0052,0053,0054,0055,0056,0057,
0060,0061,0062,0063,0064,0065,0066,0067,
0070,0071,0072,0073,0074,0075,0076,0077,
0100,0101,0102,0103,0104,0105,0106,0107,
0110,0111,0112,0113,0114,0115,0116,0117,
0120,0121,0122,0123,0124,0125,0126,0127,
0130,0131,0132,0133,0134,0134,0136,0137,
0140,0101,0102,0103,0104,0105,0106,0107,
0110,0111,0112,0113,0114,0115,0116,0117,
0120,0121,0122,0123,0124,0125,0126,0127,
0130,0131,0132,0173,0174,0175,0176,0177
0200,0201,0202,0203,0204,0205,0206,0207,
0210,0211,0212,0213,0214,0215,0216,0217,
0220,0221,0222,0223,0224,0225,0226,0227,
0230,0231,0232,0233,0234,0235,0236,0237,
0240,0241,0242,0243,0244,0245,0246,0247,
0250,0251,0252,0253,0254,0255,0256,0257,
0260,0261,0262,0263,0264,0265,0266,0267,
0270,0271,0272,0273,0274,0275,0276,0277,
0300,0301,0302,0303,0304,0305,0306,0307,
0310,0311,0312,0313,0314,0315,0316,0317,
0320,0321,0322,0323,0324,0325,0326,0327,
0330,0331,0332,0333,0334,0335,0336,0337,
0340,0341,0342,0343,0344,0345,0346,0347,
0350,0351,0352,0353,0354,0355,0356,0357,
0360,0361,0362,0363,0364,0365,0366,0367,
0370,0371,0372,0373,0374,0375,0376,0377,
0000,0001,0002,0003,0004,0005,0006,0007,
0010,0011,0012,0013,0014,0015,0016,0017,
0020,0021,0022,0023,0024,0025,0026,0027,
0030,0031,0032,0033,0034,0035,0036,0037,
0040,0041,0042,0043,0044,0045,0046,0047,
0050,0051,0052,0053,0054,0055,0056,0057,
0060,0061,0062,0063,0064,0065,0066,0067,
0070,0071,0072,0073,0074,0075,0076,0077,
0100,0101,0102,0103,0104,0105,0106,0107,
0110,0111,0112,0113,0114,0115,0116,0117,
0120,0121,0122,0123,0124,0125,0126,0127,
0130,0131,0132,0133,0134,0135,0136,0137,
0140,0141,0142,0143,0144,0145,0146,0147,
0150,0151,0152,0153,0154,0155,0156,0157,
0160,0161,0162,0163,0164,0165,0166,0167,
0170,0171,0172,0173,0174,0175,0176,0177
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
if(**++argv
== '-') for(arg
= *argv
;;) {
field(++*argv
,nfields
>0);
} else if (**argv
== '+') {
diag("too many keys","");
for(a
=1; a
<=nfields
; a
++) {
if(p
->code
!= proto
.code
) continue;
if(p
->ignore
!= proto
.ignore
) continue;
if(p
->nflg
!= proto
.nflg
) continue;
if(p
->rflg
!= proto
.rflg
) continue;
if(p
->bflg
[0] != proto
.bflg
[0]) continue;
if(p
->bflg
[1] != proto
.bflg
[1]) continue;
p
->bflg
[0] = p
->bflg
[1] = q
->bflg
[0];
diag("can check only 1 file","");
while((int)brk(ep
) == -1)
brk(ep
-= 512); /* for recursion */
nlines
/= (5*(sizeof(char *)/sizeof(char)));
tspace
= (char *)(lspace
+ nlines
);
for(dirs
=dirtry
; *dirs
; dirs
++) {
sprintf(filep
=file1
, "%s/stm%05uaa", *dirs
, getpid());
if ( (a
=creat(file
, 0600)) >=0)
diag("can't locate temp","");
if (signal(SIGINT
, SIG_IGN
) != SIG_IGN
)
for(a
= mflg
|cflg
?0:eargc
; a
+N
<nfiles
|| unsafeout
&&a
<eargc
; a
=i
) {
while(lp
< (char **)lspace
+nlines
&& cp
< tspace
+ntext
) {
if((f
= setfil(i
++)) == 0)
else if((is
= fopen(f
, "r")) == NULL
)
qsort((char **)lspace
, lp
);
if(done
== 0 || nfiles
!= eargc
)
while(lp
> (char **)lspace
) {
p
= (struct merg
*)lspace
;
else if((p
->b
= fopen(f
, "r")) == NULL
)
qsort((char **)ibuf
, (char **)(ibuf
+i
));
muflg
= mflg
& uflg
| cflg
;
if(!cflg
&& (uflg
== 0 || muflg
||
(*compare
)(ibuf
[i
-1]->l
,ibuf
[i
-2]->l
)))
} while((*dp
++ = *cp
++) != '\n');
while(--ip
>ibuf
&&(*compare
)(ip
[0]->l
,ip
[-1]->l
)<0){
j
= (*compare
)(ibuf
[i
-1]->l
,p
->l
);
disorder("disorder:",ibuf
[i
-1]->l
);
disorder("nonunique:",ibuf
[i
-1]->l
);
p
= (struct merg
*)lspace
;
if((os
=fopen(f
, "w")) == NULL
) {
if(eargv
[i
][0] == '-' && eargv
[i
][1] == '\0')
if((os
=fopen(outfil
, "w")) == NULL
) {
diag("can't create ",outfil
);
if(stat(outfil
,&obuf
)==-1)
for(i
=eargc
-N
;i
<eargc
;i
++) { /*-N is suff., not nec.*/
if(stat(eargv
[i
],&ibuf
)==-1)
if(obuf
.st_dev
==ibuf
.st_dev
&&
obuf
.st_ino
==ibuf
.st_ino
)
signal(SIGTERM
, SIG_IGN
);
for(i
=eargc
; i
<=nfiles
; i
++) { /*<= in case of interrupt*/
unlink(setfil(i
)); /*with nfiles not updated*/
char *ipa
, *ipb
, *jpa
, *jpb
;
for(k
= nfields
>0; k
<=nfields
; k
++) {
for(ipa
= pa
; ipa
<la
&&isdigit(*ipa
); ipa
++) ;
for(ipb
= pb
; ipb
<lb
&&isdigit(*ipb
); ipb
++) ;
while(ipa
> pa
&& ipb
> pb
)
while(pa
<la
&& isdigit(*pa
)
&& pb
<lb
&& isdigit(*pb
))
while(pa
<la
&& isdigit(*pa
))
while(pb
<lb
&& isdigit(*pb
))
if((sa
= code
[*pb
++]-code
[*pa
++]) == 0)
*pa
== '\n' ? fields
[0].rflg
:
*pb
== '\n' ?-fields
[0].rflg
:
*pb
> *pa
? fields
[0].rflg
:
q
= (int *)&fields
[nfields
];
for(i
=0; i
<sizeof(proto
)/sizeof(*p
); i
++)
register struct field
*p
;
p
->ignore
= nonprint
+128;
if(p
->m
[k
] == -1) /* -m.n with m missing */
d
= &fields
[0].n
[0]-&fields
[0].m
[0];
#define qsexc(p,q) t= *p;*p= *q;*q=t
#define qstexc(p,q,r) t= *p;*p= *r;*r= *q;*q=t
if((c
= (*compare
)(*i
, *lp
)) == 0) {
if((c
= (*compare
)(*hp
, *j
)) == 0) {
for(k
=lp
+1; k
<=hp
;) **k
++ = '\0';