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

  1. /*
  2.     sdovrwrt.c
  3.  
  4.     % sed_Overwrite
  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.     11/06/86 jmd    Now returns the overwritten character.
  13.     11/16/86 sng    Now handles variable-length fields.
  14.     11/18/87 jmd     changed names of some low-level funcs
  15.  
  16.      3/24/89 jmd    Added test for same character
  17.      4/13/89 jmd    added sed_GetCurrField macro
  18.      3/28/90 jmd    ansi-fied
  19. */
  20.  
  21. #include "sed.h"
  22.  
  23. char sed_Overwrite(sed_type sed, int scancode)
  24. /*
  25.     modifies:   the sed.
  26.     effects:    overwrites the character at the current field number and
  27.                 position with the scancode given.  If the new character
  28.                 is the same as the old, does nothing.
  29.     returns:    the old character.
  30. */
  31. {
  32.     char         old_char;
  33.     field_type     field;
  34.  
  35.     cs_Assert(sed_Ok(sed), CS_SD_OVR_SED, 0);
  36.  
  37.     field = sed_GetCurrField(sed);
  38.  
  39.     /* Remember the old character. */
  40.     old_char = field_GetRecord(field)[sed_GetRecordPos(sed)];
  41.  
  42.     if (old_char != (char) scancode) {
  43.         field_SetChar(field, sed_GetRecordPos(sed), (char) scancode);
  44.         sd_overwrite(sed);
  45.     }
  46.  
  47.     return(old_char);
  48. }
  49.