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

  1. /*
  2.     sdload.c
  3.  
  4.     % sfile_LoadSed, sf_loadsed, sf_savesed
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1988-1990 by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     10/25/89 jmd    added static to definition, removed ifdef'd stuff
  13.     11/06/89 jmd    removed DoRaw Macro
  14.     12/17/89 jdc    fixed attrs
  15.      3/28/90 jmd    ansi-fied
  16.      8/08/90 jdc    moved aux function down to window level
  17.     11/01/90 ted    put (void) in arg list of sedwin_SaveInit.
  18. */
  19.  
  20. #include "sed.h"
  21. #include "sfile.h"
  22. #include "sfilpriv.h"
  23. #include "sedwinod.h"
  24. #include "ufuncobj.h"
  25. #include "teddecl.h"
  26.  
  27. OSTATIC objreq_func (sdwinreq_save);
  28.  
  29. void sedwin_SaveInit(void)
  30. {
  31.     sdwinreq_savefptr = sdwinreq_save;
  32.     win_SaveInit();
  33.     ufunc_SaveInit();
  34. }
  35.  
  36. boolean sfile_SaveSed(sfile_type sfile, sed_type sed, char *name)
  37. {
  38.     sedwin_SaveInit();
  39.  
  40.     return(sfile_SaveObj(sfile, sed, name));
  41. }
  42.  
  43. static int sdwinreq_save(VOID *objdata, int msg, VOID *indata, VOID *outdata)
  44. {
  45.     sed_type sed;
  46.     sfile_type sfile;
  47.     bfile_type    bfile;
  48.     char *s[3], *sbuf;
  49.     
  50.     sed = sedod_GetSelf((sedwin_od *)objdata);
  51.     sfile = (sfile_type)indata;
  52.  
  53.     if (!win_Class(&((sedwin_od *)objdata)->wd, msg, indata, outdata)) {
  54.         return(FALSE);
  55.     }
  56.  
  57.     bfile = sfile->bfile;
  58.     sbuf = sfile->buf;
  59.  
  60.     /* menu info: */
  61.     if (!sf_savemenu(sfile, sed_GetMenu(sed))) {
  62.         return(FALSE);
  63.     }
  64.  
  65.     /* sed info:
  66.      *    label, back, reg, sel, hireg, hisel, 
  67.      *    move method, special, ox
  68.      */
  69.  
  70.     /* if there is an funcname iarray pull names that way,
  71.      *    else search off func directly 
  72.      */
  73.  
  74.     if (menu_GetFuncNameA(sed_GetMenu(sed)) == NULL) {
  75.         s[0] = (sed_GetMoveMethod(sed) == FNULL) ? "" : sfile_FindMoveMethodName(sfile, sed_GetMoveMethod(sed)); 
  76.         s[1] = (sed_GetSpecial(sed) == FNULL) ? "" : sfile_FindSpecialName(sfile, sed_GetSpecial(sed));
  77.     }
  78.     else {
  79.         s[0] = sed_GetMoveMethodName(sed, sfile);
  80.         s[1] = sed_GetSpecialName(sed, sfile);
  81.     }
  82.     /* aux function moved down to the window level */
  83.     s[2] = "";
  84.  
  85.     sprintf(sbuf, "%d %d %d %d %d %d\n%s\n%s\n%s\n", 
  86.         sed_GetLabel(sed), (int)win_GetAttr(sed), (int)sed_GetRegAttr(sed), 
  87.         (int)sed_GetSelAttr(sed), (int)sed_GetHiRegAttr(sed),
  88.         (int)sed_GetHiSelAttr(sed),
  89.         fsym_NullCheck(s[0]), fsym_NullCheck(s[1]), s[2]);
  90.  
  91.     if (!bfile_Write(bfile, sbuf, strlen(sbuf))) {
  92.         return(FALSE);
  93.     }
  94.  
  95.     return(TRUE);
  96. }
  97.  
  98.