This is zstr.c in view mode; [Download] [Up]
/* Zero terminated strings Copyright (C) 1992 Joseph H. Allen This file is part of JOE (Joe's Own Editor) JOE is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. JOE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with JOE; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "zstr.h" char _ctaB[]= { 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,_flo,0,_bin,_bin,_oct,_oct,_oct,_oct,_oct,_oct,_dec,_dec,0,0,0,0,0,0, 0,_upp|_hex,_upp|_hex,_upp|_hex,_upp|_hex,_upp|_hex|_flo,_upp|_hex,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,_upp,0,0,0,0,_und, 0,_low|_hex,_low+_hex,_low|_hex,_low|_hex,_low|_hex|_flo,_low|_hex,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,_low,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,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 }; char _ctaA[]= { _eos,0,0,0,0,0,0,0,0,_whi,_eol,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, _whi,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, 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,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 }; int toup(a) { return clower(a) ? a+'A'-'a' : a; } int todn(a) { return cupper(a) ? a+'a'-'A' : a; } unsigned Umin(a,b) unsigned a,b; { return a<b?a:b; } unsigned Umax(a,b) unsigned a,b; { return a>b?a:b; } int Imin(a,b) { return a<b?a:b; } int Imax(a,b) { return a>b?a:b; } long Lmax(a,b) long a,b; { return a>b?a:b; } long Lmin(a,b) long a,b; { return a<b?a:b; } int Iabs(a) { return a>=0?a:-a; } long Labs(a) long a; { return a>=0?a:-a; } int zlen(s) char *s; { char *os=s; loop: if(!s[0]) return s-os; if(!s[1]) return s-os+1; if(!s[2]) return s-os+2; if(!s[3]) return s-os+3; if(!s[4]) return s-os+4; if(!s[5]) return s-os+5; if(!s[6]) return s-os+6; if(!s[7]) return s-os+7; if(!s[8]) return s-os+8; if(!s[9]) return s-os+9; if(!s[10]) return s-os+10; if(!s[11]) return s-os+11; if(!s[12]) return s-os+12; if(!s[13]) return s-os+13; if(!s[14]) return s-os+14; if(!s[15]) return s-os+15; s+=15; goto loop; } char *zchr(s,c) char *s, c; { loop: if(!s[0]) return 0; else if(s[0]==c) return s; if(!s[1]) return 0; else if(s[1]==c) return s+1; if(!s[2]) return 0; else if(s[2]==c) return s+2; if(!s[3]) return 0; else if(s[3]==c) return s+3; if(!s[4]) return 0; else if(s[4]==c) return s+4; if(!s[5]) return 0; else if(s[5]==c) return s+5; if(!s[6]) return 0; else if(s[6]==c) return s+6; if(!s[7]) return 0; else if(s[7]==c) return s+7; if(!s[8]) return 0; else if(s[8]==c) return s+8; if(!s[9]) return 0; else if(s[9]==c) return s+9; if(!s[10]) return 0; else if(s[10]==c) return s+10; if(!s[11]) return 0; else if(s[11]==c) return s+11; if(!s[12]) return 0; else if(s[12]==c) return s+12; if(!s[13]) return 0; else if(s[13]==c) return s+13; if(!s[14]) return 0; else if(s[14]==c) return s+14; if(!s[15]) return 0; else if(s[15]==c) return s+15; s+=16; goto loop; } char *zrchr(s,c) char *s, c; { char *p=0; while(s=zchr(s,c)) p=s; return p; } char *zcpy(d,s) char *d,*s; { char *od=d; loop: if(!(d[0]=s[0])) return od; if(!(d[1]=s[1])) return od; if(!(d[2]=s[2])) return od; if(!(d[3]=s[3])) return od; if(!(d[4]=s[4])) return od; if(!(d[5]=s[5])) return od; if(!(d[6]=s[6])) return od; if(!(d[7]=s[7])) return od; if(!(d[8]=s[8])) return od; if(!(d[9]=s[9])) return od; if(!(d[10]=s[10])) return od; if(!(d[11]=s[11])) return od; if(!(d[12]=s[12])) return od; if(!(d[13]=s[13])) return od; if(!(d[14]=s[14])) return od; if(!(d[15]=s[15])) return od; s+=16; d+=16; goto loop; } char *zcat(d,s) char *d,*s; { char *od=d; zcpy(d+zlen(s),s); return od; } char *zdup(s) char *s; { return zcpy((char *)malloc(zlen(s)+1),s); } int zcmp(l,r) char *l, *r; { int c; loop: if(!l[0] || l[0]!=r[0]) { c=0; goto done; } if(!l[1] || l[1]!=r[1]) { c=1; goto done; } if(!l[2] || l[2]!=r[2]) { c=2; goto done; } if(!l[3] || l[3]!=r[3]) { c=3; goto done; } if(!l[4] || l[4]!=r[4]) { c=4; goto done; } if(!l[5] || l[5]!=r[5]) { c=5; goto done; } if(!l[6] || l[6]!=r[6]) { c=6; goto done; } if(!l[7] || l[7]!=r[7]) { c=7; goto done; } if(!l[8] || l[8]!=r[8]) { c=8; goto done; } if(!l[9] || l[9]!=r[9]) { c=9; goto done; } if(!l[10] || l[10]!=r[10]) { c=10; goto done; } if(!l[11] || l[11]!=r[11]) { c=11; goto done; } if(!l[12] || l[12]!=r[12]) { c=12; goto done; } if(!l[13] || l[13]!=r[13]) { c=13; goto done; } if(!l[14] || l[14]!=r[14]) { c=14; goto done; } if(!l[15] || l[15]!=r[15]) { c=15; goto done; } l+=16; r+=16; goto loop; done: if(l[c]>r[c]) return 1; if(l[c]<r[c]) return -1; return 0; } int zicmp(l,r) char *l, *r; { int c; loop: if(!toup(l[0]) || toup(l[0])!=toup(r[0])) { c=0; goto done; } if(!toup(l[1]) || toup(l[1])!=toup(r[1])) { c=1; goto done; } if(!toup(l[2]) || toup(l[2])!=toup(r[2])) { c=2; goto done; } if(!toup(l[3]) || toup(l[3])!=toup(r[3])) { c=3; goto done; } if(!toup(l[4]) || toup(l[4])!=toup(r[4])) { c=4; goto done; } if(!toup(l[5]) || toup(l[5])!=toup(r[5])) { c=5; goto done; } if(!toup(l[6]) || toup(l[6])!=toup(r[6])) { c=6; goto done; } if(!toup(l[7]) || toup(l[7])!=toup(r[7])) { c=7; goto done; } if(!toup(l[8]) || toup(l[8])!=toup(r[8])) { c=8; goto done; } if(!toup(l[9]) || toup(l[9])!=toup(r[9])) { c=9; goto done; } if(!toup(l[10]) || toup(l[10])!=toup(r[10])) { c=10; goto done; } if(!toup(l[11]) || toup(l[11])!=toup(r[11])) { c=11; goto done; } if(!toup(l[12]) || toup(l[12])!=toup(r[12])) { c=12; goto done; } if(!toup(l[13]) || toup(l[13])!=toup(r[13])) { c=13; goto done; } if(!toup(l[14]) || toup(l[14])!=toup(r[14])) { c=14; goto done; } if(!toup(l[15]) || toup(l[15])!=toup(r[15])) { c=15; goto done; } l+=16; r+=16; goto loop; done: if(toup(l[c])>toup(r[c])) return 1; if(toup(l[c])<toup(r[c])) return -1; return 0; } int fields(s,fields,sep) char *s, **fields, sep; { int y=1; for(fields[0]=s;s=zchr(s,sep);*s=0, fields[y++]= ++s); return y; } int nfields(s,sep) char *s, sep; { int y=1; while(s=zchr(s,sep)) ++y, ++s; return y; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.