struct StringsBase *StringsBase=0L; /*#define RUN*/ #ifdef RUN char *SetUntilSpace(s) register char *s; { register char c,*p=s; if(s) { do { c=*p++; if( (c==' ') ) c=0; } while (c); p--; } return p; } /* $VER: SetUntilSpace while loop 0.1 */ #endif long test(s) char *s; { long el=0; char *p; char bs[256]; sprintf(bs,"<%s>",s); printf(" %11s %ld %7x ",bs,(long)strlen(s),s); p=(char *)SetUntilSpace(s); sprintf(bs,"<%s>",p); printf("%11s %ld %x\n",bs,(long)strlen(p),p); return el; } main() { char s[256],*p; long el=0; el++; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0); puts(" IN len Adr out len Adr"); el=test(" Dies "); el=test("asd zxc"); el=test("asd fgh"); el=test(" "); el=test("test"); el=test(""); el=test(0); if(StringsBase) CloseLibrary(StringsBase); } /* register char c,*p=s; if(s) { do c=*p++; while ( !(c==' ') && c); p--; } move.l 8(a5),a2 move.l a2,a3 cmp.l #0,a2 beq L3 L4: move.b (a3)+,d3 cmp.b #32,d3 beq L6 tst.b d3 bne L4 L6: subq.l #1,a3 L3: move.l a3,d0 if(s) { do { c=*p++; if( (c==' ') ) c=0; } while (c); p--; } move.l 8(a5),a2 move.l a2,a3 cmp.l #0,a2 beq L3 L4: move.b (a3)+,d3 cmp.b #32,d3 bne L5 clr.b d3 L5: tst.b d3 bne L4 subq.l #1,a3 L3: move.l a3,d0 IN len Adr out len Adr < Dies > 7 261FC6 < Dies > 7 261FC6 9 261FBC < zxc> 6 261FBF 7 261FB4 < fgh> 4 261FB7 < > 1 261FB2 < > 1 261FB2 4 261FAD <> 0 261FB1 <> 0 261FAC <> 0 261FAC <> 0 0 <> 0 0 */