%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
% This is file getfiledate.sty, version 1.2.                               %
%                                                                          %
% This package fetches and formats the date of last modification of any    %
% existing file. It is based on an idea by Heiko Oberdiek (2009).          %
%                                                                          %
% 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 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.       %
%                                                                          %
% Copyright (c) 2009 Ahmed Musa (a.musa@rocketmail.com).                   %
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%

\ProvidesPackage{getfiledate}
  [2009/11/23 v1.2 Get date of last modification of existing file]
\NeedsTeXFormat{LaTeX2e}[1996/12/01]
\RequirePackage{etextools}[2009/09/30]
\RequirePackage{ltxnew}
\RequirePackage{xkeyval}
\@ifpackageloaded{xcolor}{}{\RequirePackage[table]{xcolor}}
\RequirePackage{amssymb}
\RequirePackage{boxedminipage}
\new\long\def\gfd@err#1#2{\PackageError{getfiledate}{#1}{#2}}
\new\long\def\gfd@warn#1{\PackageWarningNoLine{getfiledate}{#1}}
\new\let\gfd@alignright\relax
\new\let\gfd@alignleft\relax
\new\dimen\gfd@width@tmp\gfd@width@tmp=\z@\relax
\providecommand*\space{ }
\define@boolkeys[gfd]{getfiledate}[gfd@]{boxed,putprefix,notime}[true]
\define@cmdkey[gfd]{getfiledate}[gfd@]{prefix}[%
  The date of last modification of file]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{postfix}[was]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{file}[nofile.tex]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{width}[\hsize]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{marker}[]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{markercolor}[blue]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{filenamecolor}[blue]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{datecolor}[blue]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{inlinespace}[1em]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{head}[\baselineskip]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{foot}[\baselineskip]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{framesep}[3pt]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{framerule}[0.4pt]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{separator}[\textbullet]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{framecolor}[black]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{sepcolor}[black]{}
\define@cmdkey[gfd]{getfiledate}[gfd@]{separator}[\textbullet]{}
\define@choicekey*+[gfd]{getfiledate}{align}[\gfd@val\gfd@nr]%
{center,right,left,justified}[justified]{%
  \ifcase\gfd@nr\relax
    \def\gfd@alignright{\hfil}%
    \def\gfd@alignleft{\hfil}%
  \or
    \def\gfd@alignright{\hfill}%
    \let\gfd@alignleft\relax
  \or
    \let\gfd@alignright\relax
    \def\gfd@alignleft{\hfill}%
  \or
    \let\gfd@alignright\relax
    \let\gfd@alignleft\relax
  \fi
}{%
  \gfd@err{Inadmissible value '#1' for align}
}
\DeclareOptionX*{\gfd@warn{Unknown option '\CurrentOption' ignored}}
\ExecuteOptionsX[gfd]<getfiledate>[notime,boxed]{%
  align=center,head,foot,prefix,postfix,marker,markercolor,
  filenamecolor,datecolor,inlinespace,file,width,framesep,
  framerule,framecolor,sepcolor,separator,putprefix
}
\ProcessOptionsX*[gfd]<getfiledate>\relax
\begingroup
\ifcsdef{pdffilemoddate}{}{%
  \AfterGroup{%
    \gfd@err{Missing command \string\pdffilemoddate}{%
      Use pdfTeX 1.30.0 or later version}
    \endinput
  }
}
\endgroup
\newcommand\getfiledate[2][]{%
  \setkeys[gfd]{getfiledate}{#1}%
  \setkeys[gfd]{getfiledate}{file={#2}}%
  \par\vspace{\gfd@head}%
  \begingroup
  \gfd@alignright
  \mbox{%
  \ifgfd@boxed
    \let\gfd@marker\@empty
    \def\gfd@inlinespace{\z@}%
    \fboxsep=\gfd@framesep\relax
    \fboxrule=\gfd@framerule\relax
    \gfd@width@tmp=\dimexpr\gfd@width+2\fboxsep+2\fboxrule\relax
    \color{\gfd@framecolor}%
    \begin{boxedminipage}{\gfd@width@tmp}%
      \normalcolor\gfd@tempa{\gfd@file}\relax
    \end{boxedminipage}%
  \else
    \noindent\gfd@tempa{\gfd@file}%
  \fi
  }%
  \gfd@alignleft
  \endgroup
  \par\vspace{\gfd@foot}%
}
\def\gfd@tempa#1{%
  \IfFileExists{#1}{%
    \expandafter\expandafter\expandafter
    \gfd@tempb\expandafter\@gobbletwo\pdffilemoddate{#1}
    D:00000000000000\@nil{#1}%
  }{\gfd@err{File '#1' does not exist or wrong path}{%
    Please enter correct filename and path}}
}
\newcommand\gfd@tempb[8]{\gfd@tempc{#1#2#3#4}{#5#6}{#7#8}}
\newcommand\gfd@tempc[9]{\gfd@tempd{#1}{#2}{#3}{#4#5}{#6#7}{#8#9}}
\def\gfd@tempd#1#2#3#4#5#6#7\@nil#8{%
  \parbox{\gfd@width}{%
    \removelastskip\noindent
    \ifbool{gfd@putprefix}{\gfd@prefix@a{#8}}{}\ignorespaces
    \textcolor{\gfd@datecolor}{#1-#2-#3}%
    \ifbool{gfd@notime}{}{%
      \space\textcolor{\gfd@sepcolor}{\gfd@separator}\space%
      \textcolor{\gfd@datecolor}{#4:#5:#6}\ignorespaces
    }.%
  }%
  \removelastskip
}
\def\gfd@prefix@a#1{%
  \ifcsempty{gfd@marker}{}{\gfd@marker@a}%
  \gfd@prefix\space\textcolor{\gfd@filenamecolor}{#1}\space\gfd@postfix\space%
}
\def\gfd@marker@a{%
  \textcolor{\gfd@markercolor}{\gfd@marker}%
  \leavevmode\hskip\gfd@inlinespace plus\z@ minus\z@\relax
}

\endinput