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

  1. /*
  2.     ufncload.c
  3.  
  4.     % ufuncreq_load
  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
  13.      3/28/90 jmd    ansi-fied
  14.      4/16/90 jdc    renamed _bfile_gets to bf_gets
  15.      5/02/90 jdc    preened
  16.     11/01/90 ted    put (void) in arg list of ufunc_LoadInit.
  17.      1/02/90 jdc    fixed handle = -1 initialization
  18. */
  19.  
  20. #include "sed.h"
  21. #include "ufuncobj.h"
  22. #include "ufuncod.h"
  23. #include "sfile.h"
  24. #include "sfilpriv.h"
  25.  
  26. OSTATIC objreq_func (ufuncreq_load);
  27.  
  28. void ufunc_LoadInit(void)
  29. {
  30.     ufuncreq_loadfptr = ufuncreq_load;
  31. }
  32.  
  33. ufunc_fptr ufunc_unresolved_fptr = FNULL;
  34.  
  35. static int ufuncreq_load(VOID *objdata, int msg, VOID *indata, VOID *outdata)
  36. /*
  37.     sfile load code for ufunc object
  38. */
  39. {
  40.     int handle;
  41.     ufuncopen_struct ufuncopen;
  42.     sfile_type sfile;
  43.     bob_type bob;
  44.  
  45.     oak_notused(outdata);
  46.     oak_notused(msg);
  47.  
  48.     sfile = (sfile_type)indata;
  49.     bob = ufuncod_GetSelf((ufunc_od *)objdata);
  50.  
  51.     /* ufunc info:
  52.         idata, ufunc name
  53.     */
  54.     if (bf_gets(sfile->bfile, sfile->buf, SFILE_BUFLEN, '\0') == 0) {
  55.         return(FALSE);
  56.     }
  57.     ufuncopen.idata = atoi(sfile->buf);
  58.  
  59.     if (bf_gets(sfile->bfile, sfile->buf, SFILE_BUFLEN, '\0') == 0) {
  60.         return(FALSE);
  61.     }
  62.  
  63.     if (strcmp(sfile->buf, FSYM_NULLSTR) == 0) {
  64.         ufuncopen.ufunc = FNULL;
  65.         handle = -1;
  66.     }
  67.     else if ((ufuncopen.ufunc = sfile_FindUserFunc(sfile, sfile->buf, &handle)) == FNULL) {
  68.         ufuncopen.ufunc = ufunc_unresolved_fptr;
  69.     }
  70.  
  71.     if (handle == -1) {
  72.         handle = sfile_PutUserFunc(sfile, sfile->buf, ufuncopen.ufunc);
  73.     }
  74.     ufuncbob_SetFuncHandle(bob, handle);
  75.  
  76.     return(obj_Do(bob, OBJM_INIT, &ufuncopen, NULL));
  77. }
  78.