[Toc][Index]

DosSearchPath


Bindings:  C, MASM 

This call provides a general path search mechanism that allows 
applications to find files residing along paths.  The path string may come 
from the process environment, or be supplied directly by the caller. 
 DosSearchPath     (Control, PathRef, FileName, ResultBuffer, 
                   ResultBufferLen) 
 
 Control (USHORT) - input 
    A word bit vector that controls the behavior of DosSearchPath. 
    Bit       Description 
    15-3      Reserved bits, must be zero. 
    2         Ignore network errors bit. The Ignore Network Errors Bit 
              controls whether the search will abort if it encounters a 
              network error or will continue the search with the next 
              element.  This allows one to place network paths in the PATH 
              variable and be able to find executables in components of 
              the PATH variable even if the network returns an error, for 
              example, if a server is down.  If the Ignore Network Errors 
              Bit = 0, DosSearchPath will abort the search if it 
              encounters an error from the network.  If the Ignore Network 
              Errors Bit = 1, DosSearchPath will continue on the search if 
              it encounters network errors. 
    1         Path source bit.  The path source bit determines how 
              DosSearchPath interprets the PathRef argument. 
              0 = The PathRef points to the actual search path. The search 
              path string may be anywhere in the calling process's address 
              space.  Therefore, it may be in the environment, but is not 
              required. 
              1 = The PathRef points to the name of an environment 
              variable in the process environment, and that environment 
              variable contains the search path. 
    0         Implied current bit. The implied current bit controls 
              whether the current directory is implicitly on the front of 
              the search path. 
              0 = DosSearchPath only searches the current directory if it 
              appears in the search path. 
              1 = DosSearchPath searches the current working directory 
              before it searches the directories in the search path. 
              For example, implied current bit = 0 and path = ".\;a;b" is 
              equivalent to implied current bit = 1 and path = "a;b". 
 PathRef (PSZ) - input 
    Address of the path. If the path source bit of control = 0, PathRef is 
    the search path that may be anywhere in the caller's address space. 
    A search path consists of a sequence of paths separated by a semicolon 
    (;).  It is a single ASCIIZ string.  The directories are searched in 
    the order they appear in the path. 
    If the path source bit of control = 1, PathRef is the name of an 
    environment variable, that contains the search path. 
    A search path consists of a sequence of paths separated by ";". It is 
    a single ASCIIZ string.  The directories are searched in the order 
    they appear in the path.  Paths that contain ";"s should be quoted. 
     For example: 

    "c:&this  is  ;  one directory path";thisisanother
    
    
    Environment variable names are simply strings that match name strings 
    in the environment.  The equal (=) sign is not part of the name. 
 FileName (PSZ) - input 
    Address of the ASCIIZ file name. It may contain global file name 
    characters.  If FileName does contain global file name characters, 
    they remain in the result path returned in ResultBuffer.  This allows 
    applications like CMD.EXE to feed the output directly to DosFindFirst. 
     If there are no global file name characters in FileName, the 
    resulting path returned in ResultBuffer is a full qualified name, and 
    may be passed directly to DosOpen, or any other system call. 
 ResultBuffer (PBYTE) - output 
    Address of the pathname of the file, if found. If FileName is found in 
    one of the directories along the path, its full pathname is returned 
    in ResultBuffer (with global file name characters from FileName left 
    in place.) Do not depend on the contents of ResultBuffer being 
    meaningful if DosSearchPath returns a non-zero return code. 
 ResultBufferLen (USHORT) - input 
    Length, in bytes, of the ResultBuffer. 
 rc (USHORT) - return 
    Return code descriptions are: 
    0         NO_ERROR 
    1         ERROR_INVALID_FUNCTION 
    2         ERROR_FILE_NOT_FOUND 
    87        ERROR_INVALID_PARAMETER 
    111       ERROR_BUFFER_OVERFLOW 
    203       ERROR_ENVVAR_NOT_FOUND 
 
 Remarks 
 PathRef always points to an ASCIIZ string. Let DPATH be an environment 
 variable in the environment segment of the process. 

 "DPATH=c:\sysdir;c:\init"  /* in the environment */
 
 
 The following two code fragments are equivalent: 

 DosScanEnv("DPATH", &PathRef);
 DosSearchPath(0, /* Path Source Bit = 0 */
     PathRef, "myprog.ini", &ResultBuffer, ResultBufLen);
 
 DosSearchPath(2, /* Path Source Bit = 1 */
     "DPATH", "myprog.ini", &ResultBuffer, ResultBufLen);
 
 
 They both use the search path stored as DPATH in the environment segment. 
  In the first case, the application uses DosScanEnv to find the variable: 
 in the second case DosSearchPath calls DosScanEnv for the application. 
 DosSearchPath does not check for consistency or formatting on the names. 
  It does a DosFindFirst on a series of names it constructs from PathRef 
 and FileName. 
 To determine the size of the returned path name, the ResultBuffer must be 
 scanned for the ASCIIZ terminator. 
 DosQSysInfo must be used by an application to determine the maximum path 
 length supported by OS/2.  The returned value should be used to 
 dynamically allocate buffers that are to be used to store paths. 

Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs