#ifndef LIBIBERTY_H
#define LIBIBERTY_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include "ansidecl.h"
/* Build an argument vector from a string. Allocates memory using
extern void freeargv PARAMS ((char **));
+/* Duplicate an argument vector. Allocates memory using malloc. Use
+ freeargv to free the vector. */
+
+extern char **dupargv PARAMS ((char **));
+
+
/* Return the last component of a path name. Note that we can't use a
prototype here because the parameter is declared inconsistently
across different systems, sometimes as "char *" and sometimes as
#ifndef __GNUC__
extern void xexit PARAMS ((int status));
#else
-typedef void libiberty_voidfn PARAMS ((int status));
-__volatile__ libiberty_voidfn xexit;
+void xexit PARAMS ((int status)) __attribute__ ((noreturn));
#endif
/* Set the program name used by xmalloc. */
extern int pwait PARAMS ((int, int *, int));
+#ifdef __cplusplus
+}
+#endif
+
+
#endif /* ! defined (LIBIBERTY_H) */