- /* Find the environment in which to search the variable. */
- if (!NILP (frame))
- {
- Lisp_Object local;
-
- CHECK_FRAME (frame);
- frame = Fframe_with_environment (frame);
- local = get_frame_param (XFRAME (frame), Qenvironment);
- /* Use Vglobal_environment if there is no local environment. */
- if (!NILP (local))
- environment = local;
- }
- else if (!NILP (Vlocal_environment_variables))
- {
- Lisp_Object local = get_frame_param (XFRAME (Fframe_with_environment (selected_frame)),
- Qenvironment);
- if (EQ (Vlocal_environment_variables, Qt)
- && !NILP (local))
- environment = local;
- else if (CONSP (local))
- {
- for (scan = Vlocal_environment_variables; CONSP (scan); scan = XCDR (scan))
- {
- Lisp_Object entry = XCAR (scan);
- if (STRINGP (entry)
- && SBYTES (entry) == varlen
-#ifdef WINDOWSNT
- /* NT environment variables are case insensitive. */
- && ! strnicmp (SDATA (entry), var, varlen)
-#else /* not WINDOWSNT */
- && ! bcmp (SDATA (entry), var, varlen)
-#endif /* not WINDOWSNT */
- )
- {
- environment = local;
- break;
- }
- }
- }
- }
+static int
+getenv_internal (var, varlen, value, valuelen, frame)
+ char *var;
+ int varlen;
+ char **value;
+ int *valuelen;
+ Lisp_Object frame;
+{
+ /* Try to find VAR in Vprocess_environment first. */
+ if (getenv_internal_1 (var, varlen, value, valuelen,
+ Vprocess_environment))
+ return *value ? 1 : 0;