*** empty log message ***
authorJim Blandy <jimb@redhat.com>
Tue, 28 Jan 1992 01:53:11 +0000 (01:53 +0000)
committerJim Blandy <jimb@redhat.com>
Tue, 28 Jan 1992 01:53:11 +0000 (01:53 +0000)
src/data.c
src/s/bsd4-3.h
src/s/template.h

index 184cfba..8906d68 100644 (file)
@@ -649,12 +649,14 @@ swap_in_symval_forwarding (sym, valcontents)
   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;
@@ -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)
index e9754af..332bbaa 100644 (file)
@@ -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
index 6cf4905..6238ee7 100644 (file)
@@ -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