\subsection{E0001 -- Bad characters in file name}\label{e0001--bad-characters-in-file-name} File name should not contain non-ascii characters. Additionally, file names should not contain control characters or other characters which may have a special meaning for UNIX shells. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#nounixspecialcharacters} \subsection{E0002 -- File Permissions}\label{e0002--file-permissions} Files submitted to CTAN should be world readable. Binaries should have the x-bit set. Scripts with a shebang may have the x-bit set but this is not required. The same for Windows command files which are files ending in one of \texttt{.bat}, \texttt{.cmd}, \texttt{.ps1}, \texttt{.nsh} or \texttt{.reg}. x-bit may be set but is not required. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#filepermissions} \subsection{E0003 -- README is not a text file}\label{e0003--readme-is-not-a-text-file} The \texttt{README} file specified in the error message must be a text file but it isn\textquotesingle t. \subsection{E0004 -- Empty directory not allowed}\label{e0004--empty-directory-not-allowed} Empty directories are considered as rubbish, and are usually not accepted as part of a package, neither in the package tree nor in the TDS zip archive. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#noemptyfiles} \subsection{E0005 -- Empty files not allowed}\label{e0005--empty-files-not-allowed} Empty files are considered as rubbish, and are usually not accepted as part of a package. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#noemptyfiles} \subsection{E0006 -- Hidden directories not allowed}\label{e0006--hidden-directories-not-allowed} A package should not contain hidden directories, neither in the package tree nor in the TDS zip archive. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#noauxfiles} \subsection{E0007 -- Hidden files not allowed}\label{e0007--hidden-files-not-allowed} A package should not contain hidden files, neither in the package tree nor in the TDS zip archive. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#noauxfiles} \subsection{E0008 -- Temporary file detected}\label{e0008--temporary-file-detected} A temporary file was detected. These are typically files created by TeX \& friends and should not be part of a package. Temporary files will also be detected in a TDS zip archive. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#noauxfiles} \subsection{E0009 -- Package doesn\textquotesingle t contain a README file}\label{e0009--package-doesnt-contain-a-readme-file} A package must contain at least one of \texttt{README}, \texttt{README.md} or \texttt{README.txt} file. For more details refer to:\\ \url{https://mirrors.ibiblio.org/CTAN/help/ctan/CTAN-upload-addendum.html\#readme} \subsection{E0010 -- Broken symlink detected}\label{e0010--broken-symlink-detected} A broken symlink was detected. \subsection{E0011 -- Wrong permission for directory}\label{e0011--wrong-permission-for-directory} Directories should have rwx for the owner and at least \texttt{r-x} for others (i.e. world readable). For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#filepermissions} \subsection{E0012 -- CRLF line endings detected}\label{e0012--crlf-line-endings-detected} The file specified in the error message contains CRLF line endings. Text files should have UNIX style line endings. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#crlf} \subsection{E0013 -- Socket special fie detected}\label{e0013--socket-special-fie-detected} The file specified in the error message is a socket special file which is not allowed. \subsection{E0014 -- Fifo special file detected}\label{e0014--fifo-special-file-detected} The file specified in the error message is a fifo special file which is not allowed. \subsection{E0015 -- Block device file detected}\label{e0015--block-device-file-detected} The file specified in the error message is a block device file which is not allowed. \subsection{E0016 -- Character device file detected}\label{e0016--character-device-file-detected} The file specified in the error message is a character device file which is not allowed. \subsection{E0017 -- PDF document is in error}\label{e0017--pdf-document-is-in-error} The PDF document mentioned in the message is in error. Example: \begin{verbatim} I0002 Checking package files in directory somepkg E0017 PDF error detected in somepkg/sompkg.pdf Error opening "tests/e0017/somepkg/somepkg.pdf": Parse(InvalidTrailer) \end{verbatim} \subsection{E0018 -- Unwanted directory detected}\label{e0018--unwanted-directory-detected} A directory was detected which should not be part of a package. Example: \texttt{\_\_MACOSX} \subsection{E0019 -- Generated file detected}\label{e0019--generated-file-detected} In order to avoid redundancy we don\textquotesingle t want to have included files in a package which easily can be generated from other files in the submission. Exceptions are the \texttt{README} files of the package, i.e. \texttt{README}, \texttt{README.md} or \texttt{README.txt}, \texttt{.pdf}, \texttt{.html}, or \texttt{.css} files. If a \texttt{.ins} file is a generated file it also will be accepted. \texttt{pkgcheck} detects generated files anywhere in the package directory tree. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#nogeneratedfiles} \subsection{E0020 -- Unwanted directory detected in the top level directory in TDS zip archive}\label{e0020--unwanted-directory-detected-in-the-top-level-directory-in-tds-zip-archive} The name of a top level directory of a TDS archive must be one of those listed here: \texttt{asymptote}, \texttt{bibtex}, \texttt{chktex}, \texttt{context}, \texttt{doc}, \texttt{dvipdfmx}, \texttt{dvips}, \texttt{fonts}, \texttt{hbf2gf}, \texttt{makeindex}, \texttt{metafont}, \texttt{metapost}, \texttt{mft}, \texttt{omega}, \texttt{pbibtex}, \texttt{psutils}, \texttt{scripts}, \texttt{source}, \texttt{tex}, \texttt{tex4ht}, \texttt{texconfig}, \texttt{texdoc}, \texttt{texdoctk}, \texttt{ttf2pk}, \texttt{web2c}, \texttt{xdvi}, \texttt{xindy}, Any other other directory at the top level is an error. \subsection{E0021 -- Error when reading a file}\label{e0021--error-when-reading-a-file} An error was encountered when reading the file specified in the message. \subsection{E0022 -- Check of an URL in a README file failed}\label{e0022--check-of-an-url-in-a-readme-file-failed} URL checking is in effect. An error occcurred when trying to retrieve an URL which was found in the specified \texttt{README} file. \subsection{E0023 -- Follow up error when trying to read a directory with insufficient permissions}\label{e0023--follow-up-error-when-trying-to-read-a-directory-with-insufficient-permissions} Error which is a follow-up error. For instance, when a directory could not be read. \subsection{E0024 -- TDS zip archive has wrong permissions}\label{e0024--tds-zip-archive-has-wrong-permissions} The TDS zip archive should have at least \texttt{r-\/-} for the owner and at least \texttt{r-\/-} for others (i.e. world readable). For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#filepermissions} \subsection{E0025 -- Duplicate names when ignoring letter case for files or directories}\label{e0025--duplicate-names-when-ignoring-letter-case-for-files-or-directories} As there are operating systems which do not distinguish between \texttt{myfile} and \texttt{MYFILE} we don\textquotesingle t want to have file names in a directory which are the same after converting to lower case. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#filenames} \subsection{E0026 -- Files not in TDS or different in TDS and non-install tree}\label{e0026--files-not-in-tds-or-different-in-tds-and-non-install-tree} The file mentioned in the error message is either not existing in the TDS zip archive, or it is different to the one in the non-install tree. \subsection{E0027 -- An I/O error occurred}\label{e0027--an-io-error-occurred} Some kind of I/O error occurred. If you believe there is an error in \texttt{pkgcheck} please contact the author. \subsection{E0028 -- A path name in a TDS zip archive must contain the package name}\label{e0028--a-path-name-in-a-tds-zip-archive-must-contain-the-package-name} The path names in a TDS zip archive must contain the package name. \textbf{Example:} Assume a package \texttt{somepkg}. Then path names should look like follows: \begin{verbatim} tex/latex/somepkg/somepkg.cls doc/latex/somepkg/README source/latex/somepkg/somepkg.dtx ... \end{verbatim} \section{\texorpdfstring{E0029 -- README file: encoding with BOM detected}{E0029 -- README file: encoding with BOM detected}}\label{e0029--readme-file--encoding-with-bom-detected} A README file should be either ASCII or UTF-8 without BOM(byte order mark) For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#readme} \subsection{E0030 -- A symlink was found which points outside of the package directory tree}\label{e0030--a-symlink-was-found-which-points-outside-of-the-package-directory-tree} A symlink must not point to a file or directory outside of the package directory tree. \subsection{E0031 -- File name contains invalid UTF-8 character(s)}\label{e0031--file-name-contains-invalid-utf-8-characters} A file name contains invalid UTF-8 character(s). \subsection{E0032 -- Extension expects some file type but got another type}\label{e0032--extension-expects-some-file-type-but-got-another-type} The error shows up when the file has a known extension (e.g., \texttt{.pdf}) and the detected type doesn\textquotesingle t match. The extension is what drove the expectation. Example: \begin{verbatim} extension .pdf expects PDF, got Text (LF) \end{verbatim} \subsection{E0034 -- Unwanted file detected in the top level directory in TDS zip archive}\label{e0034--unwanted-file-detected-in-the-top-level-directory-in-tds-zip-archive} A top level directory of a TDS archive should only contain certain directories but no files. \subsection{E0035 -- Unwanted TDS archive detected in package directory tree}\label{e0035--unwanted-tds-archive-detected-in-package-directory-tree} A package directory should not contain a TDS zip archive. \subsection{E0036 -- .dtx/.ins files found in wrong directory in TDS zip archive}\label{e0036--dtxins-files-found-in-wrong-directory-in-tds-zip-archive} In a TDS zip archive a \texttt{.dtx} resp. \texttt{.ins} file must be in a subdirectory of either of \texttt{source/} or \texttt{doc/} top level directories. \subsection{E0037 -- CR line endings detected}\label{e0037--cr-line-endings-detected} The file specified in the error message contains CR line endings. Text files should have UNIX style line endings. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#crlf} \subsection{E0038 -- File has inconsistent line endings: CR: x, LF: y, CRLF: z}\label{e0038--file-has-inconsistent-line-endings-cr-x-lf-y-crlf-z} The file specified in the error message contains CR line endings. Text files should have UNIX style line endings. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#crlf} \subsection{E0039 -- No doc/ directory found in the top level directory of the TDS zip archive}\label{e0039--no-doc-directory-found-in-the-top-level-directory-of-the-tds-zip-archive} A TDS zip archive is required to contain a top level directory \texttt{doc/}. \subsection{E0040 -- Too few top level directories in the TDS zip archive}\label{e0040--too-few-top-level-directories-in-the-tds-zip-archive} The top level directory of a TDS zip archive must contain at least a \texttt{doc} directory and one or more of the following directories: \texttt{asymptote}, \texttt{bibtex}, \texttt{chktex}, \texttt{context}, \texttt{dvipdfmx}, \texttt{dvips}, \texttt{fonts}, \texttt{hbf2gf}, \texttt{makeindex}, \texttt{metafont}, \texttt{metapost}, \texttt{mft}, \texttt{omega}, \texttt{pbibtex}, \texttt{psutils}, \texttt{scripts}, \texttt{source}, \texttt{tex}, \texttt{tex4ht}, \texttt{texconfig}, \texttt{texdoc}, \texttt{texdoctk}, \texttt{ttf2pk}, \texttt{web2c}, \texttt{xdvi}, \texttt{xindy}, Any other other directory at the top level is an error. \subsection{E0041 -- One or more map file found for the package but none of them is in a path starting with fonts/map/dvips}\label{e0041--one-or-more-map-file-found-for-the-package-but-none-of-them-is-in-a-path-starting-with-fontsmapdvips} At least one map file was found which was not in a path starting with \texttt{fonts/map/dvips}. \subsection{E0042 -- TDS zip archive: duplicate names when ignoring letter case for files or directories}\label{e0042--tds-zip-archive-duplicate-names-when-ignoring-letter-case-for-files-or-directories} As there are operating systems which do not distinguish between \texttt{myfile} and \texttt{MYFILE} we don\textquotesingle t want to have file names in a directory which are the same after converting to lower case. For more details refer to:\\ \url{https://mirror.ctan.org/help/ctan/CTAN-upload-addendum.html\#filenames} \subsection{\texorpdfstring{E0043 -- Symlink found in TDS zip archive}{E0043 -- Symlink found in TDS zip archive}}\label{e0043--symlink--found-in-tds-zip-archive} The TDS zip archive contained a symlink which is not allowed.