home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / SDNAMVAR.C < prev    next >
C/C++ Source or Header  |  1990-10-04  |  2KB  |  103 lines

  1. /*
  2.     sdnamvar.c
  3.  
  4.     % sed_GetNameVar, sed_SetNameVar
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986-1989, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      3/28/90 jmd    ansi-fied
  13.      8/24/90 mla    changed sd_setnamevar to sed_SetNameVarValue
  14.      8/24/90 mla    added sed_SetNameVar, sed_SetVarValue
  15.      9/16/90 jdc    fixed SetNameVar fld == 0 bug
  16.     10/04/90 jmd    added casts for C++
  17. */
  18.  
  19. #include "sed.h"
  20.  
  21. VOID *sed_GetNameVar(sed_type sed, char *name)
  22. /*
  23.     This routine retrieves the location of a named fields variable
  24.  
  25.     It returns NULL if the sed has no field named name
  26. */
  27. {
  28.     int fld;
  29.  
  30.     if ((fld = sed_GetNameNo(sed, name)) < 0) {
  31.         return(NULL);
  32.     }
  33.     return(sed_GetVar(sed, fld));
  34. }
  35.  
  36. boolean sed_SetNameVar(sed_type sed, char *name, VOID *var)
  37. /*
  38.     This routine sets a named fields variable to point to a given var space
  39.  
  40.     It returns TRUE if the sed contains a field with the given name
  41.     and FALSE if not
  42. */
  43. {
  44.     int fld;
  45.  
  46.     if ((fld = sed_GetNameNo(sed, name)) < 0) {
  47.         return(FALSE);
  48.     }
  49.     else {
  50.         sed_SetVar(sed, fld, var);
  51.         return(TRUE);
  52.     }
  53. }
  54.  
  55. boolean sed_SetNameVarValue(sed_type sed, char *name, VOID *var)
  56. /*
  57.     This routine copies a new value into a named fields variable space
  58.  
  59.     It's return value indicates success or failure
  60. */
  61. {
  62.     int fld;
  63.  
  64.     if ((fld = sed_GetNameNo(sed, name)) < 0) {
  65.         return(FALSE);
  66.     }
  67.     return(sed_SetVarValue(sed, fld, var));
  68. }
  69.  
  70. boolean sed_SetVarValue(sed_type sed, int fld, VOID *var)
  71. /*
  72.     This routine copies a new value into a fields variable space
  73.  
  74.     It return value indicates success or failure
  75. */
  76. {
  77.     int len;
  78.  
  79.     if (var == NULL) {
  80.         return(FALSE);
  81.     }
  82.  
  83.     switch((len = (int) field_GetVarSize(menu_GetField(sed_GetMenu(sed), fld)))) {
  84.  
  85.     case ((int) VAR_STRING):
  86.         if ((len = sed_GetRecordLen(sed, fld) + 1) > 0) {
  87.             strncpy((char *) sed_GetVar(sed, fld), (char *) var, len);
  88.             break;
  89.         }
  90.         /* fall through */
  91.     case ((int) VAR_INVALID):
  92.     case ((int) VAR_TED):
  93.         len = 0;
  94.     default:
  95.         if (len <= 0) {
  96.             return(FALSE);
  97.         }
  98.         memcpy(sed_GetVar(sed, fld), var, len);
  99.         break;
  100.     }
  101.     return(TRUE);
  102. }
  103.