\begin{Verbatim}[commandchars=\\\{\}] \PY{c+cm}{/*} \PY{c+cm}{ Gets previews of PDF Documents} \PY{c+cm}{*/} \PY{k+kt}{void}\PY{+w}{ }\PY{n+nf}{getPDFPreview}\PY{p}{(}\PY{k+kt}{char}\PY{+w}{ }\PY{o}{*}\PY{n}{filepath}\PY{p}{,}\PY{+w}{ }\PY{k+kt}{int}\PY{+w}{ }\PY{n}{maxy}\PY{p}{,}\PY{+w}{ }\PY{k+kt}{int}\PY{+w}{ }\PY{n}{maxx}\PY{p}{)} \PY{p}{\PYZob{}} \PY{+w}{ }\PY{k+kt}{char}\PY{+w}{ }\PY{n}{imgout}\PY{p}{[}\PY{p}{]}\PY{+w}{ }\PY{o}{=}\PY{+w}{ }\PY{l+s}{\PYZdq{}}\PY{l+s}{/tmp/prev.jpg}\PY{l+s}{\PYZdq{}}\PY{p}{;} \PY{+w}{ }\PY{k+kt}{pid\PYZus{}t}\PY{+w}{ }\PY{n}{pid}\PY{p}{;} \PY{+w}{ }\PY{n}{pid}\PY{+w}{ }\PY{o}{=}\PY{+w}{ }\PY{n}{fork}\PY{p}{(}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{k}{struct}\PY{+w}{ }\PY{n+nc}{sigaction}\PY{+w}{ }\PY{n}{act}\PY{p}{;} \PY{+w}{ }\PY{n}{sigemptyset}\PY{p}{(}\PY{o}{\PYZam{}}\PY{n}{act}\PY{p}{.}\PY{n}{sa\PYZus{}mask}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{n}{act}\PY{p}{.}\PY{n}{sa\PYZus{}flags}\PY{+w}{ }\PY{o}{=}\PY{+w}{ }\PY{l+m+mi}{0}\PY{p}{;} \PY{+w}{ }\PY{n}{act}\PY{p}{.}\PY{n}{sa\PYZus{}handler}\PY{+w}{ }\PY{o}{=}\PY{+w}{ }\PY{n}{cb\PYZus{}sig}\PY{p}{;} \PY{+w}{ }\PY{k}{if}\PY{p}{(}\PY{n}{pid}\PY{+w}{ }\PY{o}{=}\PY{o}{=}\PY{+w}{ }\PY{l+m+mi}{0}\PY{p}{)} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{n}{execlp}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{pdftoppm}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{pdftoppm}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{\PYZhy{}l}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{1}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{\PYZhy{}jpeg}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{n}{filepath}\PY{p}{,}\PY{l+s}{\PYZdq{}}\PY{l+s}{\PYZhy{}singlefile}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{+w}{ }\PY{l+s}{\PYZdq{}}\PY{l+s}{/tmp/prev}\PY{l+s}{\PYZdq{}}\PY{p}{,}\PY{+w}{ }\PY{p}{(}\PY{k+kt}{char}\PY{+w}{ }\PY{o}{*}\PY{p}{)}\PY{n+nb}{NULL}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{n}{exit}\PY{p}{(}\PY{l+m+mi}{1}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{+w}{ }\PY{k}{else} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{c+c1}{//int status;} \PY{+w}{ }\PY{c+c1}{//waitpid(pid, \PYZam{}status, 0);} \PY{+w}{ }\PY{k}{if}\PY{+w}{ }\PY{p}{(}\PY{n}{ERR}\PY{+w}{ }\PY{o}{=}\PY{o}{=}\PY{+w}{ }\PY{n}{wgetch}\PY{p}{(}\PY{n}{current\PYZus{}win}\PY{p}{)}\PY{p}{)} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{n}{printf}\PY{p}{(}\PY{l+s}{\PYZdq{}}\PY{l+s}{wgetch interrupted by signal}\PY{l+s+se}{\PYZbs{}n}\PY{l+s}{\PYZdq{}}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{+w}{ }\PY{k}{else} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{n}{raise}\PY{p}{(}\PY{n}{SIGUSR1}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{+w}{ }\PY{k}{if}\PY{+w}{ }\PY{p}{(}\PY{n}{raised\PYZus{}signal}\PY{+w}{ }\PY{o}{=}\PY{o}{=}\PY{+w}{ }\PY{n}{SIGUSR1}\PY{p}{)} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{n}{kill}\PY{p}{(}\PY{n}{pid}\PY{p}{,}\PY{+w}{ }\PY{n}{SIGINT}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{+w}{ }\PY{k}{else}\PY{+w}{ }\PY{k}{if}\PY{+w}{ }\PY{p}{(}\PY{n}{raised\PYZus{}signal}\PY{+w}{ }\PY{o}{=}\PY{o}{=}\PY{+w}{ }\PY{n}{SIGCHLD}\PY{p}{)} \PY{+w}{ }\PY{p}{\PYZob{}} \PY{+w}{ }\PY{n}{getImgPreview}\PY{p}{(}\PY{n}{imgout}\PY{p}{,}\PY{+w}{ }\PY{n}{maxy}\PY{p}{,}\PY{+w}{ }\PY{n}{maxx}\PY{p}{)}\PY{p}{;} \PY{+w}{ }\PY{n}{clearFlagImg}\PY{+w}{ }\PY{o}{=}\PY{+w}{ }\PY{l+m+mi}{1}\PY{p}{;} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{+w}{ }\PY{p}{\PYZcb{}} \PY{p}{\PYZcb{}} \end{Verbatim}