LMFL#!C(:HOST "SYS" :BACKUP-DATE 2760031849. :SYSTEM-TYPE :LOGICAL :VERSION 15. :TYPE "LISP" :NAME "FILE-ACCESS-MIXIN" :DIRECTORY ("REL3-SOURCE" "PATHNAME") :SOURCE-PATTERN "( :DIRECTORY (\"REL3-SOURCE\") :NAME :WILD :TYPE :WILD :VERSION :NEWEST)" :VERSION-LIMIT 0. :CHARACTERS T :NOT-BACKED-UP T :CREATION-DATE 2758741815. :AUTHOR "REL3" :LENGTH-IN-BYTES 5582. :LENGTH-IN-BLOCKS 6. :BYTE-SIZE 8.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ;;; -*- Mode:Common-Lisp; Package:FS; Base:10.; COLD-LOAD:T  -*-;;;                           RESTRICTED RIGHTS LEGEND;;;Use, duplication, or disclosure by the Government is subject to;;;restrictions as set forth in subdivision (b)(3)(ii) of the Rights in;;;Technical Data and Computer Software clause at 52.227-7013.;;;                     TEXAS INSTRUMENTS INCORPORATED.;;;                              P.O. BOX 2909;;;                           AUSTIN, TEXAS 78769;;;                                 MS 2151;;; Copyright (C) 1985,1987 Texas Instruments Incorporated. All rights reserved.;;; This file contains the pathname interface to the local file system.;;; REVISED:;;;04.15.87 MBCRevert :DELETE to its previous (correct) definition.;;;04.14.87 MBC Make :delete-and-expunge use it's old calling sequence,  one optional;;;argument, ERROR-P.;;;02.04.87 MBCTransform Delete message to Delete-And-Expunge message for hosts that;;;don't support Undelete in methods :DELETE & :DELETE-MULTIPLE-FILES.;;;Use better translated host when looking for Inconsistent hosts in ;;;methods :DELETE-AND-EXPUNGE-MULTIPLE-FILES, :DELETE-MULTIPLE-FILES,;;; and :MULTIPLE-FILE-PLISTS (for BJ).;;; 12.19.86 MBCMake methods (:OPEN, :DELETE-AND-EXPUNGE, :DELETE-AND-EXPUNGE-MULTIPLE-FILES,;;;:DELETE-MULTIPLE-FILES, :MULTIPLE-FILE-PLISTS, & :OPEN-CANONICAL-TYPE);;;use physical host and where PATHNAMES is an argument, make sure that;;;they're all on the same host.(DEFFLAVOR FILE-ACCESS-MIXIN () ()  (:REQUIRED-FLAVORS FS:PATHNAME))(defmethod (File-Access-Mixin :HOMEDIR) (&OPTIONAL (id user-id))  (send host :file :homedir self id))(DEFMETHOD (FILE-ACCESS-MIXIN :OPEN) (PATHNAME &REST OPTIONS)  (send (send (pathname-host pathname) :host) :file :open pathname options))(DEFMETHOD (FILE-ACCESS-MIXIN :DELETE-AND-EXPUNGE) (&OPTIONAL (ERROR-P NIL));4.14.87  (send (send host :host) :file :delete-and-expunge self error-p));;; Note that SELF can be practically any pathname, but what will be deleted will be;;; whatever is in the argument PATHNAMES.  Same for other methods that accept PATHNAMES.(DEFMETHOD (FILE-ACCESS-MIXIN :DELETE-MULTIPLE-FILES) (ERROR-P PATHNAMES)  (let ((real-host (net:translated-host (pathname-host (first pathnames)))))    (when (find real-host pathnames :test-not #'eq:key #'(lambda (pathname) (net:translated-host (pathname-host pathname))));2.4.87 MBC      (ferror nil "Inconsistent host. All pathnames must be on the same host."))    (send real-host :file  (if (send real-host :undeletable-p);2.4.87 MBC      :delete-multiple-files      :delete-and-expunge-multiple-files)  pathnames error-p)))(DEFMETHOD (FILE-ACCESS-MIXIN  :DELETE-AND-EXPUNGE-MULTIPLE-FILES) (ERROR-P PATHNAMES)  (let ((real-host (net:translated-host (pathname-host (first pathnames)))))    (when (find real-host pathnames :test-not #'eq:key #'(lambda (pathname) (net:translated-host (pathname-host pathname))));2.4.87 MBC      (ferror nil "Inconsistent host. All pathnames must be on the same host."))    (send real-host :file :delete-and-expunge-multiple-files pathnames error-p)))(DEFMETHOD (FILE-ACCESS-MIXIN :MULTIPLE-FILE-PLISTS) (PATHNAMES OPTIONS)  "This is a hack to speed up DIRED. There are no currently meaningful options."  (let ((real-host (pathname-host (first pathnames))))    (when (find real-host pathnames :test-not #'eq:key #'(lambda (pathname) (net:translated-host (pathname-host pathname))));2.4.87 MBC      (ferror nil "Inconsistent host. All pathnames must be on the same host."))    (send (send real-host :host) :file :multiple-file-plists pathnames options)))(DEFMETHOD (FILE-ACCESS-MIXIN :DELETE) (&OPTIONAL (ERROR-P NIL))  (send host :file(if (send host :undeletable-p);2.4.87 MBC    :delete    :delete-and-expunge);4.15.87 Revert to older version!selferror-p))(DEFMETHOD (FILE-ACCESS-MIXIN :UNDELETABLE-P) ()  (send host :undeletable-p))(DEFMETHOD (FILE-ACCESS-MIXIN :UNDELETE) (&OPTIONAL (ERROR-P NIL))  (send host :file :undelete self error-p))(DEFMETHOD (FILE-ACCESS-MIXIN :EXPUNGE) (&KEY &OPTIONAL (ERROR T))  (send host :file :expunge self error))(DEFMETHOD (FILE-ACCESS-MIXIN :RENAME) (NEW-NAME &OPTIONAL (ERROR-P NIL))  (send host :file :rename self new-name error-p))(DEFMETHOD (FILE-ACCESS-MIXIN :DIRECTORY-LIST) (OPTIONS)  (send host :file :directory-list self options))(defmethod (file-access-mixin :directory-stream)(&optional &rest options)  (lexpr-send host :file :directory-stream self options))(DEFMETHOD (FILE-ACCESS-MIXIN :PROPERTIES) (&OPTIONAL (ERROR-P T))  (send host :file :properties self error-p))(defmethod (file-access-mixin :read-directory-stream-entry) (&optional &rest options)  (lexpr-send host :file :read-directory-stream-entry self options))(DEFMETHOD (FILE-ACCESS-MIXIN :ALL-DIRECTORIES) (OPTIONS)  (send host :file :all-directories self options))(DEFMETHOD (FILE-ACCESS-MIXIN :CHANGE-PROPERTIES) (ERROR-P &REST PLIST)  (send host :file :change-properties self plist error-p))(DEFMETHOD (FILE-ACCESS-MIXIN :COMPLETE-STRING) (STRING OPTIONS)  (send host :file :complete-string self string options))(DEFMETHOD (FILE-ACCESS-MIXIN :CREATE-DIRECTORY) (&KEY &OPTIONAL (ERROR T))  (send host :file :create-directory self error))(DEFMETHOD (FILE-ACCESS-MIXIN :CREATE-LINK) (TARGET &KEY &OPTIONAL (ERROR T))  (send host :file :create-link self target error))(DEFMETHOD (FILE-ACCESS-MIXIN :TRUENAME) (&OPTIONAL (ERROR-P T))  (send host :file :truename self error-P))multiple-value-bind (found-flag sub-string new-previous-char new-begin)      (Find-Component self string (Get-Delimiters) begin end      (Get-EOS-Valid-Flag)      (Get-Reverse-Search)      (Get-Reset-Pointer)      (Get-Parsing-Function))    (if (or found-flag (Get-EOS-Valid-Flag)); String is found -- Call the Parsing function.(Call-and-Push-Components sub-string)(Call-and-Push-Components nil))    (when new-previous-char      (setq previous-char (character new-previous-char)))    (when new-begin      (setq begin new-begin)