/* These are outside the range of the transmitted flags. */
#define ITEM_MISSING_DATA (1<<16) /* used by log_formatted() */
#define ITEM_DELETED (1<<17) /* used by log_formatted() */
+#define ITEM_MATCHED (1<<18) /* used by itemize() */
#define SIGNIFICANT_ITEM_FLAGS (~(\
ITEM_BASIS_TYPE_FOLLOWS | ITEM_XNAME_FOLLOWS | ITEM_LOCAL_CHANGE))
/* Log-message categories. Only FERROR and FINFO get sent over the socket,
* but FLOG and FSOCKERR can be sent over the receiver -> generator pipe.
* FLOG only goes to the log file, not the client; FCLIENT is the opposite. */
-enum logcode { FERROR=1, FINFO=2, FLOG=3, FCLIENT=4, FSOCKERR=5 };
+enum logcode { FNONE=0, FERROR=1, FINFO=2, FLOG=3, FCLIENT=4, FSOCKERR=5 };
/* Messages types that are sent over the message channel. The logcode
* values must all be present here with identical numbers. */
#define HL_SKIP 1
struct hlink {
- int next;
- int hlindex;
+ int32 next;
+ int32 hlindex;
+ unsigned short link_dest_used;
};
#define F_DEV link_u.idev->dev
#include "lib/permstring.h"
#include "lib/addrinfo.h"
-#if !defined __GNUC__ || defined __APPLE__
-/* Apparently the OS X port of gcc gags on __attribute__.
- *
- * <http://www.opensource.apple.com/bugs/X/gcc/2512150.html> */
+#ifndef __GNUC__
#define __attribute__(x)
#endif
#define UNUSED(x) x __attribute__((__unused__))
+#define NORETURN __attribute__((__noreturn__))
#include "proto.h"
#ifndef WEXITSTATUS
#define WEXITSTATUS(stat) ((int)(((stat)>>8)&0xFF))
#endif
+#ifndef WIFEXITED
+#define WIFEXITED(stat) ((int)((stat)&0xFF) == 0)
+#endif
#define exit_cleanup(code) _exit_cleanup(code, __FILE__, __LINE__)
#ifdef MAINTAINER_MODE
const char *get_panic_action(void);
#endif
+
+static inline int
+isDigit(const char *ptr)
+{
+ return isdigit(*(unsigned char *)ptr);
+}
+
+static inline int
+isPrint(const char *ptr)
+{
+ return isprint(*(unsigned char *)ptr);
+}
+
+static inline int
+isSpace(const char *ptr)
+{
+ return isspace(*(unsigned char *)ptr);
+}
+
+static inline int
+isLower(const char *ptr)
+{
+ return islower(*(unsigned char *)ptr);
+}
+
+static inline int
+isUpper(const char *ptr)
+{
+ return isupper(*(unsigned char *)ptr);
+}
+
+static inline int
+toLower(const char *ptr)
+{
+ return tolower(*(unsigned char *)ptr);
+}
+
+static inline int
+toUpper(const char *ptr)
+{
+ return toupper(*(unsigned char *)ptr);
+}