1 /* progname.h: Declarations for argv[0] equivalents. 2 3 Copyright 1994, 1996, 2008, 2010-2013 Karl Berry. 4 Copyright 1999, 2005 Olaf Weber. 5 6 This library is free software; you can redistribute it and/or 7 modify it under the terms of the GNU Lesser General Public 8 License as published by the Free Software Foundation; either 9 version 2.1 of the License, or (at your option) any later version. 10 11 This library is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 Lesser General Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public License 17 along with this library; if not, see <http://www.gnu.org/licenses/>. */ 18 19 #ifndef KPATHSEA_PROGNAME_H 20 #define KPATHSEA_PROGNAME_H 21 22 #include <kpathsea/c-proto.h> 23 #include <kpathsea/types.h> 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 /* Return directory ARGV0 comes from. Check PATH if ARGV0 is not 30 absolute. */ 31 32 #if !defined (WIN32) 33 extern KPSEDLL string kpathsea_selfdir (kpathsea kpse, const_string argv0); 34 #endif 35 36 /* Set the first two variables above (if they're not predefined) to a copy 37 of ARGV0 and everything in ARGV0 after the last directory separator, 38 respectively. Set kpse_program_name to a copy of PROGNAME or the 39 value of kpse_invocation_short_name if PROGNAME is NULL. 40 This function also determines the AUTO* variables. */ 41 42 extern KPSEDLL void kpathsea_set_program_name (kpathsea kpse, 43 const_string argv0, const_string progname); 44 45 /* See also `kpathsea_reset_program_name' which is defined in tex-file.c 46 47 That function is to be used to set kpse->program_name to a different 48 value. It clears the path searching information, to ensure that 49 the search paths are appropriate to the new name. */ 50 51 52 #if defined (KPSE_COMPAT_API) 53 #if !defined (WIN32) 54 extern KPSEDLL string kpse_selfdir (const_string argv0); 55 #endif 56 57 extern KPSEDLL void kpse_set_program_name (const_string argv0, 58 const_string progname); 59 #endif /* KPSE_COMPAT_API */ 60 61 /* Returns ARGV0 with any leading path and on some systems the suffix 62 for executables stripped off. This returns a new string. */ 63 64 extern KPSEDLL string kpse_program_basename (const_string argv0); 65 66 #ifdef __cplusplus 67 } 68 #endif 69 70 #endif /* not KPATHSEA_PROGNAME_H */ 71