home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / DLIBSSRC.ZIP / GETENV.C < prev    next >
Encoding:
C/C++ Source or Header  |  1987-10-06  |  1.4 KB  |  59 lines

  1. #include <stdio.h>
  2.  
  3. extern char    *_envp;
  4.  
  5. static char *findenv(var)
  6. register char *var;
  7. /*
  8.  *    INTERNAL FUNCTION.  This functions attempts to locate <var> in
  9.  *    the environment.  If <var> is not found, NULL is returned.  If
  10.  *    the environment is NULL, NULL is returned.  If <var> is found,
  11.  *    a pointer to the beginning of <var> in the environment is returned.
  12.  *    BOTH MS-DOS AND TOS ENVIRONMENT FORMATS ARE ACCOMODATED.
  13.  */
  14. {
  15.     register char *p;
  16.     register int len;
  17.  
  18.     if((p = _envp) == NULL)
  19.         return(NULL);
  20.     len = strlen(var);
  21.     while(*p) {
  22.         if((p[len] == '=') && !strncmp(p, var, len))
  23.             return(p);
  24.         while(*p++)        /* move to next arg */
  25.             ;
  26.     }
  27.     return(NULL);
  28. }
  29.  
  30. char *getenv(var)
  31. register char *var;
  32. /*
  33.  *    Search for <var> in the environment.  If <var> is found, a pointer
  34.  *    to it's value is returned.  NULL is returned if <var> is not found.
  35.  *    WARNING:  The returned pointer points into the environment and
  36.  *    must not be modified!
  37.  */
  38. {
  39.     register char *p, *q;
  40.     register int len;
  41.  
  42.     len = strlen(var);
  43.     if(p = findenv(var)) {
  44.         p += (len + 1);
  45.         if(*p == '\0') {    /* TOS env format or empty value */
  46.             q = p+1;
  47.             if(*q == '\0')        /* empty value + end of env */
  48.                 return(p);
  49.             while(*q && (*q != '='))
  50.                 ++q;
  51.             if(*q)            /* empty value */
  52.                 return(p);
  53.             else            /* TOS env format */
  54.                 return(p+1);
  55.         }
  56.     }
  57.     return(p);
  58. }
  59.