% \iffalse
%% File: l3vers.dtx Copyright (C) 1990-2009 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
%% license or (at your option) any later version.  The latest version
%% of this license is in the file
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
%% The released version of this bundle is available from CTAN.
%%
%% -----------------------------------------------------------------------
%%
%% The development version of the bundle can be found at
%%
%%    http://www.latex-project.org/svnroot/experimental/trunk/
%%
%% for those people who are interested.
%%
%%%%%%%%%%%
%% NOTE: %%
%%%%%%%%%%%
%%
%%   Snapshots taken from the repository represent work in progress and may
%%   not work or may contain conflicting material!  We therefore ask
%%   people _not_ to put them into distributions, archives, etc. without
%%   prior consultation with the LaTeX Project Team.
%%
%% -----------------------------------------------------------------------
%<*driver|package>
\RequirePackage{l3names}
%</driver|package>
%\fi
\GetIdInfo$Id: l3vers.dtx 1378 2009-06-01 19:15:56Z joseph $
       {L3 Experimental LaTeX format version}
%\iffalse
%<*driver>
%\fi
\ProvidesFile{\filename.\filenameext}
  [\filedate\space v\fileversion\space\filedescription]
%\iffalse
\documentclass[full]{l3doc}
\begin{document}
\DocInput{\filename.\filenameext}
\end{document}
%</driver>
% \fi
%
% \begin{documentation}
%
% \section{Version Identification}
% Here we identify the date and version number of this release of
% \LaTeX3, and set |\tex_everyjob:D| so that it is printed at the start of
% every \LaTeX3 run.
%
% \begin{variable}{\c_format_name|\c_format_date}
% Name and date.
% \end{variable}
%
% \begin{variable}{\c_fmt_too_old}
% Age in months past "\c_format_date" after which an error is called 
% during format generation.
% \end{variable}
%
% \begin{function}{\chk_format_age:w}
% Function that calculates the age of the format and calls an error if it
% is too old.
% \end{function}
%
% \end{documentation}
%
% \begin{implementation}
%
% \begin{macro}{\c_format_name}
% \begin{macro}{\c_format_date}
%    \begin{macrocode}
%<*initex>
\cs_set_nopar:Npn\c_format_name{Experimental~ LaTeX3}
\cs_set_nopar:Npn\c_format_date{2009/06/01}
%^^A\cs_set_nopar:Npx\c_format_version{--release--date--goes--here--}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\c_fmt_too_old}
% \begin{macro}{\chk_format_age:w}
% Check that the format being made is not too old. While in development
% it should be a rather small number.
%    \begin{macrocode}
\int_const:Nn \c_fmt_too_old{12}
\cs_set_nopar:Npn\chk_format_age:w #1/#2/#3\q_stop{
%    \end{macrocode}
%  We just calculate the age of this file in months and give a warning
%  if deemed too old.
%    \begin{macrocode}
  \intexpr_compare:nNnT{(\tex_year:D-#1)*12+\tex_month:D-#2}>\c_fmt_too_old
  {\iow_term:x{^^J
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J
  !~~You~are~attempting~to~make~an~experimental~LaTeX3~format~from^^J
  !~~source~files~that~are~more~than~
     \intexpr_eval:n{\c_fmt_too_old}~months~old.^^J
  !^^J
  !~~If~you~enter~<return>~to~scroll~past~this~message~then~the~format^^J
  !~~will~be~built,~but~please~consider~obtaining~newer~source~files^^J
  !~~before~continuing~to~build~an~experimental~LaTeX3~format.^^J
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J
  }
  \tex_errhelp:D{
    To~avoid~this~error~message,~obtain~new~Experimental~LaTeX3~sources.}
  \tex_errmessage:D{
    Experimental~LaTeX3~source~files~are~more~than~
    \intexpr_eval:n{\c_fmt_too_old}~months~old!}
  }
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% Then we execute it.
%    \begin{macrocode}
\exp_after:wN\chk_format_age:w\c_format_date\q_stop
%    \end{macrocode}
% And since it's no longer needed we remove it again.
%    \begin{macrocode}
\cs_gundefine:N \chk_format_age:w
%    \end{macrocode}
%
% This startup banner may be further modified by the code in
% |ltfinal.dtx| if a patch file is present.
%    \begin{macrocode}
\tex_everyjob:D{\iow_term:x{\c_format_name,~<\c_format_date>}}
\iow_term:x{\c_format_name,~<\c_format_date>}
%</initex>
%    \end{macrocode}
%
% \end{implementation}
% \PrintIndex
%
% \endinput
