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
 <asd   zxc>  9      261FBC     <   zxc>  6   261FBF
   <asd fgh>  7      261FB4       < fgh>  4   261FB7
         < >  1      261FB2          < >  1   261FB2
      <test>  4      261FAD           <>  0   261FB1
          <>  0      261FAC           <>  0   261FAC
          <>  0           0           <>  0   0
*/
