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