issue is found that we spend the effort on algorithmic
optimizations than micro-optimizing.'' J.T. */
-#define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
extern void null_cleanup (void *);
+extern void xfree (void *);
+
extern int myread (int, char *, int);
extern int query (char *, ...) ATTR_FORMAT (printf, 1, 2);
extern PTR xmrealloc (PTR, PTR, long);
#endif
+/* Like asprintf/vasprintf but get an internal_error if the call
+ fails. */
+extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
+extern void xvasprintf (char **ret, const char *format, va_list ap);
+
extern int parse_escape (char **);
/* Message to be printed before the error message, when an error occurs. */