;;; -*- Mode:LISP; Package:FILE-SYSTEM; Patch-File:T; Base:10 -*- (DEFUN PATHNAME-TRANSLATE-WILD-COMPONENT (TARGET-PATTERN DATA SPECS WILD-ANY WILD-ONE &OPTIONAL REVERSIBLE-P) (COND ((EQ TARGET-PATTERN :WILD) (IF (AND REVERSIBLE-P (CONSP SPECS)) (CAR SPECS) DATA)) ((OR (NUMBERP TARGET-PATTERN) (SYMBOLP TARGET-PATTERN) (EQ SPECS T)) TARGET-PATTERN) ((CONSP TARGET-PATTERN) (LOOP FOR ELT IN TARGET-PATTERN COLLECT (IF (EQ ELT :WILD) (POP SPECS) (MULTIPLE-VALUE-BIND (NEW-ELT SPECS-LEFT) (PATHNAME-TRANSLATE-COMPONENT-FROM-SPECS ELT SPECS WILD-ANY WILD-ONE) (SETQ SPECS SPECS-LEFT) NEW-ELT)))) (T (PATHNAME-TRANSLATE-COMPONENT-FROM-SPECS TARGET-PATTERN SPECS WILD-ANY WILD-ONE))))