/* Declarations for utils.c.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GNU Wget.
#ifndef UTILS_H
#define UTILS_H
+/* Constant is using when we don`t know attempted size exactly */
+#define UNKNOWN_ATTEMPTED_SIZE -3
+
+/* Macros that interface to malloc, but know about type sizes, and
+ cast the result to the appropriate type. The casts are not
+ necessary in standard C, but Wget performs them anyway for the sake
+ of pre-standard environments and possibly C++. */
+
+#define xnew(type) (xmalloc (sizeof (type)))
+#define xnew0(type) (xcalloc (1, sizeof (type)))
+#define xnew_array(type, len) (xmalloc ((len) * sizeof (type)))
+#define xnew0_array(type, len) (xcalloc ((len), sizeof (type)))
+
+#define alloca_array(type, size) ((type *) alloca ((size) * sizeof (type)))
+
+#define xfree free
+/* Free P if it is non-NULL. C requires free() to behaves this way by
+ default, but Wget's code is historically careful not to pass NULL
+ to free. This allows us to assert p!=NULL in xfree to check
+ additional errors. (But we currently don't do that!) */
+#define xfree_null(p) if (!(p)) ; else xfree (p)
+
struct hash_table;
struct file_memory {
char *time_str (time_t);
char *datetime_str (time_t);
-#ifdef DEBUG_MALLOC
-void print_malloc_debug_stats ();
-#endif
-
char *xstrdup_lower (const char *);
char *strdupdelim (const char *, const char *);