home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / MN325SRC.ZIP / makenl-3.2.5 / src / exec.h < prev    next >
C/C++ Source or Header  |  2005-02-06  |  4KB  |  122 lines

  1. /* $Id: exec.h,v 1.2 2004/07/11 09:32:05 ozzmosis Exp $ */
  2.  
  3. #ifndef _EXEC_H
  4. #define _EXEC_H
  5.  
  6. /* EXEC.H: EXEC function with memory swap - Main function header file.
  7.  
  8.    Public domain software by
  9.  
  10.    Thomas Wagner
  11.    Ferrari electronic GmbH
  12.    Beusselstrasse 27
  13.    D-1000 Berlin 21
  14.    Germany
  15.  */
  16.  
  17. extern int do_exec(const char *xfn, const char *pars, int spawn,
  18.                    unsigned needed, char **envp);
  19.  
  20. /*
  21.    The EXEC function.
  22.  
  23.    Parameters:
  24.  
  25.    xfn      is a string containing the name of the file
  26.    to be executed.
  27.  
  28.    pars     The program parameters.
  29.  
  30.    spawn    If 0, the function will terminate after the
  31.    EXECed program returns, the function will not return.
  32.  
  33.    NOTE: If the program file is not found, the function
  34.    will always return with the appropriate error
  35.    code, even if 'spawn' is 0.
  36.  
  37.    If non-0, the function will return after executing the
  38.    program. If necessary (see the "needed" parameter),
  39.    memory will be swapped out before executing the program.
  40.    For swapping, spawn must contain a combination of the
  41.    following flags:
  42.  
  43.    USE_EMS  (0x01)  - allow EMS swap
  44.    USE_XMS  (0x02)  - allow XMS swap
  45.    USE_FILE (0x04)  - allow File swap
  46.  
  47.    The order of trying the different swap methods can be
  48.    controlled with one of the flags
  49.  
  50.    EMS_FIRST (0x00) - EMS, XMS, File (default)
  51.    XMS_FIRST (0x10) - XMS, EMS, File
  52.  
  53.    If swapping is to File, the attribute of the swap file
  54.    can be set to "hidden", so users are not irritated by
  55.    strange files appearing out of nowhere with the flag
  56.  
  57.    HIDE_FILE (0x40)    - create swap file as hidden
  58.  
  59.    and the behaviour on Network drives can be changed with
  60.  
  61.    NO_PREALLOC (0x100) - don't preallocate
  62.    CHECK_NET (0x200)   - don't preallocate if file on net.
  63.  
  64.    This checking for Network is mainly to compensate for
  65.    a strange slowdown on Novell networks when preallocating
  66.    a file. You can either set NO_PREALLOC to avoid allocation
  67.    in any case, or let the prep_swap routine decide whether
  68.    to do preallocation or not depending on the file being
  69.    on a network drive (this will only work with DOS 3.1 or
  70.    later).
  71.  
  72.    needed   The memory needed for the program in paragraphs (16 Bytes).
  73.    If not enough memory is free, the program will
  74.    be swapped out.
  75.    Use 0 to never swap, 0xffff to always swap.
  76.    If 'spawn' is 0, this parameter is irrelevant.
  77.  
  78.    envp     The environment to be passed to the spawned
  79.    program. If this parameter is NULL, a copy
  80.    of the parent's environment is used (i.e.
  81.    'putenv' calls have no effect). If non-NULL,
  82.    envp must point to an array of pointers to
  83.    strings, terminated by a NULL pointer (the
  84.    standard variable 'environ' may be used).
  85.  
  86.    Return value:
  87.  
  88.    0x0000..00FF: The EXECed Program's return code
  89.    0x0101:       Error preparing for swap: no space for swapping
  90.    0x0102:       Error preparing for swap: program too low in memory
  91.    0x0200:       Program file not found
  92.    0x03xx:       DOS-error-code xx calling EXEC
  93.    0x0400:       Error allocating environment buffer
  94.    0x0500:       Swapping requested, but prep_swap has not
  95.    been called or returned an error.
  96.    0x0501:       MCBs don't match expected setup
  97.    0x0502:       Error while swapping out
  98.  */
  99.  
  100. /* Return codes (only upper byte significant) */
  101.  
  102. # define RC_PREPERR   0x0100
  103. # define RC_NOFILE    0x0200
  104. # define RC_EXECERR   0x0300
  105. # define RC_ENVERR    0x0400
  106. # define RC_SWAPERR   0x0500
  107.  
  108. /* Swap method and option flags */
  109.  
  110. # define USE_EMS      0x01
  111. # define USE_XMS      0x02
  112. # define USE_FILE     0x04
  113. # define EMS_FIRST    0x00
  114. # define XMS_FIRST    0x10
  115. # define HIDE_FILE    0x40
  116. # define NO_PREALLOC  0x100
  117. # define CHECK_NET    0x200
  118.  
  119. # define USE_ALL      (USE_EMS | USE_XMS | USE_FILE)
  120.  
  121. #endif
  122.