-/*
- * Voodoo time. We want to be able to mark these calls with the source
- * line, but CPP does not handle variable argument lists so we cannot
- * do what we did above (e.g. for alloc()).
- *
- * What we do is call a function to save the file and line number
- * and have it return "false". That triggers the "?" operator to
- * the right side of the ":" which is a call to the debug version of
- * vstralloc/newvstralloc but without parameters. The compiler gets
- * those from the next input tokens:
- *
- * xx = vstralloc(a,b,NULL);
- *
- * becomes:
- *
- * xx = debug_alloc_push(__FILE__,__LINE__)?0:debug_vstralloc(a,b,NULL);
- *
- * This works as long as vstralloc/newvstralloc are not part of anything
- * very complicated. Assignment is fine, as is an argument to another
- * function (but you should not do that because it creates a memory leak).
- * This will not work in arithmetic or comparison, but it is unlikely
- * they are used like that.
- *
- * xx = vstralloc(a,b,NULL); OK
- * return vstralloc(j,k,NULL); OK
- * sub(a, vstralloc(g,h,NULL), z); OK, but a leak
- * if(vstralloc(s,t,NULL) == NULL) { ... NO, but unneeded
- * xx = vstralloc(x,y,NULL) + 13; NO, but why do it?
- */
-
-#define vstralloc debug_alloc_push(__FILE__,__LINE__)?0:debug_vstralloc
-#define newvstralloc debug_alloc_push(__FILE__,__LINE__)?0:debug_newvstralloc
-#define vstrallocf debug_alloc_push(__FILE__,__LINE__)?0:debug_vstrallocf
-
-extern char *debug_vstralloc(const char *str, ...);
-extern char *debug_newvstralloc(char *oldstr, const char *newstr, ...);
-extern char *debug_vstrallocf(const char *fmt, ...)
- __attribute__ ((format (printf, 1, 2)));
-
-#define stralloc2(s1,s2) vstralloc((s1),(s2),NULL)
-#define newstralloc2(p,s1,s2) newvstralloc((p),(s1),(s2),NULL)