# HG changeset patch # User Jim Blandy # Date 696563591 0 # Node ID 626908d37dea17b72515d6aa6b2f945d8d4009ac # Parent 12facf6e03ed701f11f7eedc6312ff38d0d3a08e *** empty log message *** diff -r 12facf6e03ed -r 626908d37dea src/data.c --- a/src/data.c Mon Jan 27 22:52:05 1992 +0000 +++ b/src/data.c Tue Jan 28 01:53:11 1992 +0000 @@ -649,12 +649,14 @@ 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 @@ 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 -r 12facf6e03ed -r 626908d37dea src/s/bsd4-3.h --- a/src/s/bsd4-3.h Mon Jan 27 22:52:05 1992 +0000 +++ b/src/s/bsd4-3.h Tue Jan 28 01:53:11 1992 +0000 @@ -127,3 +127,6 @@ is named _avenrun. */ #define LDAV_SYMBOL "_avenrun" + +/* The return type of a signal handling function. */ +#define SIGTYPE int diff -r 12facf6e03ed -r 626908d37dea src/s/template.h --- a/src/s/template.h Mon Jan 27 22:52:05 1992 +0000 +++ b/src/s/template.h Tue Jan 28 01:53:11 1992 +0000 @@ -128,6 +128,15 @@ #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