1/* Program name management.
2   Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc.
3   Written by Bruno Haible <haible@clisp.cons.org>, 2001.
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation; either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18#ifndef _PROGNAME_H
19#define _PROGNAME_H
20
21/* Programs using this file should do the following in main():
22     set_program_name (argv[0]);
23 */
24
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30
31/* String containing name the program is called with.  */
32extern const char *program_name;
33
34/* Set program_name, based on argv[0].  */
35extern void set_program_name (const char *argv0);
36
37#if ENABLE_RELOCATABLE
38
39/* Set program_name, based on argv[0], and original installation prefix and
40   directory, for relocatability.  */
41extern void set_program_name_and_installdir (const char *argv0,
42					     const char *orig_installprefix,
43					     const char *orig_installdir);
44#undef set_program_name
45#define set_program_name(ARG0) \
46  set_program_name_and_installdir (ARG0, INSTALLPREFIX, INSTALLDIR)
47
48/* Return the full pathname of the current executable, based on the earlier
49   call to set_program_name_and_installdir.  Return NULL if unknown.  */
50extern char *get_full_program_name (void);
51
52#endif
53
54
55#ifdef __cplusplus
56}
57#endif
58
59
60#endif /* _PROGNAME_H */
61