diff options
author | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
---|---|---|
committer | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
commit | c6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch) | |
tree | 1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/chktex/chktex-src/OpSys.c | |
parent | 07ee7222e389b0777456b427a55c22d0e6ffd267 (diff) |
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/chktex/chktex-src/OpSys.c')
-rw-r--r-- | Build/source/texk/chktex/chktex-src/OpSys.c | 492 |
1 files changed, 0 insertions, 492 deletions
diff --git a/Build/source/texk/chktex/chktex-src/OpSys.c b/Build/source/texk/chktex/chktex-src/OpSys.c deleted file mode 100644 index 7d055b72284..00000000000 --- a/Build/source/texk/chktex/chktex-src/OpSys.c +++ /dev/null @@ -1,492 +0,0 @@ -/* - * ChkTeX, operating system specific code for ChkTeX. - * Copyright (C) 1995-96 Jens T. Berger Thielemann - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Contact the author at: - * Jens Berger - * Spektrumvn. 4 - * N-0666 Oslo - * Norway - * E-mail: <jensthi@ifi.uio.no> - * - * - */ - - -/* - * Some functions which have to be made different from OS to OS, - * unfortunately...:\ - * - */ - -#include "ChkTeX.h" -#include "OpSys.h" -#include "Utility.h" - -#ifdef KPATHSEA -#include <kpathsea/variable.h> -#endif - -#ifdef HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#ifdef HAVE_STAT_H -# include <stat.h> -#endif - -#if HAVE_DIRENT_H -# include <dirent.h> -# define NAMLEN(dirent) strlen((dirent)->d_name) -#else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# if HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif -# if HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif -# if HAVE_NDIR_H -# include <ndir.h> -# endif -#endif - -#if defined(HAVE_OPENDIR) && defined(HAVE_CLOSEDIR) && \ - defined(HAVE_READDIR) && defined(HAVE_STAT) && \ - defined(S_IFDIR) && defined(SLASH) -# define USE_RECURSE 1 -#else -# define USE_RECURSE 0 -#endif - -#if defined(HAVE_LIBTERMCAP) || defined(HAVE_LIBTERMLIB) -# define USE_TERMCAP 1 -#endif - - -#ifdef USE_TERMCAP -# ifdef HAVE_TERMCAP_H -# include <termcap.h> -# elif HAVE_TERMLIB_H -# include <termlib.h> -# else -int tgetent(char *BUFFER, char *TERMTYPE); -char *tgetstr(char *NAME, char **AREA); -# endif -static char term_buffer[2048]; -#endif - -/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ - -/* - * This is the name of the global resource file. - */ - -#ifndef SYSCONFDIR -# if defined(__unix__) -# define SYSCONFDIR "/usr/local/lib/" -# elif defined(__MSDOS__) -# define SYSCONFDIR "\\emtex\\data\\" -# else -# define SYSCONFDIR -# endif -#endif -#define RCBASENAME "chktexrc" - -#ifdef __MSDOS__ -# define LOCALRCFILE RCBASENAME -#elif defined(WIN32) -# define LOCALRCFILE RCBASENAME -#else -# define LOCALRCFILE "." RCBASENAME -#endif - -char ConfigFile[BUFSIZ] = LOCALRCFILE; -const char *ReverseOn; -const char *ReverseOff; - - -static int HasFile(char *Dir, const char *Filename, const char *App); - -#if USE_RECURSE -static int SearchFile(char *Dir, const char *Filename, const char *App); -#endif /* USE_RECURSE */ - -/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ - - -/* - * Modify this one to suit your needs. In any case, it should fill - * the ConfigFile (sized BUFLEN) buffer above with full name & path - * for the configuration file. The macro RCFILE will give you the - * filename part of the file, if you need that. - * - * Note: This routine will be called several times. Your mission will - * be to look in each location, and see whether a .chktexrc file exist - * there. - * - * If you choose to do nothing, only the current directory will be - * searched. - * - */ - - -enum LookIn -{ - liMin, - liSysDir, - liUsrDir, - liEnvir, - liCurDir, - liNFound, - liMax -}; - - -int SetupVars(void) -{ - char *Env; -#ifdef __MSDOS__ - - char *Ptr; -#endif - - static enum LookIn i = liMin; - static int FoundFile; - - while (++i < liMax) - { - switch (i) - { - case liCurDir: /* Current directory */ - strcpy(ConfigFile, LOCALRCFILE); - break; - case liEnvir: /* Environment defined */ -#ifdef __MSDOS__ - - if ((Env = getenv("CHKTEXRC")) || (Env = getenv("CHKTEX_HOME"))) -#elif defined(TEX_LIVE) - if ((Env = kpse_var_value("CHKTEXRC"))) -#else - - if ((Env = getenv("CHKTEXRC"))) -#endif - - { - strcpy(ConfigFile, Env); - tackon(ConfigFile, LOCALRCFILE); -#ifdef TEX_LIVE - free(Env); -#endif - } - else -#ifdef __MSDOS__ - if ((Env = getenv("EMTEXDIR"))) - { - strcpy(ConfigFile, Env); - tackon(ConfigFile, "data"); - tackon(ConfigFile, LOCALRCFILE); - } - else -#endif - - *ConfigFile = 0; - break; - case liUsrDir: /* User dir for resource files */ -#if defined(__unix__) - - if ((Env = getenv("HOME")) || (Env = getenv("LOGDIR"))) - { - strcpy(ConfigFile, Env); - tackon(ConfigFile, LOCALRCFILE); - } - else -#elif defined(__MSDOS__) - - strcpy(ConfigFile, PrgName); - if ((Ptr = strrchr(ConfigFile, '\\')) || - (Ptr = strchr(ConfigFile, ':'))) - strcpy(++Ptr, RCBASENAME); - else -#endif - *ConfigFile = 0; - - break; - case liSysDir: /* System dir for resource files */ -#ifdef TEX_LIVE - if ((Env = kpse_var_value("CHKTEX_CONFIG"))) - { - strcpy(ConfigFile, Env); - free(Env); - } - else if ((Env = kpse_var_value("TEXMFMAIN"))) - { - strcpy(ConfigFile, Env); - tackon(ConfigFile, "chktex"); - tackon(ConfigFile, RCBASENAME); - free(Env); - } - else - *ConfigFile = 0; -#else /* TEX_LIVE */ -#if defined(__unix__) || defined(__MSDOS__) - strcpy(ConfigFile, SYSCONFDIR); - tackon(ConfigFile, RCBASENAME); -#else - *ConfigFile = 0; -#endif -#endif /* TEX_LIVE */ - - break; - case liNFound: - case liMin: - case liMax: - *ConfigFile = 0; - if (!FoundFile) - PrintPrgErr(pmNoRsrc); - } - - if (*ConfigFile && fexists(ConfigFile)) - break; - } - FoundFile |= *ConfigFile; - - return (*ConfigFile); -} - - -/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ - -/* - * This function should initialize the global variables ReverseOn - * and ReverseOff to magic cookies, which when printed, makes the - * text in between stand out. - */ - -void SetupTerm(void) -{ -#ifdef USE_TERMCAP - char *termtype = getenv("TERM"); - int success; - char *buffer; - static char str_so[3] = "so", str_se[3] = "se"; - - if (termtype) - { - - success = tgetent(term_buffer, termtype); - if (success < 0) - PrintPrgErr(pmNoTermData); - if (success == 0) - PrintPrgErr(pmNoTermDefd); - - buffer = (char *) malloc(sizeof(term_buffer)); - ReverseOn = tgetstr(str_so, &buffer); - ReverseOff = tgetstr(str_se, &buffer); - - if (ReverseOn && ReverseOff) - return; - } -#endif - - ReverseOn = PRE_ERROR_STR; - ReverseOff = POST_ERROR_STR; -} - -/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ - -/* - * Concatenates the `File' string to the `Dir' string, leaving the result - * in the `Dir' buffer. Takes care of inserting `directory' characters; - * if we've got the strings "/usr/foo" and "bar", we'll get - * "/usr/foo/bar". - * - * Behaviour somewhat controlled by the macros SLASH and DIRCHARS in the - * OpSys.h file. - * - */ - -void tackon(char *Dir, const char *File) -{ - int EndC; - unsigned long SLen; - - if (Dir && (SLen = strlen(Dir))) - { - EndC = Dir[SLen - 1]; - if (!(strchr(DIRCHARS, EndC))) - { - Dir[SLen++] = SLASH; - Dir[SLen] = 0L; - } - } - - strcat(Dir, File); -} - -/* - * This function should add the appendix App to the filename Name. - * If the resulting filename gets too long due to this, it may - * overwrite the old appendix. - * - * Name may be assumed to be a legal filename under your OS. - * - * The appendix should contain a leading dot. - */ - -void AddAppendix(char *Name, const char *App) -{ -#ifdef __MSDOS__ - char *p; - - if ((p = strrchr(Name, '.'))) - strcpy(p, App); - else - strcat(Name, App); -#else - /* - * NOTE! This may fail if your system has a claustrophobic file - * name length limit. - */ - strcat(Name, App); -#endif - -} - -/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ - - -/* - * Locates a file, given a wordlist containing paths. If a - * dir ends in a double SLASH, we'll search it recursively. - * - * We assume that - * a) a deeper level in the dir. tree. has a longer path than - * one above. - * b) adding a level doesn't change any of the previous levels. - * - * If this function returns TRUE, Dest is guaranteed to contain - * path & name of the found file. - * - * FALSE indicates that the file was not found; Dest is then - * unspecified. - */ - - -int LocateFile(const char *Filename, /* File to search for */ - char *Dest, /* Where to put final file */ - const char *App, /* Extra optional appendix */ - struct WordList *wl) /* List of paths, entries - * ending in // will be recursed - */ -{ - unsigned long i; -#if USE_RECURSE - - unsigned long Len; -#endif - - FORWL(i, *wl) - { - strcpy(Dest, wl->Stack.Data[i]); - -#if USE_RECURSE - - Len = strlen(Dest); - - if (Len && (Dest[Len - 1] == SLASH) && (Dest[Len - 2] == SLASH)) - { - Dest[Len - 1] = Dest[Len - 2] = 0; - if (SearchFile(Dest, Filename, App)) - return (TRUE); - } - else -#endif /* USE_RECURSE */ - - { - if (HasFile(Dest, Filename, App)) - return (TRUE); - } - } - return (FALSE); -} - -static int HasFile(char *Dir, const char *Filename, const char *App) -{ - int DirLen = strlen(Dir); - - tackon(Dir, Filename); - if (fexists(Dir)) - return (TRUE); - - if (App) - { - AddAppendix(Dir, App); - if (fexists(Dir)) - return (TRUE); - } - - Dir[DirLen] = 0; - return (FALSE); - -} - - -#if USE_RECURSE -static int SearchFile(char *Dir, const char *Filename, const char *App) -{ - struct stat *statbuf; - struct dirent *de; - DIR *dh; - - int DirLen = strlen(Dir); - int Found = FALSE; - - DEBUG(("Searching %s for %s\n", Dir, Filename)); - - if (HasFile(Dir, Filename, App)) - return (TRUE); - else - { - if ((statbuf = malloc(sizeof(struct stat)))) - { - if ((dh = opendir(Dir))) - { - while (!Found && (de = readdir(dh))) - { - Dir[DirLen] = 0; - if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) - { - tackon(Dir, de->d_name); - - if (!stat(Dir, statbuf)) - { - if ((statbuf->st_mode & S_IFMT) == S_IFDIR) - Found = SearchFile(Dir, Filename, App); - } - } - } - closedir(dh); - } - else - PrintPrgErr(pmNoOpenDir, Dir); - free(statbuf); - } - } - return (Found); -} -#endif /* USE_RECURSE */ |