return XCONS (valcontents)->car;
}
\f
-/* Note that it must not be possible to quit within this function.
- Great care is required for this. */
+/* Find the value of a symbol, returning Qunbound if it's not bound.
+ This is helpful for code which just wants to get a variable's value
+ if it has one, without signalling an error.
+ Note that it must not be possible to quit
+ within this function. Great care is required for this. */
-DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
- "Return SYMBOL's value. Error if that is void.")
- (sym)
+Lisp_Object
+find_symbol_value (sym)
Lisp_Object sym;
{
register Lisp_Object valcontents, tem1;
case Lisp_Buffer_Objfwd:
return *(Lisp_Object *)(XUINT (valcontents) + (char *)current_buffer);
- case Lisp_Symbol:
- /* For a symbol, check whether it is 'unbound. */
- if (!EQ (valcontents, Qunbound))
- break;
- /* drops through! */
case Lisp_Void:
- return Fsignal (Qvoid_variable, Fcons (sym, Qnil));
+ return Qunbound;
}
return valcontents;
}
+DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,
+ "Return SYMBOL's value. Error if that is void.")
+ (sym)
+ Lisp_Object sym;
+{
+ Lisp_Object val = find_symbol_value (sym);
+
+ if (EQ (val, Qunbound))
+ return Fsignal (Qvoid_variable, Fcons (sym, Qnil));
+ else
+ return val;
+}
+
DEFUN ("set", Fset, Sset, 2, 2, 0,
"Set SYMBOL's value to NEWVAL, and return NEWVAL.")
(sym, newval)
#define CLASH_DETECTION
+/* Define this if your operating system declares signal handlers to
+ have a type other than the usual. `The usual' is `void' for ANSI C
+ systems (i.e. when the __STDC__ macro is defined), and `int' for
+ pre-ANSI systems. If you're using GCC on an older system, __STDC__
+ will be defined, but the system's include files will still say that
+ signal returns int or whatever; in situations like that, define
+ this to be what the system's include files want. */
+/* #define SIGTYPE int */
+
/* Here, on a separate page, add any special hacks needed
to make Emacs work on this system. For example,
you might define certain system call names that don't