Jump to content

DosScanEnv: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Description==
This call scans (searches) an environment segment for an environment variable.
This call scans (searches) an environment segment for an environment variable.  


==Syntax==
==Syntax==
  DosScanEnv (EnvVarName, ResultPointer)
  DosScanEnv(pszName, ppszValue)


==Parameters==
==Parameters==
; EnvVarName (PSZ) - input : Address of the name of the environment variable. Do not include a trailing " = ", since this is not part of the name.  
;pszName (PSZ) - input : Address of the name of the environment variable. Do not include a trailing equal sign ( = ), since this is not part of the name.
;ppszValue (PSZ *) - output : A pointer to the PSZ in which a pointer to the environment string is returned by the system.
:ppszValue points to the first character of the string that is the value of the environment variable, and can be passed directly to DosSearchPath.


; ResultPointer (PSZ FAR *) - output : Address where the system returns the pointer to the environment string. ResultPointer points to the first character of the string that is the value of the environment variable and can be passed directly into DosSearchPath.
==Return Code==
;ulrc (APIRET) - returns:DosScanEnv returns the following values:
* 0 NO_ERROR
*203 ERROR_ENVVAR_NOT_FOUND


==Return==
==Remarks==
Assume that the process' environment contains:
  "DPATH=c:\sysdir;c:\libdir"
        |
        |
        |
        |----> pszValue points here after the
                following call to DosScanEnv:
DosScanEnv("DPATH", pszValue);


rc (USHORT) - return
ppszValue points to the first character of the value of the environment variable.


Return code descriptions are:
==Example Code==
This example scans the environment segment for the "PATH" variable and displays it. It then searches the path, plus the current directory of the "VIEW.EXE" program.
<PRE>
#define INCL_DOS
#define INCL_DOSERRORS      /* DOS error values */
#include <os2.h>
#include <stdio.h>


* 0      NO_ERROR
int main(VOID) {
* 203    ERROR_ENVVAR_NOT_FOUND


==Remarks==
  PSZ      PathValue        = "";        /* PATH environment variable  */
  UCHAR    SearchResult[256] = "";        /* Result of PATH search      */
  APIRET    rc                = NO_ERROR;  /* Return code                */
 
  rc=DosScanEnv("PATH",&PathValue);  /* Get contents of PATH environment
                                        variable                        */
  if (rc != NO_ERROR) {
      printf("DosScanEnv error: return code = %u\n",rc);
      return 1;
  } else {
      printf("PATH is:\n%s\n\n", PathValue);
  }
      /* Scan the current directory and path for the VIEW.EXE program.
        Ignore any errors from network drives which may not be in use. */


Assume that the process' environment contains:
  rc=DosSearchPath(SEARCH_CUR_DIRECTORY | SEARCH_IGNORENETERRS,
                    PathValue,              /* Path value just obtained */
                    "VIEW.EXE",              /* Name of file to look for */
                    SearchResult,            /* Result of the search    */
                    sizeof(SearchResult));  /* Length of search buffer  */


            "DPATH=c:\sysdir;c:\libdir"
  if (rc != NO_ERROR) {
                  |
      printf("DosSearchPath error: return code = %u\n",rc);
                  ³
      return 1;
                  ³
  } else {
                  À---- ResultPointer points here after the
      printf("Found desired file -- %s\n", SearchResult);
                            following call to DosScanEnv:
  }
   
  return NO_ERROR;
            DosScanEnv("DPATH", &ResultPointer);
  }
</PRE>


As noted above, ResultPointer points to the first character of the value of the environment variable.
==Related Functions==
* [[DosSearchPath]]


[[Categoty:The OS/2 API Project]]
[[Category:Dos]]

Latest revision as of 22:31, 24 November 2019

This call scans (searches) an environment segment for an environment variable.

Syntax

DosScanEnv(pszName, ppszValue)

Parameters

pszName (PSZ) - input
Address of the name of the environment variable. Do not include a trailing equal sign ( = ), since this is not part of the name.
ppszValue (PSZ *) - output
A pointer to the PSZ in which a pointer to the environment string is returned by the system.
ppszValue points to the first character of the string that is the value of the environment variable, and can be passed directly to DosSearchPath.

Return Code

ulrc (APIRET) - returns
DosScanEnv returns the following values:
  • 0 NO_ERROR
  • 203 ERROR_ENVVAR_NOT_FOUND

Remarks

Assume that the process' environment contains:

 "DPATH=c:\sysdir;c:\libdir"
        |
        |
        |
        |----> pszValue points here after the
               following call to DosScanEnv:

DosScanEnv("DPATH", pszValue);

ppszValue points to the first character of the value of the environment variable.

Example Code

This example scans the environment segment for the "PATH" variable and displays it. It then searches the path, plus the current directory of the "VIEW.EXE" program.

 #define INCL_DOS
 #define INCL_DOSERRORS       /* DOS error values */
 #include <os2.h>
 #include <stdio.h>

int main(VOID) {

   PSZ       PathValue         = "";        /* PATH environment variable  */
   UCHAR     SearchResult[256] = "";        /* Result of PATH search      */
   APIRET    rc                = NO_ERROR;  /* Return code                */

   rc=DosScanEnv("PATH",&PathValue);  /* Get contents of PATH environment
                                         variable                         */
   if (rc != NO_ERROR) {
       printf("DosScanEnv error: return code = %u\n",rc);
       return 1;
   } else {
       printf("PATH is:\n%s\n\n", PathValue);
   }
      /* Scan the current directory and path for the VIEW.EXE program.
         Ignore any errors from network drives which may not be in use. */

   rc=DosSearchPath(SEARCH_CUR_DIRECTORY | SEARCH_IGNORENETERRS,
                    PathValue,               /* Path value just obtained */
                    "VIEW.EXE",              /* Name of file to look for */
                    SearchResult,            /* Result of the search     */
                    sizeof(SearchResult));   /* Length of search buffer  */

   if (rc != NO_ERROR) {
       printf("DosSearchPath error: return code = %u\n",rc);
       return 1;
   } else {
       printf("Found desired file -- %s\n", SearchResult);
   }
  return NO_ERROR;
 }

Related Functions