diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l --- detex-2.8.orig/detex.l 2010-06-11 23:26:08.000000000 +0200 +++ detex-2.8/detex.l 2010-06-12 00:15:05.785339097 +0200 @@ -49,6 +49,23 @@ */ #include "detex.h" + +#ifdef KPATHSEA + +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_SYS_PARAM_H +#include +#endif + +#else /* KPATHSEA */ + #ifdef HAVE_STRING_H #include #define index strchr @@ -59,10 +76,15 @@ #ifndef MAXPATHLEN #include #endif +#define PATH_MAX MAXPATHLEN #ifdef OS2 #include #endif +#endif /* KPATHSEA */ + +#undef IGNORE + #define LaBEGIN if (fLatex) BEGIN #define IGNORE if (fSpace && !fWord) putchar(' ') #define SPACE if (!fWord) putchar(' ') @@ -77,7 +99,9 @@ void IncludeFile(char *sbFile); void InputFile(char *sbFile); void SetEnvIgnore(const char *sbEnvList); +#ifndef KPATHSEA void SetInputPaths(void); +#endif void Warning(const char *sb1, const char *sb2); int BeginEnv(const char *sbEnv); int EndEnv(const char *sbEnv); @@ -85,6 +109,7 @@ int SeparateList(char *sbList, char *rgsbList[] ,char chSep, int csbMax); FILE *TexOpen(char *sbFile); char *SafeMalloc(int cch, const char *sbMessage); +#ifndef KPATHSEA char *getenv(); #ifndef NO_MALLOC_DECL char *malloc(); @@ -93,12 +118,16 @@ void yyless(int); void OS2UsageExit(void); #endif +#endif /* KPATHSEA */ char *rgsbEnvIgnore[MAXENVS]; /* list of environments ignored */ char *rgsbIncList[MAXINCLIST]; /* list of includeonly files */ char *rgsbInputPaths[MAXINPUTPATHS]; /* list of input paths in order */ char sbCurrentEnv[CCHMAXENV]; /* current environment being ignored */ char *sbProgName; /* name we were invoked with */ +#ifndef NOFILE /* might be defined in */ +#define NOFILE 256 +#endif FILE *rgfp[NOFILE+1]; /* stack of input/include files */ int cfp = 0; /* count of files in stack */ int cOpenBrace = 0; /* count of `{' in and */ @@ -400,6 +429,9 @@ _splitpath (rgsbArgs[0], drive, dir, fname, ext); sbProgName = strlwr(fname); #else +#ifdef KPATHSEA + kpse_set_program_name (rgsbArgs[0], NULL); +#endif if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL) sbProgName++; else @@ -407,9 +439,11 @@ #endif if (strcmp("delatex",sbProgName) == 0) fLatex = 1; - + +#ifndef KPATHSEA /* set rgsbInputPaths for use with TexOpen() */ SetInputPaths(); +#endif /* process command line options */ while (iArgs < cArgs && *(pch = rgsbArgs[iArgs]) == CHOPT) { @@ -644,7 +678,7 @@ int InList(char *sbFile) { - char *pch, sbBase[MAXPATHLEN]; + char *pch, sbBase[PATH_MAX]; int i; if (csbIncList == 0) /* no list */ @@ -659,6 +693,7 @@ return(0); } +#ifndef KPATHSEA /****** ** SetInputPaths -- sets rgsbInputPaths to the values indicated by the ** TEXINPUTS environment variable if set or else DEFAULTINPUTS. If @@ -702,6 +737,7 @@ ErrorExit("TEXINPUTS environment variable has too many paths"); #endif } +#endif /****** ** SeparateList -- takes a chSep separated list sbList, replaces the @@ -738,10 +774,12 @@ FILE * TexOpen(char *sbFile) { - char *pch, *sbNew; + char *sbNew; +#ifndef KPATHSEA + char *pch; FILE *fp; int iPath; - static char sbFullPath[MAXPATHLEN]; + static char sbFullPath[PATH_MAX]; for (iPath = 0; iPath < csbInputPaths; iPath++) { #ifdef OS2 @@ -788,7 +826,15 @@ if ((fp = fopen(sbFullPath, "r")) != NULL) return(fp); } - return((FILE *)NULL); + return NULL; +#else + sbNew = kpse_find_file (sbFile, kpse_tex_format, false); + + if (sbNew == NULL) + return NULL; + + return fopen (sbNew, "r"); +#endif } /******