0.8.13.41: Require robustness
[sbcl.git] / src / code / target-misc.lisp
index 64d4fb3..4203f4f 100644 (file)
         (let ((source (first (sb!c::compiled-debug-info-source info))))
           (cond ((and (eq (sb!c::debug-source-from source) :lisp)
                       (eq (sb!c::debug-source-info source) fun))
-                 (values (second (svref (sb!c::debug-source-name source) 0))
+                 (values (svref (sb!c::debug-source-name source) 0)
                          nil
                         name))
+               ;; FIXME: shouldn't these two clauses be the other way
+               ;; round?  Using VALID-FUNCTION-NAME-P to see if we
+               ;; want to find an inline-expansion?
                 ((stringp name)
                  (values nil t name))
                 (t
@@ -51,8 +54,7 @@
   (case (widetag-of fun)
     (#.sb!vm:closure-header-widetag
      (%simple-fun-name (%closure-fun fun)))
-    ((#.sb!vm:simple-fun-header-widetag
-      #.sb!vm:closure-fun-header-widetag)
+    (#.sb!vm:simple-fun-header-widetag
      ;; KLUDGE: The pun that %SIMPLE-FUN-NAME is used for closure
      ;; functions is left over from CMU CL (modulo various renaming
      ;; that's gone on since the fork).
       (funcallable-instance-fun fun)))))
 
 (defun (setf %fun-name) (new-name fun)
+  (aver nil) ; since this is unsafe 'til bug 137 is fixed
   (let ((widetag (widetag-of fun)))
     (case widetag
-      ((#.sb!vm:simple-fun-header-widetag
-       #.sb!vm:closure-fun-header-widetag)
+      (#.sb!vm:simple-fun-header-widetag
        ;; KLUDGE: The pun that %SIMPLE-FUN-NAME is used for closure
        ;; functions is left over from CMU CL (modulo various renaming
        ;; that's gone on since the fork).
   "Return a string giving the name of the local machine."
   (sb!unix:unix-gethostname))
 
+(defvar *machine-version*)
+
+(defun machine-version ()
+  #!+sb-doc
+  "Return a string describing the version of the computer hardware we
+are running on, or NIL if we can't find any useful information."
+  (unless (boundp '*machine-version*)
+    (setf *machine-version* (get-machine-version)))
+  *machine-version*)
+  
 ;;; FIXME: Don't forget to set these in a sample site-init file.
 ;;; FIXME: Perhaps the functions could be SETFable instead of having the
 ;;; interface be through special variables? As far as I can tell
   "Return a string with the long form of the site name, or NIL if not known."
   *long-site-name*)
 \f
+;;;; ED
+(defvar *ed-functions* nil
+  "See function documentation for ED.")
+
+(defun ed (&optional x)
+  "Starts the editor (on a file or a function if named).  Functions
+from the list *ED-FUNCTIONS* are called in order with X as an argument
+until one of them returns non-NIL; these functions are responsible for
+signalling a FILE-ERROR to indicate failure to perform an operation on
+the file system."
+  (dolist (fun *ed-functions*
+          (error 'extension-failure
+                 :format-control "Don't know how to ~S ~A"
+                 :format-arguments (list 'ed x)
+                 :references (list '(:sbcl :variable *ed-functions*))))
+    (when (funcall fun x)
+      (return t))))
+\f
 ;;;; dribble stuff
 
 ;;; Each time we start dribbling to a new stream, we put it in
 
 (defun %byte-blt (src src-start dst dst-start dst-end)
   (%byte-blt src src-start dst dst-start dst-end))
+
+;;;; some *LOAD-FOO* variables
+
+(defvar *load-print* nil
+  #!+sb-doc
+  "the default for the :PRINT argument to LOAD")
+
+(defvar *load-verbose* nil
+  ;; Note that CMU CL's default for this was T, and ANSI says it's
+  ;; implementation-dependent. We choose NIL on the theory that it's
+  ;; a nicer default behavior for Unix programs.
+  #!+sb-doc
+  "the default for the :VERBOSE argument to LOAD")