home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / FLDPULLR.C < prev    next >
C/C++ Source or Header  |  1990-03-28  |  1KB  |  61 lines

  1. /*
  2.     fldpullr.c        5/11/88
  3.  
  4.     % field_PullRight
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      3/28/90 jmd    ansi-fied
  13. */                    
  14.  
  15. #include "field.h"
  16.  
  17. char field_PullRight(field_type f, int fpos)
  18. /*
  19.     modifies:   the field.
  20.     effects:    deletes the character at fpos, pulls in the characters to the
  21.                 right:
  22.                 |heello mom   |
  23.                    ^ 
  24.                 |hello mom    |
  25.                    ^
  26.     returns:    the deleted character.  If the cursor is over empty area,
  27.                  return '\0'.
  28. */
  29. {
  30.     char     del_char;
  31.     int     reclen, recpos;
  32.  
  33.     reclen = strlen(f->record);
  34.  
  35.     /* If the cursor is past the last character, quit and return '\0'... */
  36.     if (fpos >= reclen) {
  37.         return('\0');
  38.     }
  39.     /* ...else the cursor is to the left. */
  40.     else { /* if (fpos < reclen) */
  41.  
  42.         /* Remember the deleted character. */
  43.         del_char = f->record[fpos];
  44.  
  45.         /* pull the record and the merge */
  46.         for (recpos = fpos; recpos < f->reclen; recpos++) {
  47.             if (f->merge != NULL) {
  48.                 f->merge[f->r2m[recpos]] = (f->record[recpos+1] != '\0') ? 
  49.                                             f->record[recpos+1] :
  50.                                             MRGPADCHAR;
  51.             }
  52.             if ((f->record[recpos] = f->record[recpos+1]) == '\0') {
  53.                 break;
  54.             }
  55.         }
  56.  
  57.         return(del_char);
  58.     }
  59. }
  60.  
  61.