struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN char *ToLowerCpy(d,s) register char *d,*s; { register char c,*p=d; if(d) { do { c=*s++; if(c>='A') if(c<='Z') c|=32; *p++=c; } while(c); *p=0; } return d; }; /* $VER: ToLowerCpy feb06 0.1 */ #endif long test(s) char *s; { long el=0,l=StrLen(s); char os[256],d[128],*p; sprintf(os,"<%s>",s); if(s) { printf("%29s ",os); p=(char *)ToLowerCpy(d,s); sprintf(os,"<%s>",d); printf(" %29s %8x %ld\n",os,p,l); } if(!s) p=(char *)ToLowerCpy(s,s), printf("ZEROPOINTER return = %x\n",p); return el; } int main() { /* MAIN */ long el; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); puts(" inputstring \t\t outputstring\t\t return len"); el=test("TESTING ToLowerCpy"); el=test("abcdefghijklmnopqrstuvwxyz "); el=test("!@#$%^&*()__+|1234567890"); el=test("ABCDEF GHIJKL MNOPQ RSTUV"); el=test("WXYZ \[];',../<>{}:<>?"); el=test("a"); el=test("B"); el=test(""); el=test(0); if(StringsBase) CloseLibrary(StringsBase); return 0; } /* END */ #ifdef COMMENT _ToLowerCpy: link a5,#0 move.l 8(a5),a0 move.l 12(a5),a1 move.l a0,d0 cmp.l #0,a2 beq ToLowerCpyEnd ToLowerCpyLoop: move.b (a1)+,d1 cmp.b #65,d1 blt ToLowerCpyJump cmp.b #90,d1 bgt ToLowerCpyJump ; or.b #32,d1 bset #5,d1 ToLowerCpyJump: move.b d1,(a0)+ bne ToLowerCpyLoop clr.b (a0) ToLowerCpyEnd: unlk a5 rts inputstring outputstring return len 28AED0 18 28AED0 27 28AED0 24 28AED0 25 {}:<>?> {}:<>?> 28AED0 21 28AED0 1 28AED0 1 <> <> 28AED0 0 ZEROPOINTER return = 0 #endif