From 14e76af946582f7151f53da1579386891c9445d8 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 28 Jan 1992 01:53:11 +0000 Subject: [PATCH] *** empty log message *** --- src/data.c | 32 +++++++++++++++++++++----------- src/s/bsd4-3.h | 3 +++ src/s/template.h | 9 +++++++++ 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/data.c b/src/data.c index 184cfba3a3..8906d68cab 100644 --- a/src/data.c +++ b/src/data.c @@ -649,12 +649,14 @@ swap_in_symval_forwarding (sym, valcontents) return XCONS (valcontents)->car; } -/* 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; @@ -689,18 +691,26 @@ DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, 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) diff --git a/src/s/bsd4-3.h b/src/s/bsd4-3.h index e9754af045..332bbaa385 100644 --- a/src/s/bsd4-3.h +++ b/src/s/bsd4-3.h @@ -127,3 +127,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ is named _avenrun. */ #define LDAV_SYMBOL "_avenrun" + +/* The return type of a signal handling function. */ +#define SIGTYPE int diff --git a/src/s/template.h b/src/s/template.h index 6cf4905db3..6238ee7ef9 100644 --- a/src/s/template.h +++ b/src/s/template.h @@ -128,6 +128,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #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 -- 2.20.1