summaryrefslogblamecommitdiffstats
path: root/common/latex/ifplatform.sty
blob: 7f59f6162b5b822551ce2a896802195b866cf866 (plain) (tree)






















































































































































                                                                
%%
%% This is file `ifplatform.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% ifplatform.dtx  (with options: `package')
%%   ________________________________________________________
%%   Copyright (C) 2007-2010  Will Robertson & Johannes Große
%%   License information appended.
\ProvidesPackage{ifplatform}
  [2010/10/22 v0.4  Testing for the operating system]
\RequirePackage{pdftexcmds,catchfile,ifluatex}
\newif\ifshellescape
\newif\ifwindows
\newif\ifmacosx
\newif\iflinux
\newif\ifcygwin
\newcommand\windowsname{Windows}
\newcommand\notwindowsname{*NIX}
\newcommand\linuxname{Linux}
\newcommand\macosxname{Mac\,OS\,X}
\newcommand\cygwinname{Cygwin}
\newcommand\unknownplatform{[Unknown]}
\edef\ip@file{\jobname.w18}
\newif\if@ip@nix@
\ifnum\pdf@shellescape=1\relax
  \shellescapetrue
\else
  \ifluatex\else
  \PackageWarningNoLine{ifplatform}{^^J \space\space\space
    shell escape is disabled,
    so I can only detect \@backslashchar ifwindows%
  }
  \fi
\fi
\def\ip@cantdecide{%
  \PackageWarningNoLine{ifplatform}{^^J \space\space\space
    I can't tell if this is Windows or *nix;
    you appear to be both%
  }%
}
\ifluatex
  \csname\directlua{
      if os.type == "unix" then
        tex.sprint("@ip@nix@true")
      elseif os.type == "windows" then
        tex.sprint("windowstrue")
      end
    }\endcsname
\else
\IfFileExists{nul:}{\@ip@nix@false}{\@ip@nix@true}
\IfFileExists{/dev/null}{\windowsfalse}{\windowstrue}
\edef\ip@windows@echo@test{echo \string# > "\ip@file"}
\def\ip@backupplan{%
  \IfFileExists{\ip@file}{%
    \PackageWarningNoLine{ifplatform}{^^J \space\space\space
      Please delete the file "\ip@file" and try again%
    }%
    \ip@cantdecide
  }{%
    \immediate\write18{\ip@windows@echo@test}%
    \IfFileExists{\ip@file}{%
      \immediate\write18{del "\ip@file"}%
      \windowstrue
    }{%
      \@ip@nix@true
    }%
  }%
}
\ifwindows
  \if@ip@nix@
    \PackageWarningNoLine{ifplatform}{^^J \space\space\space
      I can't tell if this is Windows or *nix;
      you appear to be neither%
    }
  \fi
\else
  \if@ip@nix@\else
    \ifshellescape
      \ip@backupplan
    \else
      \ip@cantdecide
    \fi
  \fi
\fi
\fi
\def\ip@only@six#1#2#3#4#5#6#7\@nil{#1#2#3#4#5#6}
\if@ip@nix@
\ifshellescape
  \ifwindows\else
    \immediate\write18{uname -s > "\ip@file"}
    \CatchFileDef\@tempa{\ip@file}{}
    \immediate\write18{rm -- "\ip@file"}
    \edef\@tempa{\expandafter\zap@space\@tempa\@empty}
    \def\@tempb{Linux}
    \ifx\@tempa\@tempb
      \linuxtrue
    \else
      \def\@tempb{Darwin}
      \ifx\@tempa\@tempb
        \macosxtrue
      \else
        \def\@tempb{CYGWIN}
        \edef\@tempc{\expandafter\ip@only@six\@tempa------\@nil}
        \ifx\@tempb\@tempc
          \cygwintrue
        \else
          \edef\unknownplatform{\@tempa}
        \fi
      \fi
    \fi
  \fi
\fi\fi
\edef\platformname{%
  \ifwindows
    \noexpand\windowsname
  \else
    \ifshellescape
      \iflinux
        \noexpand\linuxname
      \else
        \ifmacosx
          \noexpand\macosxname
        \else
          \ifcygwin
            \noexpand\cygwinname
          \else
            \noexpand\unknownplatform
          \fi
        \fi
      \fi
    \else
      \noexpand\notwindowsname
    \fi
  \fi
}
%% Copyright (C) 2007-2010 by Will Robertson & Johannes Große
%% 
%% Distributable under the LaTeX Project Public License,
%% version 1.3c or higher (your choice). The latest version of
%% this license is at: http://www.latex-project.org/lppl.txt
%% 
%% This work is "author-maintained" by Will Robertson.
%% 
%% This work consists of the file  ifplatform.dtx
%%           and the derived files ifplatform.pdf,
%%                                 ifplatform.sty, and
%%                                 ifplatform.ins.
%%
%% End of file `ifplatform.sty'.