#include <time.h>
#include <math.h>
#include <ctype.h>
+#include <limits.h>
#include <oop.h>
#include <oop-read.h>
#define INNDCOMMCHILD_ESTATUS_FAIL 26
#define INNDCOMMCHILD_ESTATUS_NONESUCH 27
-#define MAX_LINE_FEEDFILE (NNTP_MSGID_MAXLEN + sizeof(TOKEN)*2 + 10)
+#define MAX_LINE_FEEDFILE (NNTP_MAXLEN_MSGID + sizeof(TOKEN)*2 + 10)
#define MAX_CLI_COMMAND 1000
#define VA va_list al; va_start(al,fmt)
#define DUMPV(fmt,pfx,v) fprintf(f, " " #v "=" fmt, pfx v);
-#define FOR_CONN(conn) \
- for ((conn)=LIST_HEAD(conns); (conn); (conn)=LIST_NEXT((conn)))
+#define FOR_LIST_NODE(nodevar, list) \
+ for ((nodevar)=LIST_HEAD(list); (nodevar); (nodevar)=LIST_NEXT((nodevar)))
+
+#define FOR_CONN(conn) FOR_LIST_NODE(conn, conns)
/*----- doubly linked lists -----*/
extern int max_bad_data_initial;
-/*----- statistics -----*/
+/*----- article states, and statistics -----*/
typedef enum { /* in queue in conn->sent */
art_Unchecked, /* not checked, not sent checking */
void logv(int sysloglevel, const char *pfx, int errnoval,
const char *fmt, va_list al) PRINTF(5,0);
-char *xvasprintf(const char *fmt, va_list al) PRINTF(1,0);
-char *xasprintf(const char *fmt, ...) PRINTF(1,2);
+char *mvasprintf(const char *fmt, va_list al) PRINTF(1,0);
+char *masprintf(const char *fmt, ...) PRINTF(1,2);
int close_perhaps(int *fd);
void xclose(int fd, const char *what, const char *what2);
void xclose_perhaps(int *fd, const char *what, const char *what2);
-pid_t xfork(const char *what);
+pid_t xfork(const char *what); /* also runs postfork in child */
+pid_t xfork_bare(const char *what);
void on_fd_read_except(int fd, oop_call_fd callback);
void cancel_fd_read_except(int fd);
INNLOGSET(die, "fatal", LOG_ERR) \
INNLOGSET(warn, "warning", LOG_WARNING) \
INNLOGSET(notice, "notice", LOG_NOTICE) \
- INNLOGSET(trace, "trace", LOG_NOTICE)
+ INNLOGSET(debug, "debug", LOG_DEBUG)
#define INNLOGSET_DECLARE(fn, pfx, sysloglevel) \
void duct_log_##fn(int l, const char *fmt, va_list al, int errval) \
PRINTF(3,0);