[9d04bd]: impnotes / filename-misc.html Maximize Restore History

Download this file

filename-misc.html    93 lines (92 with data), 28.9 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.5. Miscellaneous</title><link rel="stylesheet" href="impnotes.css" type="text/css" /><link rev="made" href="mailto:clisp-list@lists.sourceforge.net" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_8465" /><link rel="home" href="index.html" title="Implementation Notes for GNU CLISP" /><link rel="up" href="filenames.html" title="Chapter 19. Filenames" /><link rel="prev" href="log-path.html" title="19.4. Logical Pathnames" /><link rel="next" href="files.html" title="Chapter 20. Files" /><link rel="copyright" href="legalese.html" title="Legal Status of the CLISP Implementation Notes" /><meta name="date" content="'generated: 2009-07-28 12:48:49-04:00'" /><link rel="author" title="Authors" href="index.html#authors" /><link rel="contents" title="Table of Contents" href="index.html" /><link rel="glossary" href="glossary.html" /><link rel="help" href="faq.html#faq-help" title="How do I ask for help?" /><link rel="home" title="Home" href="http://clisp.cons.org" /><link rel="index" href="idx.html" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">19.5. Miscellaneous</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="log-path.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Filenames </th><td width="20%" align="right"> <a accesskey="n" href="files.html">Next</a></td></tr></table><hr /></div><div class="section" title="19.5. Miscellaneous"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="filename-misc"></a>19.5. Miscellaneous</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="filename-misc.html#translate-pathname">19.5.1. Function <code class="function">TRANSLATE-PATHNAME</code></a></span></dt><dt><span class="section"><a href="filename-misc.html#translate-logpath">19.5.2. Function <code class="function">TRANSLATE-LOGICAL-PATHNAME</code></a></span></dt><dt><span class="section"><a href="filename-misc.html#parsename">19.5.3. Function <code class="function">PARSE-NAMESTRING</code></a></span></dt><dt><span class="section"><a href="filename-misc.html#pathmerge">19.5.4. Function <code class="function">MERGE-PATHNAMES</code></a></span></dt><dt><span class="section"><a href="filename-misc.html#load-lpt">19.5.5. Function <code class="function">LOAD-LOGICAL-PATHNAME-TRANSLATIONS</code></a></span></dt><dt><span class="section"><a href="filename-misc.html#absolute-pathname">19.5.6. Function <code class="function">EXT:ABSOLUTE-PATHNAME</code></a></span></dt></dl></div><p title="Pathname Designators"><a id="path-des"></a><b>Pathname Designators. </b>When <a class="link" href="filename-misc.html#parsename" title="19.5.3. Function PARSE-NAMESTRING"><code class="varname">CUSTOM:*PARSE-NAMESTRING-ANSI*</code></a> is <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_symbol.html" target="_top"><code class="classname">SYMBOL</code></a> is also treated as a
<a class="" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/glo_p.html#pathname_designator">pathname designator</a>,
namely its <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_symbol-name.html" target="_top"><code class="function">SYMBOL-NAME</code></a> is converted to the
operating system's preferred pathname case.</p><p title="Function PATHNAME-MATCH-P"><a id="path-match"></a><b>Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_pathname-match-p.html" target="_top"><code class="function">PATHNAME-MATCH-P</code></a></b><a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_pathname-match-p.html" target="_top"><code class="function">PATHNAME-MATCH-P</code></a> does not interpret missing components as
wild.</p><div class="section" title="19.5.1. Function TRANSLATE-PATHNAME"><div class="titlepage"><div><div><h3 class="title"><a id="translate-pathname"></a>19.5.1. Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate-pathname.html" target="_top"><code class="function">TRANSLATE-PATHNAME</code></a></h3></div></div></div><p><a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate-pathname.html" target="_top"><code class="function">TRANSLATE-PATHNAME</code></a> accepts three additional keyword arguments:
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate-pathname.html" target="_top"><code class="function">TRANSLATE-PATHNAME</code></a> <em class="replaceable"><code>source</code></em>
<em class="replaceable"><code>from-wildname</code></em>
<em class="replaceable"><code>to-wildname</code></em> <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_3-4-1.html" target="_top"><code class="literal">&amp;KEY</code></a> <code class="constant">:ALL</code>
<code class="constant">:MERGE</code> <code class="constant">:ABSOLUTE</code>)</code></p><p>If <code class="constant">:ALL</code> is specified and non-<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, a list of all resulting
pathnames, corresponding to all matches of <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_pathname-match-p.html" target="_top"><code class="function">PATHNAME-MATCH-P</code></a>
<em class="replaceable"><code>source</code></em> <em class="replaceable"><code>from-wildname</code></em>)</code>, is
returned.</p><p>If <code class="constant">:MERGE</code> is specified and <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, unspecified pieces of
<em class="replaceable"><code>to-pathname</code></em> are not replaced by
corresponding pieces of <em class="replaceable"><code>source</code></em>.</p><p>If <code class="constant">:ABSOLUTE</code> is specified and non-<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, the returned
pathnames are converted to absolute by merging in the current process'
directory, therefore rendering pathnames suitable for the OS and
external programs. So, to pass a pathname to an external program, you
do <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_namestrin_h-namestring.html" target="_top"><code class="function">NAMESTRING</code></a> (<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate-pathname.html" target="_top"><code class="function">TRANSLATE-PATHNAME</code></a> <em class="replaceable"><code>pathname</code></em>
#P"" #P"" <code class="constant">:ABSOLUTE</code> <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_t.html" target="_top"><code class="constant">T</code></a>))</code> or <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_namestrin_h-namestring.html" target="_top"><code class="function">NAMESTRING</code></a>
(<a class="link" href="filename-misc.html#absolute-pathname" title="19.5.6. Function EXT:ABSOLUTE-PATHNAME"><code class="function">EXT:ABSOLUTE-PATHNAME</code></a> <em class="replaceable"><code>pathname</code></em>))</code>.</p></div><div class="section" title="19.5.2. Function TRANSLATE-LOGICAL-PATHNAME"><div class="titlepage"><div><div><h3 class="title"><a id="translate-logpath"></a>19.5.2. Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate_cal-pathname.html" target="_top"><code class="function">TRANSLATE-LOGICAL-PATHNAME</code></a></h3></div></div></div><p><a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_translate_cal-pathname.html" target="_top"><code class="function">TRANSLATE-LOGICAL-PATHNAME</code></a> accepts an additional keyword
argument <code class="constant">:ABSOLUTE</code>, similar to <a class="xref" href="filename-misc.html#translate-pathname" title="19.5.1. Function TRANSLATE-PATHNAME">Section 19.5.1, “Function <code class="function">TRANSLATE-PATHNAME</code></a>.</p></div><div class="section" title="19.5.3. Function PARSE-NAMESTRING"><div class="titlepage"><div><div><h3 class="title"><a id="parsename"></a>19.5.3. Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_parse-namestring.html" target="_top"><code class="function">PARSE-NAMESTRING</code></a></h3></div></div></div><p><code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_parse-namestring.html" target="_top"><code class="function">PARSE-NAMESTRING</code></a> <em class="replaceable"><code>string</code></em> <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_3-4-1.html" target="_top"><code class="literal">&amp;OPTIONAL</code></a>
<em class="replaceable"><code>host</code></em> <em class="replaceable"><code>defaults</code></em> <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/sec_3-4-1.html" target="_top"><code class="literal">&amp;KEY</code></a> <em class="replaceable"><code>start</code></em> <em class="replaceable"><code>end</code></em>
<em class="replaceable"><code>junk-allowed</code></em>)</code>
returns a logical pathname only if <em class="replaceable"><code>host</code></em> is a
<a class="" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/glo_l.html#logical_host">logical host</a>
or <em class="replaceable"><code>host</code></em> is <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a> and <em class="replaceable"><code>defaults</code></em> is a <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_logical-pathname.html" target="_top"><code class="classname">LOGICAL-PATHNAME</code></a>.
To construct a logical pathname from a string, the function
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_logical-pathname.html" target="_top"><code class="function">LOGICAL-PATHNAME</code></a> can be used.</p><p>The [<span class="citation"><a class="link" href="references.html#ansi-cl" title="ANSI INCITS 226-1994 (R1999) Information Technology - Programming Language - Common Lisp [formerly ANSI X3.226-1994 (R1999)]">ANSI CL standard</a></span>] behavior of recognizing logical pathnames when
the <em class="replaceable"><code>string</code></em> begins with some alphanumeric characters followed by a
colon (<span class="keysym">#\:</span>) can be very confusing
(cf. <code class="filename">"c:/autoexec.bat"</code>,
<code class="filename">"home:.clisprc"</code> and
<code class="filename">"prep:/pub/gnu"</code>)
and therefore is disabled by default.
To enable the [<span class="citation"><a class="link" href="references.html#ansi-cl" title="ANSI INCITS 226-1994 (R1999) Information Technology - Programming Language - Common Lisp [formerly ANSI X3.226-1994 (R1999)]">ANSI CL standard</a></span>] behavior, you should set <a class="link" href="filename-misc.html#parsename" title="19.5.3. Function PARSE-NAMESTRING"><code class="varname">CUSTOM:*PARSE-NAMESTRING-ANSI*</code></a> to non-<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>.
Note that this also disables treating <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_symbol.html" target="_top"><code class="classname">SYMBOL</code></a>s as <a class="link" href="filename-misc.html#path-des" title="Pathname Designators">pathname designator</a>s.</p></div><div class="section" title="19.5.4. Function MERGE-PATHNAMES"><div class="titlepage"><div><div><h3 class="title"><a id="pathmerge"></a>19.5.4. Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a></h3></div></div></div><p><code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> <em class="replaceable"><code>pathname</code></em>
[<em class="replaceable"><code>default-pathname</code></em>])</code> returns a
logical pathname only if
<em class="replaceable"><code>default-pathname</code></em> is a <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_logical-pathname.html" target="_top"><code class="classname">LOGICAL-PATHNAME</code></a>.
To construct a logical pathname from a <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_string.html" target="_top"><code class="classname">STRING</code></a>, the function
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_logical-pathname.html" target="_top"><code class="function">LOGICAL-PATHNAME</code></a> can be used.</p><p>When both <em class="replaceable"><code>pathname</code></em> and <em class="replaceable"><code>default-pathname</code></em>
are relative pathnames, the behavior depends on <a class="link" href="filename-misc.html#pathmerge" title="19.5.4. Function MERGE-PATHNAMES"><code class="varname">CUSTOM:*MERGE-PATHNAMES-ANSI*</code></a>: when it is
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, then <a class="ulink" href="http://clisp.cons.org" target="_top"><span class="command"><strong>CLISP</strong></span></a> retains its traditional behavior:
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> #P"x/" #P"y/")</code>
evaluates to <code class="filename">#P"x/"</code></p><p title="Rationale"><b>Rationale. </b><a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> is used to specify default components for
pathnames, so there is some analogy between
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> a b)</code> and
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_or.html" target="_top"><code class="function">OR</code></a> a b)</code>. Obviously, putting in the
same default a second time should do the same as putting it in once:
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_or.html" target="_top"><code class="function">OR</code></a> a b b)</code> is the same as <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_or.html" target="_top"><code class="function">OR</code></a> a b)</code>, so
<code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> (<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> a b) b)</code>
should be the same as <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> a b)</code>.
</p><p>(This question actually does matter because in <a class="ulink" href="http://www.lisp.org" target="_top"><span class="command"><strong>Common Lisp</strong></span></a> there is no
distinction between <span class="quote"><span class="quote">pathnames with defaults merged-in</span></span> and
<span class="quote"><span class="quote">pathnames with defaults not yet applied</span></span>.)</p><p>Now, <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> (<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> #P"x/" #P"y/")
#P"y/")</code> and <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> #P"x/" #P"y/")</code> are
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_equal.html" target="_top"><code class="function">EQUAL</code></a> in <a class="ulink" href="http://clisp.cons.org" target="_top"><span class="command"><strong>CLISP</strong></span></a> (when <a class="link" href="filename-misc.html#pathmerge" title="19.5.4. Function MERGE-PATHNAMES"><code class="varname">CUSTOM:*MERGE-PATHNAMES-ANSI*</code></a> is <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>), but not in
implementations that strictly follow the [<span class="citation"><a class="link" href="references.html#ansi-cl" title="ANSI INCITS 226-1994 (R1999) Information Technology - Programming Language - Common Lisp [formerly ANSI X3.226-1994 (R1999)]">ANSI CL standard</a></span>].
In fact, the above <span class="emphasis"><em>twice-default = once-default</em></span>
rule holds for all pathnames in <a class="ulink" href="http://clisp.cons.org" target="_top"><span class="command"><strong>CLISP</strong></span></a>.</p><p>Conversely, when <a class="link" href="filename-misc.html#pathmerge" title="19.5.4. Function MERGE-PATHNAMES"><code class="varname">CUSTOM:*MERGE-PATHNAMES-ANSI*</code></a> is non-<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html" target="_top"><code class="constant">NIL</code></a>, the normal [<span class="citation"><a class="link" href="references.html#ansi-cl" title="ANSI INCITS 226-1994 (R1999) Information Technology - Programming Language - Common Lisp [formerly ANSI X3.226-1994 (R1999)]">ANSI CL standard</a></span>]
behavior is exhibited: <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html" target="_top"><code class="function">MERGE-PATHNAMES</code></a> #P"x/" #P"y/")</code>
evaluates to <code class="filename">#P"y/x/"</code>.</p><p title="Rationale"><b>Rationale. </b><span class="quote"><span class="quote">merge</span></span> is <span class="emphasis"><em>merge</em></span> and
not <span class="emphasis"><em>or</em></span>.</p></div><div class="section" title="19.5.5. Function LOAD-LOGICAL-PATHNAME-TRANSLATIONS"><div class="titlepage"><div><div><h3 class="title"><a id="load-lpt"></a>19.5.5. Function <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_load-logi_translations.html" target="_top"><code class="function">LOAD-LOGICAL-PATHNAME-TRANSLATIONS</code></a></h3></div></div></div><p>When the <em class="replaceable"><code>host</code></em> argument to <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_load-logi_translations.html" target="_top"><code class="function">LOAD-LOGICAL-PATHNAME-TRANSLATIONS</code></a>
is not a defined logical host yet, we proceed as follows:
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">If both <a class="unix" href="http://www.opengroup.org/susv3/basedefs/xbd_chap08.html">environment variable</a>s
<code class="envar">LOGICAL_HOST_<em class="replaceable"><code>host</code></em>_FROM</code> and
<code class="envar">LOGICAL_HOST_<em class="replaceable"><code>host</code></em>_TO</code> exist, then their values
define the map of the <em class="replaceable"><code>host</code></em>.</li><li class="listitem">If the <a class="unix" href="http://www.opengroup.org/susv3/basedefs/xbd_chap08.html">environment variable</a>
<code class="envar">LOGICAL_HOST_<em class="replaceable"><code>host</code></em></code> exists, its value is read from,
and the result is passed to <code class="code">(<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_setfcm_psetf.html" target="_top"><code class="function">SETF</code></a>
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/acc_logical-p_translations.html" target="_top"><code class="function">LOGICAL-PATHNAME-TRANSLATIONS</code></a>)</code>.</li><li class="listitem">Variable <a href="filename-misc.html#load-lpt" class="olink"><code class="varname">CUSTOM:*LOAD-LOGICAL-PATHNAME-TRANSLATIONS-DATABASE*</code></a> is consulted.
Its value should be a <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_list.html" target="_top"><code class="classname">LIST</code></a> of files and/or directories,
which are searched for in the <a href="loadfile.html#load-paths" class="olink"><code class="varname">CUSTOM:*LOAD-PATHS*</code></a>, just like for <a href="loadfile.html" class="olink"><code class="function">LOAD</code></a>.
When the element is a file, it is repeatedly <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_readcm_re_g-whitespace.html" target="_top"><code class="function">READ</code></a> from,
<a class="ulink" href="http://www.franz.com/support/documentation/6.0/doc/pathnames.htm#load-logical-pathname-translations-2" target="_top">Allegro CL-style</a>,
odd objects being host names and even object being their
<a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/acc_logical-p_translations.html" target="_top"><code class="function">LOGICAL-PATHNAME-TRANSLATIONS</code></a>.
When the element is a directory, a file, named <code class="filename"><em class="replaceable"><code>host</code></em></code>
or <code class="filename"><em class="replaceable"><code>host</code></em>.host</code>, in that directory, is <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_readcm_re_g-whitespace.html" target="_top"><code class="function">READ</code></a>
from once, <a class="ulink" href="http://common-lisp.net/project/cmucl/doc/cmu-user/extensions.html#logical-pathnames" target="_top">CMUCL-style</a>,
the object read being the <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/acc_logical-p_translations.html" target="_top"><code class="function">LOGICAL-PATHNAME-TRANSLATIONS</code></a> of the
<em class="replaceable"><code>host</code></em>.</li></ol></div></div><div class="section" title="19.5.6. Function EXT:ABSOLUTE-PATHNAME"><div class="titlepage"><div><div><h3 class="title"><a id="absolute-pathname"></a>19.5.6. Function <a class="link" href="filename-misc.html#absolute-pathname" title="19.5.6. Function EXT:ABSOLUTE-PATHNAME"><code class="function">EXT:ABSOLUTE-PATHNAME</code></a></h3></div></div></div><p><code class="code">(<a class="link" href="filename-misc.html#absolute-pathname" title="19.5.6. Function EXT:ABSOLUTE-PATHNAME"><code class="function">EXT:ABSOLUTE-PATHNAME</code></a> <em class="replaceable"><code>pathname</code></em>)</code> converts the <em class="replaceable"><code>pathname</code></em>
to a physical pathname, then - if its directory component is not
absolute - converts it to an absolute pathname, by merging in the
current process' directory. This is like <a class="ulink" href="http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_truename.html" target="_top"><code class="function">TRUENAME</code></a>, except that it
does not verify that a file named by the <em class="replaceable"><code>pathname</code></em> exists, not even that
its directory exists. It does no filesystem accesses, except to
determine the current directory. This function is useful when you want
to save a pathname over time, or pass a pathname to an external
program.</p></div></div><div class="bookinfo"><hr /><table width="100%" summary="impnotes meta info"><th><td align="left">These notes document <a class="ulink" href="http://clisp.cons.org" target="_top"><span class="command"><strong>CLISP</strong></span></a> version 2.48</td><td align="right">Last modified: 2009-07-28</td></th></table></div><div class="custom-footer"><hr /><table width="100%"><tr><td align="left"><a href="http://clisp.cons.org"><img src="clisp.png" width="48" height="48" alt="[CLISP home]" /></a></td><td align="center"><a href="https://sourceforge.net/donate/index.php?group_id=1355"><img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" alt="[Support CLISP]" /></a></td><td align="right"><a href="https://sourceforge.net/projects/clisp"><img width="120" height="30" alt="[SourceForge]" src="http://sflogo.sourceforge.net/sflogo.php?group_id=1355&amp;type=12&amp;page=filename-misc" /></a></td></tr></table></div><hr /><form method="get" action="http://www.google.com/custom" target="_top"><table width="100%" border="0"><tr><td nowrap="nowrap" align="center"><input type="hidden" name="domains" value="clisp.cons.org;clisp.podval.org;www.lisp.org" /><label for="sbi" style="display: none">Enter your search terms</label><input type="text" name="q" size="50" maxlength="255" id="sbi" value="19.5. Miscellaneous" /><label for="sbb" style="display: none">Submit search form</label><input type="submit" name="sa" value="Google Search" id="sbb" /></td></tr><tr><td nowrap="nowrap" align="center"><input type="radio" name="sitesearch" value="" checked="1" id="ss0" /><label for="ss0" title="Search the Web"><small>Web</small></label><input type="radio" name="sitesearch" value="clisp.cons.org" id="ss1" /><label for="ss1" title="Search clisp.cons.org"><small>clisp.cons.org</small></label><input type="radio" name="sitesearch" value="clisp.podval.org" id="ss2" /><label for="ss2" title="Search clisp.podval.org"><small>clisp.podval.org</small></label><input type="radio" name="sitesearch" value="www.lisp.org" id="ss3" /><label for="ss3" title="Search www.lisp.org"><small>www.lisp.org</small></label><input type="hidden" name="client" value="pub-4445255502750357" /><input type="hidden" name="forid" value="1" /><input type="hidden" name="ie" value="UTF-8" /><input type="hidden" name="oe" value="UTF-8" /><input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:000000;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:48;LW:48;L:http://clisp.cons.org/clisp.png;S:http://clisp.cons.org;FORID:1" /><input type="hidden" name="hl" value="en" /></td></tr></table></form><hr /><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="log-path.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="filenames.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="files.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">19.4. Logical Pathnames  </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 20. Files </td></tr></table></div></body></html>