+
+#ifdef ENABLE_TRACING
+void cp_trace()
+{
+ syslog(LOG_DEBUG, "Checkpoint trace: %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d <- %s:%d ...",
+ cp_file[(cp_index+7)%8], cp_line[(cp_index+7)%8],
+ cp_file[(cp_index+6)%8], cp_line[(cp_index+6)%8],
+ cp_file[(cp_index+5)%8], cp_line[(cp_index+5)%8],
+ cp_file[(cp_index+4)%8], cp_line[(cp_index+4)%8],
+ cp_file[(cp_index+3)%8], cp_line[(cp_index+3)%8],
+ cp_file[(cp_index+2)%8], cp_line[(cp_index+2)%8],
+ cp_file[(cp_index+1)%8], cp_line[(cp_index+1)%8],
+ cp_file[cp_index], cp_line[cp_index]
+ );
+}
+#endif
+
+#ifndef HAVE_ASPRINTF
+int asprintf(char **buf, const char *fmt, ...)
+{
+ int status;
+ va_list ap;
+ int len;
+
+ len = 4096;
+ *buf = xmalloc(len);
+
+ va_start(ap, fmt);
+ status = vsnprintf (*buf, len, fmt, ap);
+ va_end (ap);
+
+ if(status >= 0)
+ *buf = xrealloc(*buf, status);
+
+ if(status > len-1)
+ {
+ len = status;
+ va_start(ap, fmt);
+ status = vsnprintf (*buf, len, fmt, ap);
+ va_end (ap);
+ }
+
+ return status;
+}
+#endif