%% %% Copyright (C) 2011 by Martin Scharrer %% ---------------------------------------------------------- %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Martin Scharrer. %% %% This work consists of the files filemod.dtx and filemod.ins %% and the derived files filemod.sty, filemod-expmin.sty, %% filemod.tex and filemod-expmin.tex. %% \ProvidesPackage{filemod}[% 2011/09/19 v1.2 Get and compare file modification times] \RequirePackage{filemod-expmin} \newcommand*\filemodparse{} \iffilemod@direct \def\filemodparse#1#2{% \expandafter\filemod@parse\pdffilemoddate{#2}\relax{#1}% } \else \def\filemodparse#1#2{% \expandafter\expandafter \expandafter\filemod@parse\pdf@filemoddate{#2}\relax{#1}% } \fi \def\filemod@parse#1\relax#2{% \ifx\relax#1\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {\filemodnotexists{#2}}% {\filemod@parse@#1\empty{#2}\relax}% } \begingroup \catcode`\D=12 \catcode`\Z=12 \catcode`\:=12 \gdef\filemod@parse@ D:#1#2#3#4#5#6#7#8#9\relax{% \filemod@parse@@{{#1#2#3#4}{#5#6}{#7#8}}#9\relax } \newcommand*\filemodnotexists{} \gdef\filemodnotexists#1{% #1{0000}{00}{00}{00}{00}{00}{Z}% } \endgroup \def\filemod@parse@@#1#2#3#4#5#6#7#8\empty#9\relax{% #9#1{#2#3}{#4#5}{#6#7}{#8}% } \newcommand*% \filemodnumdate{\filemodparse\filemod@numdate} \def\filemod@numdate#1#2#3#4#5#6#7{#1#2#3} \newcommand*% \filemodnumtime{\filemodparse\filemod@numtime} \def\filemod@numtime#1#2#3#4#5#6#7{#4#5#6} \def\filemod@opt#1#2#3{% \expandafter \remove@to@nnil@exec \ifx[#3\@nnil\remove@to@nnil \expandafter#1% \else\@nnil\empty \expandafter#2% \expandafter\filemodoptdefault \fi {#3}% } \def\remove@to@nnil@exec#1\@nnil#2{% \ifx\@nnil#1\@nnil\else \expandafter#2 \fi } \newcommand*% \filemodcmp{% \filemod@opt\filemod@cmp@opt\filemod@cmp } \newcommand*% \filemodoptdefault{1} \def\filemod@cmp@opt#1#2]{% \filemod@cmp{#2}% } \def\filemod@cmp{\filemod@@cmp>} \def\filemod@@cmp#1#2#3#4{% \ifcase0% \ifnum\filemodnumdate{#4}#1\filemodnumdate{#3} 1\else \ifnum\filemodnumdate{#4}=\filemodnumdate{#3} % \ifnum\filemodnumtime{#4}#1\filemodnumtime{#3} 1\else \ifnum\filemodnumtime{#4}=\filemodnumtime{#3} 2\fi \fi \fi \fi \space \csname @firstoft\ifnum#2>2 hree\else wo\fi\expandafter\endcsname \or \csname @secondoft\ifnum#2>2 hree\else wo\fi\expandafter\endcsname \else \csname @% \ifcase#2% gobbletwo% \or firstoftwo% \or secondoftwo% \else thirdofthree% \fi \expandafter \endcsname \fi } \long\def\@firstofthree#1#2#3{#1} \long\def\@secondofthree#1#2#3{#2} \newcommand*% \filemodnewest{% \filemod@opt\filemod@newest@opt\filemod@newest } \def\filemod@newest@opt#1#2]{% \filemod@newest{#2}% } \def\filemod@newest#1#2#3{% \filemod@@cmp>{#1}{#2}{#3}{#2}{#3}% } \newcommand*% \filemodoldest{% \filemod@opt\filemod@oldest@opt\filemod@oldest } \def\filemod@oldest@opt#1#2]{% \filemod@oldest{#2}% } \def\filemod@oldest#1#2#3{% \filemod@@cmp<{#1}{#2}{#3}{#2}{#3}% } \newcommand*\filemodNewest{} \def\filemodNewest#1#{% \expandafter\expandafter \expandafter\@filemodNewest \csname @% \ifx\@nnil#1\@nnil first% \else second% \fi oftwo% \endcsname {[\filemodoptdefault]}% {#1}% } \newcommand*\filemodOldest{} \def\filemodOldest#1#{% \expandafter\expandafter \expandafter\@filemodOldest \csname @% \ifx\@nnil#1\@nnil first% \else second% \fi oftwo% \endcsname {[\filemodoptdefault]}% {#1}% } \def\@filemodNewest[#1]#2{% \@@filemodNewest{#1}#2\filemod@end } \def\@filemodOldest[#1]#2{% \@@filemodOldest{#1}#2\filemod@end } \def\@@filemodNewest#1#2{% \filemod@Newest{#2}{#1}% } \def\@@filemodOldest#1#2{% \filemod@Oldest{#2}{#1}% } \def\filemod@Newest#1#2#3{% \iffilemod@end{#3}% {#1}% {% \expandafter\expandafter \expandafter\expandafter \expandafter\expandafter \expandafter\filemod@Newest \expandafter\expandafter \expandafter\expandafter \expandafter\expandafter \expandafter{% \expandafter\expandafter \expandafter\@gobble \expandafter\string\csname\filemod@@cmp>{#2}{#1}{#3}{#1}{#3}\endcsname}{#2}}% } \def\filemod@Oldest#1#2#3{% \iffilemod@end{#3}% {#1}% {% \expandafter\expandafter \expandafter\expandafter \expandafter\expandafter \expandafter\filemod@Oldest \expandafter\expandafter \expandafter\expandafter \expandafter\expandafter \expandafter{% \expandafter\expandafter \expandafter\@gobble \expandafter\string\csname\filemod@@cmp<{#2}{#1}{#3}{#1}{#3}\endcsname}{#2}}% } \def\iffilemod@end#1{% \ifx\filemod@end#1% \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \def\filemod@end{\@gobble{filemod@end}} \newcommand*% \Filemodgetnum{\filemodparse\Filemod@getnum} \def\Filemod@getnum#1#2#3#4#5#6#7{% \def\filemoddate{#1#2#3}% \def\filemodtime{#4#5#6}% \def\filemodtz{#7}% } \newcommand\Filemodcmp[1][1]{% \def\filemod@next{\filemodcmpresult}% \Filemod@cmp{#1}% } \newcommand\FilemodCmp[1][1]{% \let\filemod@next\empty \Filemod@cmp{#1}% } \def\Filemod@cmp#1#2#3{% \Filemodgetnum{#2}% \let\filemoddatea\filemoddate \let\filemodtimea\filemodtime \Filemodgetnum{#3}% \ifcase0% \ifnum\filemoddate>\filemoddatea\space1\else \ifnum\filemoddate=\filemoddatea\space \ifnum\filemodtime>\filemodtimea\space1\else \ifnum\filemodtime=\filemodtimea\space2\fi \fi \fi \fi \relax \def\filemodresultfile{#1}% \ifnum#1>2\relax \def\filemodcmpresult##1##2##3{##1}% \else \let\filemodcmpresult\@firstoftwo \fi \or \def\filemodresultfile{#2}% \ifnum#1>2\relax \def\filemodcmpresult##1##2##3{##2}% \else \let\filemodcmpresult\@secondoftwo \fi \else \ifcase#1\relax \let\filemodresultfile\empty \let\filemodcmpresult\@gobbletwo \or \def\filemodresultfile{#1}% \let\filemodcmpresult\@firstoftwo \or \def\filemodresultfile{#2}% \let\filemodcmpresult\@secondoftwo \else \let\filemodresultfile\empty \let\filemodcmpresult\@thirdofthree \fi \fi \filemod@next } \newcommand*\Filemodnewest[3][\filemodoptdefault]{\FilemodNewest[{#1}]{{#2}{#3}}} \newcommand*\Filemodoldest[3][\filemodoptdefault]{\FilemodOldest[{#1}]{{#2}{#3}}} \newcommand*\FilemodNewest[2][\filemodoptdefault]% {% \def\filemode@tie{#1}% \def\filemod@gl{>}% \Filemod@est#2\filemod@end } \newcommand*\FilemodOldest[2][\filemodoptdefault]% {% \def\filemode@tie{#1}% \def\filemod@gl{<}% \Filemod@est#2\filemod@end } \def\Filemod@est#1{% \def\filemodresultfile{#1}% \Filemodgetnum{#1}% \let\filemodresultdate\filemoddate \let\filemodresulttime\filemodtime \Filemod@@est } \def\Filemod@@est#1{% \iffilemod@end{#1}{}{% \Filemodgetnum{#1}% \ifcase0% \ifnum\filemoddate\filemod@gl\filemodresultdate\space1\else \ifnum\filemoddate=\filemodresultdate\space \ifnum\filemodtime\filemod@gl\filemodresulttime\space1\else \ifnum\filemodtime=\filemodresulttime\space \ifnum\filemode@tie=1\else 1\fi \fi \fi \fi \fi \else \def\filemodresultfile{#1}% \let\filemodresultdate\filemoddate \let\filemodresulttime\filemodtime \fi \Filemod@@est }% } \def\filemod@gl{>} \newcommand*\Filemodtoday[1]% {{% \def\thefilemod##1##2##3##4##5##6##7{\year##1 \month##2 \day##3 \today}% \filemodprint{#1}% }} \newcommand*\FilemodToday[1]% {{% \def\thefilemoddate##1##2##3{\year##1 \month##2 \day##3 \today}% \filemodprint{#1}% }} \newcommand* \filemodprint{\filemodparse\thefilemod} \newcommand* \filemodprintdate{\filemodparse\the@filemoddate} \newcommand* \filemodprinttime{\filemodparse\the@filemodtime} \newcommand*\thefilemod[7]% {% \thefilemoddate{#1}{#2}{#3}% \filemodsep \thefilemodtime{#4}{#5}{#6}{#7}% } \newcommand*\filemodsep{ } \newcommand*\thefilemoddate[3]% {#1/#2/#3} \newcommand*\thefilemodtime[4]% {% #1:#2:#3~#4% } \def\the@filemoddate#1#2#3#4#5#6#7{% \thefilemoddate{#1}{#2}{#3}% } \def\the@filemodtime#1#2#3{% \thefilemodtime } \newcommand*\filemodZ{} \newcommand*\filemodz{} \begingroup \catcode`\D=12 \expandafter\gdef\csname filemodZ\endcsname{Z}% \let\filemodz=Z\relax \endgroup \endinput %% %% End of file `filemod.sty'.