blob: ff4a2ab01caf52363d37654da4eff97a3e38b3e1 (
plain)
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
93
94
95
96
97
98
99
|
%D \module
%D [ file=supp-fil,
%D version=1995.10.10,
%D title=\CONTEXT\ Support Macros,
%D subtitle=Files,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details
\unprotect
\def\openinputfile #1#2{\immediate\openin #1="#2"\relax} \def\closeinputfile #1{\immediate\closein #1}
\def\openoutputfile#1#2{\immediate\openout#1="#2"\relax} \def\closeoutputfile#1{\immediate\closeout#1}
%D For the moment, we limit sanitizing to taking care of
%D active \type {/}.
\bgroup % todo: _ cleanup
\catcode`\/=\@@active
\catcode`\:=\@@active
\catcode`\~=\@@active
\catcode`\_=\@@active
\gdef\sanitizefilename#1\to#2%
{\bgroup
\edef/{\string/}%
\edef:{\string:}%
\edef~{\string~}%
\edef_{\string_}%
\retainlccodes
\lccode`\\=`\/
\lowercase{\expanded{\xdef\noexpand\sanitizedfilename{#1}}}%
\egroup
\let#2\sanitizedfilename}
\egroup
\def\checkfilename#1%
{\doifinstringelse{@@/}{@@#1}% unix: /full/path
{\chardef\kindoffile\plusone}
{\doifinstringelse{:/}{#1}% windows: e:/full/path or http://
{\chardef\kindoffile\plusone}
{\chardef\kindoffile\zerocount}}}
% \def\splitfilename#1%
% {\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
% \greedysplitstring\splitofffull\at/\to\splitoffpath\and\splitoffbase
% \ifx\splitoffbase\empty
% \let\splitoffpath\empty
% \let\splitoffbase\splitofffull
% \fi
% \greedysplitstring\splitoffbase\at.\to\splitoffname\and\splitofftype
% \chardef\splitoffkind % can be used to test if pathpart was empty
% \ifx\splitoffpath\empty \zerocount \else
% \ifx\splitoffpath\splitoffroot \plusone \else
% \plustwo \fi\fi
% \ifx\splitoffname\empty\let\splitoffname\splitoffbase\fi
% \ifx\splitoffpath\empty\let\splitoffpath\splitoffroot\fi}
%
% better, since it also handles leading /'s
%
% \splitfilename{oeps/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
% \splitfilename{/oeps/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
% \splitfilename{/test.pdf} [\splitoffpath\quad\splitoffname\quad\splitofftype]
\def\splitfilename#1%
{\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
\greedysplitstring\splitofffull\at/\to\splitoffpath\and\splitoffbase
\ifx\splitoffpath\splitofffull
\let\splitoffpath\empty
\fi
\ifx\splitoffbase\empty
\let\splitoffpath\empty
\let\splitoffbase\splitofffull
\fi
\greedysplitstring\splitoffbase\at.\to\splitoffname\and\splitofftype
\chardef\splitoffkind % can be used to test if pathpart was empty
\ifx\splitoffpath\empty \zerocount \else
\ifx\splitoffpath\splitoffroot \plusone \else
\plustwo \fi\fi
\ifx\splitoffname\empty\let\splitoffname\splitoffbase\fi
\ifx\splitoffpath\empty\let\splitoffpath\splitoffroot\fi}
\def\splitfiletype#1%
{\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename
\let\splitoffpath\empty
\greedysplitstring\splitofffull\at.\to\splitoffname\and\splitofftype}
\def\doifparentfileelse#1%
{\doifsamestringelse{#1}{\jobname }\firstoftwoarguments
{\doifsamestringelse{#1}{\jobname.\c!tex}\firstoftwoarguments
{\doifsamestringelse{#1}{\outputfilename}\firstoftwoarguments\secondoftwoarguments}}}
\protect \endinput
|