getprogname: Work around program name truncation when possible.
[gnulib.git] / lib / argp-namefrob.h
blob526cd52927c057bc9059abcc94c0a29adaa662a1
1 /* Name frobnication for compiling argp outside of glibc
2 Copyright (C) 1997-2018 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Written by Miles Bader <miles@gnu.ai.mit.edu>.
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program 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
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19 #if !_LIBC
20 /* This code is written for inclusion in gnu-libc, and uses names in the
21 namespace reserved for libc. If we're not compiling in libc, define those
22 names to be the normal ones instead. */
24 /* argp-parse functions */
25 #undef __argp_parse
26 #define __argp_parse argp_parse
27 #undef __option_is_end
28 #define __option_is_end _option_is_end
29 #undef __option_is_short
30 #define __option_is_short _option_is_short
31 #undef __argp_input
32 #define __argp_input _argp_input
34 /* argp-help functions */
35 #undef __argp_help
36 #define __argp_help argp_help
37 #undef __argp_error
38 #define __argp_error argp_error
39 #undef __argp_failure
40 #define __argp_failure argp_failure
41 #undef __argp_state_help
42 #define __argp_state_help argp_state_help
43 #undef __argp_usage
44 #define __argp_usage argp_usage
46 /* argp-fmtstream functions */
47 #undef __argp_make_fmtstream
48 #define __argp_make_fmtstream argp_make_fmtstream
49 #undef __argp_fmtstream_free
50 #define __argp_fmtstream_free argp_fmtstream_free
51 #undef __argp_fmtstream_putc
52 #define __argp_fmtstream_putc argp_fmtstream_putc
53 #undef __argp_fmtstream_puts
54 #define __argp_fmtstream_puts argp_fmtstream_puts
55 #undef __argp_fmtstream_write
56 #define __argp_fmtstream_write argp_fmtstream_write
57 #undef __argp_fmtstream_printf
58 #define __argp_fmtstream_printf argp_fmtstream_printf
59 #undef __argp_fmtstream_set_lmargin
60 #define __argp_fmtstream_set_lmargin argp_fmtstream_set_lmargin
61 #undef __argp_fmtstream_set_rmargin
62 #define __argp_fmtstream_set_rmargin argp_fmtstream_set_rmargin
63 #undef __argp_fmtstream_set_wmargin
64 #define __argp_fmtstream_set_wmargin argp_fmtstream_set_wmargin
65 #undef __argp_fmtstream_point
66 #define __argp_fmtstream_point argp_fmtstream_point
67 #undef __argp_fmtstream_update
68 #define __argp_fmtstream_update _argp_fmtstream_update
69 #undef __argp_fmtstream_ensure
70 #define __argp_fmtstream_ensure _argp_fmtstream_ensure
71 #undef __argp_fmtstream_lmargin
72 #define __argp_fmtstream_lmargin argp_fmtstream_lmargin
73 #undef __argp_fmtstream_rmargin
74 #define __argp_fmtstream_rmargin argp_fmtstream_rmargin
75 #undef __argp_fmtstream_wmargin
76 #define __argp_fmtstream_wmargin argp_fmtstream_wmargin
78 /* normal libc functions we call */
79 #undef __flockfile
80 #define __flockfile flockfile
81 #undef __funlockfile
82 #define __funlockfile funlockfile
83 #undef __mempcpy
84 #define __mempcpy mempcpy
85 #undef __sleep
86 #define __sleep sleep
87 #undef __strcasecmp
88 #define __strcasecmp strcasecmp
89 #undef __strchrnul
90 #define __strchrnul strchrnul
91 #undef __strerror_r
92 #define __strerror_r strerror_r
93 #undef __strndup
94 #define __strndup strndup
95 #undef __vsnprintf
96 #define __vsnprintf vsnprintf
98 #if defined(HAVE_DECL_CLEARERR_UNLOCKED) && !HAVE_DECL_CLEARERR_UNLOCKED
99 # define clearerr_unlocked(x) clearerr (x)
100 #endif
101 #if defined(HAVE_DECL_FEOF_UNLOCKED) && !HAVE_DECL_FEOF_UNLOCKED
102 # define feof_unlocked(x) feof (x)
103 #endif
104 #if defined(HAVE_DECL_FERROR_UNLOCKED) && !HAVE_DECL_FERROR_UNLOCKED
105 # define ferror_unlocked(x) ferror (x)
106 #endif
107 #if defined(HAVE_DECL_FFLUSH_UNLOCKED) && !HAVE_DECL_FFLUSH_UNLOCKED
108 # define fflush_unlocked(x) fflush (x)
109 #endif
110 #if defined(HAVE_DECL_FGETS_UNLOCKED) && !HAVE_DECL_FGETS_UNLOCKED
111 # define fgets_unlocked(x,y,z) fgets (x,y,z)
112 #endif
113 #if defined(HAVE_DECL_FPUTC_UNLOCKED) && !HAVE_DECL_FPUTC_UNLOCKED
114 # define fputc_unlocked(x,y) fputc (x,y)
115 #endif
116 #if defined(HAVE_DECL_FPUTS_UNLOCKED) && !HAVE_DECL_FPUTS_UNLOCKED
117 # define fputs_unlocked(x,y) fputs (x,y)
118 #endif
119 #if defined(HAVE_DECL_FREAD_UNLOCKED) && !HAVE_DECL_FREAD_UNLOCKED
120 # define fread_unlocked(w,x,y,z) fread (w,x,y,z)
121 #endif
122 #if defined(HAVE_DECL_FWRITE_UNLOCKED) && !HAVE_DECL_FWRITE_UNLOCKED
123 # define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z)
124 #endif
125 #if defined(HAVE_DECL_GETC_UNLOCKED) && !HAVE_DECL_GETC_UNLOCKED
126 # define getc_unlocked(x) getc (x)
127 #endif
128 #if defined(HAVE_DECL_GETCHAR_UNLOCKED) && !HAVE_DECL_GETCHAR_UNLOCKED
129 # define getchar_unlocked() getchar ()
130 #endif
131 #if defined(HAVE_DECL_PUTC_UNLOCKED) && !HAVE_DECL_PUTC_UNLOCKED
132 # define putc_unlocked(x,y) putc (x,y)
133 #endif
134 #if defined(HAVE_DECL_PUTCHAR_UNLOCKED) && !HAVE_DECL_PUTCHAR_UNLOCKED
135 # define putchar_unlocked(x) putchar (x)
136 #endif
138 #endif /* !_LIBC */
140 #ifndef __set_errno
141 #define __set_errno(e) (errno = (e))
142 #endif
144 #if defined GNULIB_ARGP_DISABLE_DIRNAME
145 # define __argp_base_name(arg) arg
146 #elif defined GNULIB_ARGP_EXTERN_BASENAME
147 extern char *__argp_base_name (const char *arg);
148 #else
149 # include "dirname.h"
150 # define __argp_base_name last_component
151 #endif
153 #if defined _LIBC || HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
154 # define __argp_short_program_name() (program_invocation_short_name)
155 #else
156 extern char *__argp_short_program_name (void);
157 #endif