struct        StringsBase     *StringsBase=0L;

/*#define RUN*/
#ifdef  RUN

char *StrnRvCpy(d,s,l) register char *d,*s; register long l; {
  register char *p,c;
  if(p=d) {
   c=*s; do ; while(*p++=*s++); p=s=d;
   if((l>1)&&(c)) {
    l++; do ; while((*s++) && --l); s--; s--;
    do { c=*p; *p++=*s; *s=c; s--; } while (p<s);
   }
  }
  return d;
 };                                         /* StrnRvCpy $VER: FEB06 0.1 */

#endif

long test(s,l) char *s; long l; {
  char *d[128],*o[128],*p; sprintf(o,"<%s>",s); printf("%16s  %3ld ",o,l);
  p=(char *)StrnRvCpy(d,s,l); sprintf(o,"<%s>",d); printf(" %16s",o);
  sprintf(o,"<%s>",p); printf(" %16s\n",o);
  return 0; /*  */
 }

int main() {                             /* MAIN */
  long el=0; StringsBase=(struct StringsBase *)OpenLibrary("Strings.library",0);
  puts("       Input        n         Output           return");
  el=test("StrnRvCpy",4);        el=test("testStrnRvCpy",4);
  el=test("testStrnRvCpy",5);    el=test("testStrnRvCpy",22);
  el=test("string",9); el=test("abc",6); el=test("ab",6);
  el=test("a",6); el=test("",3); el=test("abcd",0); el=test("abcd",1);
  el=test("abcd",2); el=test("abcd",3); el=test("abcd",4); el=test("abcd",5);
  if(StringsBase) CloseLibrary(StringsBase);
  return el;
 }                                   /* END */
#ifdef  COMMENT

       Input        n         Output           return
     <StrnRvCpy>    4       <nrtSRvCpy>      <nrtSRvCpy>
 <testStrnRvCpy>    4   <tsetStrnRvCpy>  <tsetStrnRvCpy>
 <testStrnRvCpy>    5   <StsettrnRvCpy>  <StsettrnRvCpy>
 <testStrnRvCpy>   22   <ypCvRnrtStset>  <ypCvRnrtStset>
        <string>    9          <gnirts>         <gnirts>
           <abc>    6             <cba>            <cba>
            <ab>    6              <ba>             <ba>
             <a>    6               <a>              <a>
              <>    3                <>               <>
          <abcd>    0            <abcd>           <abcd>
          <abcd>    1            <abcd>           <abcd>
          <abcd>    2            <bacd>           <bacd>
          <abcd>    3            <cbad>           <cbad>
          <abcd>    4            <dcba>           <dcba>
          <abcd>    5            <dcba>           <dcba>

#endif


