%%
%% This is file `rcs-multi.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% rcs-multi.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (C) 2009 by Martin Scharrer <martin@scharrer-online.de>
%% 
%% 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 file rcs-multi.dtx and the derived file rcs-multi.sty.
%% 
\def\filedate$#1: #2 #3 #4-#5-#6 #7 ${%
 \year#4\month#5\day#6\relax
 \def\filedate{#4/#5/#6}%
 \def\filerev{#3}%
}
\filedate$Id: rcs-multi.dtx 638 2009-03-23 19:21:36Z martin $
\def\fileversion{v0.1}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{rcs-multi}
 [\filedate\space\fileversion\space RCS Keywords for multi-file LaTeX documents]

\def\rcs@ifempty#1{%
  \begingroup
  \edef\rcs@temp{#1}%
  \ifx\rcs@temp\empty
    \endgroup
    \expandafter
    \@firstoftwo
  \else
    \endgroup
    \expandafter
    \@secondoftwo
  \fi
}

\def\rcs@ifequal#1#2{%
  \begingroup
  \edef\rcs@stringa{#1}%
  \edef\rcs@stringb{#2}%
  \ifx\rcs@stringa\rcs@stringb
    \endgroup
    \expandafter
    \@firstoftwo
  \else
    \endgroup
    \expandafter
    \@secondoftwo
  \fi
}

\def\rcs@ifvalidrev#1{%
  \begingroup
  \@ifundefined{#1}%
    {\def\rcs@temp{-1}}%
    {\expandafter\edef
     \expandafter\rcs@temp\expandafter{\csname #1\endcsname}}%
  \ifnum\rcs@temp>-1\relax
    \endgroup
    \expandafter
    \@firstoftwo
  \else
    \endgroup
    \expandafter
    \@secondoftwo
  \fi
}

\def\rcsrev{0.0}            \def\@rcs@rev{0.0}
\def\rcsdate{}              \def\@rcs@date{}
\def\rcsauthor{}            \def\@rcs@author{}
\def\rcsyear{0000}          \def\@rcs@year{0000}
\def\rcsmonth{00}           \def\@rcs@month{00}
\def\rcsday{00}             \def\@rcs@day{00}
\def\rcshour{00}            \def\@rcs@hour{00}
\def\rcsminute{00}          \def\@rcs@minute{00}
\def\rcssecond{00}          \def\@rcs@second{00}
\def\rcsname{}              \def\@rcs@name{}
\def\rcsurl{}               \def\@rcs@url{}
\def\rcsmainfilename{}
\def\rcsmainurl{\rcsmainfilename}
\def\rcs@temp{}
\def\rcs@lastkw{}

\def\rcsfilerev{0.0}
\def\rcsfiledate{}
\def\rcsfileauthor{}
\def\rcsfileyear{0000}
\def\rcsfilemonth{00}
\def\rcsfileday{00}
\def\rcsfilehour{00}
\def\rcsfileminute{00}
\def\rcsfilesecond{00}
\def\rcsfileurl{}
\def\rcsfilename{}

\def\rcstime{\rcshour:\rcsminute:\rcssecond}
\def\rcsfiletime{\rcsfilehour:\rcsfileminute:\rcsfilesecond}

\newcommand*{\rcstoday}{%
  \begingroup
    \year\rcsyear \month\rcsmonth \day\rcsday
    \relax \today
  \endgroup
}
\newcommand*{\rcsfiletoday}{%
  \begingroup
    \year\rcsfileyear \month\rcsfilemonth \day\rcsfileday
    \relax \today
  \endgroup
}

\newcommand*{\rcsid}{%
  \@rcsidswtrue
  \rcskwsave
}
\newif\if@rcsidsw
\@rcsidswfalse

\def\rcs@scanId#1,v #2 #3 #4 #5 #6\relax{%
  \@rcs@scandate{#3 #4}%
  \@rcs@updateid{#2}{#3 #4}{#5}{#1}%
  \rcskwdef{Filename}{#1}%
  \rcskwdef{Date}{#3 #4}%
  \rcskwdef{Revision}{#2}%
  \rcskwdef{Author}{#5}%
}

\def\@rcs@updateid#1#2#3#4{%
  \xdef\rcsfilerev{#1}%
  \xdef\rcsfiledate{#2}%
  \xdef\rcsfileauthor{#3}%
  \xdef\rcsfileurl{#4}%
  \rcs@getfilename\rcsfileurl
  \ifx\rcsfiledate\empty\else
    \begingroup
      \edef\@tempa{\@rcs@year\@rcs@month\@rcs@day}
      \edef\@tempb{\rcsfileyear\rcsfilemonth\rcsfileday}
      \ifnum\@tempa<\@tempb
        \rcs@update
      \else\ifnum\@tempa=\@tempb
        \edef\@tempa{\@rcs@hour\@rcs@minute\@rcs@second}
        \edef\@tempb{\rcsfilehour\rcsfileminute\rcsfilesecond}
        \ifnum\@tempa<\@tempb
          \rcs@update
        \fi
      \fi\fi
    \endgroup
  \fi
}

\def\rcs@update{%
  \xdef\@rcs@rev{\rcsfilerev}%
  \xdef\@rcs@date{\rcsfiledate}%
  \xdef\@rcs@author{\rcsfileauthor}%
  \xdef\@rcs@year{\rcsfileyear}%
  \xdef\@rcs@month{\rcsfilemonth}%
  \xdef\@rcs@day{\rcsfileday}%
  \xdef\@rcs@hour{\rcsfilehour}%
  \xdef\@rcs@minute{\rcsfileminute}%
  \xdef\@rcs@second{\rcsfilesecond}%
  \xdef\@rcs@name{\rcsfilename}%
  \xdef\@rcs@url{\rcsfileurl}%
}

\def\rcs@catcodes{%
  \let\do\@makeother
  \dospecials
  \catcode`\^^M9
  \catcode`\ 10
  \catcode`\{1
  \catcode`\}2
}

\def\rcs@gdefverb#1{%
  \begingroup
    \def\rcs@temp{#1}%
    \begingroup
      \rcs@catcodes
      \rcs@gdefverb@
}

\def\rcs@gdefverb@#1{%
    \endgroup
    \expandafter\gdef\rcs@temp{#1}%
  \endgroup
}

\def\rcskwsave{%
  \begingroup
    \rcs@catcodes
    \rcskwsave@readargs
}

\gdef\rcskwsave@readargs#1{%
    \rcskwsave@read#1\relax
  \endgroup
  \if@rcsidsw
    \rcs@ifequal{\rcs@lastkw}{Id}%
      {\ifx\rcskwId\empty\else
        \expandafter
        \rcs@scanId\rcskwId\relax
        \@rcsidswfalse
      \fi}{%
    \rcs@ifequal{\rcs@lastkw}{Header}%
      {\ifx\rcskwHeader\empty\else
        \expandafter
        \rcs@scanId\rcskwHeader\relax
        \@rcsidswfalse
        \fi}{}%
      }%
  \fi
  \ignorespaces
}

\begingroup
\catcode`\$=12
\gdef\rcskwsave@read $#1$\relax{%
  \rcs@checkcolon#1:\relax
}
\endgroup

\begingroup
\catcode`\$=11
\gdef\rcskwsave@parse$#1:#2${%
  \expandafter\xdef\csname rcskw#1\endcsname{#2}%
}%
\endgroup

\newcommand{\rcskwdef}[2]{%
  \gdef\rcs@lastkw{#1}%
  \expandafter\xdef\csname rcskw#1\endcsname{#2}%
}

\rcskwdef{Rev}{0.0}
\rcskwdef{Date}{}
\rcskwdef{Author}{}
\rcskwdef{Filename}{}
\rcskwdef{HeadURL}{}

\newcommand{\rcskw}[1]{%
  \@ifundefined{rcskw#1}%
    {\PackageWarning{rcs-multi}{RCS keyword '#1' not defined (typo?)}}%
    {\csname rcskw#1\endcsname}%
}%

\def\rcs@checkcolon#1:#2\relax{%
  \rcs@ifempty{#2}%
    {\rcskwdef{#1}{}}%
    {\rcs@stripcolon#2\relax\rcskwdef{#1}{\rcs@value}}%
}

\def\rcs@stripcolon#1:\relax{%
  \rcs@ifempty{#1}%
    {\gdef\rcs@value{}}%
    {\rcs@ifequal{#1}{ }%
      {\gdef\rcs@value{}}%
      {\rcs@stripspace#1\relax\relax}%
    }%
}

\def\rcs@stripspace#1#2\relax{%
  \rcs@ifequal{#1}{ }%
    {\gdef\rcs@value{#2}}%
    {\rcs@striptrailingspace#1#2\relax}%
}

\def\rcs@striptrailingspace#1 \relax{%
  \gdef\rcs@value{#1}%
}

\def\@rcs@scandate#1{\@rcs@scandate@#1\empty\relax}

\def\@rcs@scandate@#1/#2/#3 #4:#5:#6#7#8\relax{%
  \gdef\rcsfileyear{#1}%
  \gdef\rcsfilemonth{#2}%
  \gdef\rcsfileday{#3}%
  \gdef\rcsfilehour{#4}%
  \gdef\rcsfileminute{#5}%
  \gdef\rcsfilesecond{#6#7}%
}

\def\rcspdfdate{%
  \rcsyear\rcsmonth\rcsday
  \rcshour\rcsminute\rcssecond00'00'%
}

\newcommand{\rcssetmainfile}{%
  \xdef\rcsmainfilename{\rcsfilename}%
  \xdef\rcsmainfileurl{\rcsfileurl}%
}
\AtBeginDocument{\rcssetmainfile}

\newcommand{\rcsRegisterAuthor}[2]{%
  \expandafter\def\csname rcs@author@#1\endcsname{#2}%
}

\newcommand{\rcsFullAuthor}{%
  \@ifnextchar{*}%
    {\rcsFullAuthor@star}%
    {\rcsFullAuthor@normal}%
}%
\def\rcsFullAuthor@star*#1{%
  \edef\rcs@temp{#1}%
  \rcsFullAuthor@{\rcs@temp}{~(\rcs@temp)}%
}%
\def\rcsFullAuthor@normal#1{%
  \edef\rcs@temp{#1}%
  \rcsFullAuthor@{\rcs@temp}{}%
}%
\def\rcsFullAuthor@#1#2{%
  \@ifundefined{rcs@author@#1}%
    {#1}%
    {\csname rcs@author@#1\endcsname #2}%
}

\newcommand{\rcsRegisterRevision}[2]{%
  \expandafter\def\csname rcs@revision@#1\endcsname{#2}%
}

\newcommand{\rcsFullRevision}{%
  \@ifnextchar{*}%
    {\rcsFullRevision@star}%
    {\rcsFullRevision@normal}%
}
\def\rcsFullRevision@star*#1{%
  \edef\rcs@temp{#1}%
  \rcsFullRevision@{\rcs@temp}{~(r\rcs@temp)}%
}
\def\rcsFullRevision@normal#1{%
  \edef\rcs@temp{#1}%
  \rcsFullRevision@{\rcs@temp}{}%
}
\def\rcsFullRevision@#1#2{%
  \@ifundefined{rcs@revision@#1}%
    {Revision #1}%
    {\csname rcs@revision@#1\endcsname #2}%
}

\providecommand{\rcs}[1]{\@revs#1}
\def\@rcs$#1 ${#1}

%% Adapted from the \url macro of the `hyperref` package.
\DeclareRobustCommand*{\rcsnolinkurl}{%
  \@ifundefined{hyper@normalise}%
    {\PackageWarning{rcs-multi}{Package hyperref is needed for \noexpand
     \rcsnolinkurl.}}%
    {\hyper@normalise\rcsnolinkurl@}%
}%
\def\rcsnolinkurl@#1{\Hurl{#1}}%

\def\rcs@getfilename#1{%
  \begingroup
    \edef\rcs@temp{#1}%
    \expandafter\@rcs@getfilename\rcs@temp/{}\relax
}%

\def\@rcs@getfilename#1/#2\relax{%
    \rcs@ifempty{#2}%
      {\endgroup\gdef\rcsfilename{#1}}%
      {\@rcs@getfilename#2\relax}%
}%


\def\rcs@writeaux{%
    \immediate\write\@mainaux{^^J%
      \noexpand\gdef\noexpand\rcsrev{\@rcs@rev}^^J%
      \noexpand\gdef\noexpand\rcsdate{\@rcs@date}^^J%
      \noexpand\gdef\noexpand\rcsauthor{\@rcs@author}^^J%
      \noexpand\gdef\noexpand\rcsyear{\@rcs@year}^^J%
      \noexpand\gdef\noexpand\rcsmonth{\@rcs@month}^^J%
      \noexpand\gdef\noexpand\rcsday{\@rcs@day}^^J%
      \noexpand\gdef\noexpand\rcshour{\@rcs@hour}^^J%
      \noexpand\gdef\noexpand\rcsminute{\@rcs@minute}^^J%
      \noexpand\gdef\noexpand\rcssecond{\@rcs@second}^^J%
      \noexpand\rcs@gdefverb\noexpand\rcsname{\@rcs@name}^^J%
      \noexpand\rcs@gdefverb\noexpand\rcsurl{\@rcs@url}^^J%
    }%
}

\AtEndDocument{%
  \if@filesw
    \ifx\@rcs@date\empty\else
      \rcs@writeaux
    \fi
  \fi
}
\endinput
%%
%% End of file `rcs-multi.sty'.
