home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / xbase / library / clipper / rettig / source / rjust.c < prev    next >
C/C++ Source or Header  |  1990-10-21  |  1KB  |  57 lines

  1. /*********
  2. *
  3. * RJUST.C
  4. *
  5. * by Tom Rettig
  6. *
  7. * Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  8. *
  9. *  Syntax: RJUST( <expC> )
  10. *  Return: <expC> with trailing spaces moved to left end.
  11. *          Return string is same length as <expC>.
  12. *********/
  13.  
  14. #include "trlib.h"
  15.  
  16. TRTYPE rjust()
  17. {
  18.    char *instr, *ret;
  19.    int i, j, pos, len;
  20.    static char funcname[] = { "rjust" };
  21.    if ( PCOUNT==1 && ISCHAR(1) )
  22.    {
  23.       instr  = _parc(1);
  24.       len    = _tr_strlen(instr);
  25.       ret    = _tr_allocmem( (unsigned)(len+1));
  26.  
  27.       if ( ret )
  28.       {
  29.          if ( instr[len-1]==SPACEC )
  30.          {
  31.             for ( j=len-1; instr[j]==SPACEC; j-- )
  32.                ;
  33.             pos = ++j;                  /* right: first char past spaces */
  34.  
  35.             for ( i=0; instr[j]==SPACEC; i++, j++ )
  36.                ret[i] = instr[j];
  37.  
  38.             /* fill return buffer with chars */
  39.             for ( j=0; j<pos; i++, j++ )
  40.                ret[i] = instr[j];
  41.  
  42.             ret[i] = NULLC;
  43.             _retc( ret );
  44.          }
  45.          else            /* return unchanged if no trailing spaces */
  46.             _retc( instr );
  47.  
  48.          _tr_freemem( ret,(unsigned)(len+1));
  49.       }
  50.       else            /* return unchanged if no memory */
  51.          _retc( instr );
  52.    }
  53.    else
  54.       _retc( _tr_errmsgs(funcname,E_SYNTAX) );
  55. }
  56.  
  57.