across different systems, sometimes as "char *" and sometimes as
"const char *" */
-#if defined(__GNU_LIBRARY__ ) || defined (__linux__)
+#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__)
extern char *basename PARAMS ((const char *));
#else
extern char *basename ();
extern PTR xrealloc PARAMS ((PTR, size_t));
+/* Allocate memory without fail and set it to zero. This works like
+ xmalloc. */
+
+extern PTR xcalloc PARAMS ((size_t, size_t));
+
/* Copy a string into a memory buffer without fail. */
extern char *xstrdup PARAMS ((const char *));