+ for (; msg != NULL; msg = msg->next) total += msg->count;
+ return total;
+}
+
+static void
+_asl_msg_dump_kv(FILE *f, asl_msg_t *msg, uint16_t x)
+{
+ if (x == ASL_MSG_SLOT_FREE)
+ {
+ fprintf(f, "-free-");
+ return;
+ }
+
+ if ((x & ASL_MSG_KV_MASK) == ASL_MSG_KV_DICT)
+ {
+ switch (x)
+ {
+ case ASL_STD_KEY_TIME: fprintf(f, "(dict: Time)"); return;
+ case ASL_STD_KEY_NANO: fprintf(f, "(dict: Nano)"); return;
+ case ASL_STD_KEY_HOST: fprintf(f, "(dict: Host)"); return;
+ case ASL_STD_KEY_SENDER: fprintf(f, "(dict: Sender)"); return;
+ case ASL_STD_KEY_FACILITY: fprintf(f, "(dict: Facility)"); return;
+ case ASL_STD_KEY_PID: fprintf(f, "(dict: PID)"); return;
+ case ASL_STD_KEY_UID: fprintf(f, "(dict: UID)"); return;
+ case ASL_STD_KEY_GID: fprintf(f, "(dict: GID)"); return;
+ case ASL_STD_KEY_LEVEL: fprintf(f, "(dict: Level)"); return;
+ case ASL_STD_KEY_MESSAGE: fprintf(f, "(dict: Message)"); return;
+ case ASL_STD_KEY_READ_UID: fprintf(f, "(dict: ReadUID)"); return;
+ case ASL_STD_KEY_READ_GID: fprintf(f, "(dict: ReadGID)"); return;
+ case ASL_STD_KEY_SESSION: fprintf(f, "(dict: Session)"); return;
+ case ASL_STD_KEY_REF_PID: fprintf(f, "(dict: PID)"); return;
+ case ASL_STD_KEY_REF_PROC: fprintf(f, "(dict: RefProc)"); return;
+ case ASL_STD_KEY_MSG_ID: fprintf(f, "(dict: ASLMessageID)"); return;
+ case ASL_STD_KEY_EXPIRE: fprintf(f, "(dict: Expire)"); return;
+ case ASL_STD_KEY_OPTION: fprintf(f, "(dict: ASLOption)"); return;
+ case ASL_MT_KEY_DOMAIN: fprintf(f, "(dict: com.apple.message.domain)"); return;
+ case ASL_MT_KEY_SCOPE: fprintf(f, "(dict: com.apple.message.domain_scope)"); return;
+ case ASL_MT_KEY_RESULT: fprintf(f, "(dict: com.apple.message.result)"); return;
+ case ASL_MT_KEY_SIG: fprintf(f, "(dict: com.apple.message.signature)"); return;
+ case ASL_MT_KEY_SIG2: fprintf(f, "(dict: com.apple.message.signature2)"); return;
+ case ASL_MT_KEY_SIG3: fprintf(f, "(dict: com.apple.message.signature3)"); return;
+ case ASL_MT_KEY_SUCCESS: fprintf(f, "(dict: com.apple.message.success)"); return;
+ case ASL_MT_KEY_UUID: fprintf(f, "(dict: com.apple.message.uuid)"); return;
+ case ASL_MT_KEY_VAL: fprintf(f, "(dict: com.apple.message.value)"); return;
+ case ASL_MT_KEY_VAL2: fprintf(f, "(dict: com.apple.message.value2)"); return;
+ case ASL_MT_KEY_VAL3: fprintf(f, "(dict: com.apple.message.value3)"); return;
+ case ASL_MT_KEY_VAL4: fprintf(f, "(dict: com.apple.message.value4)"); return;
+ case ASL_MT_KEY_VAL5: fprintf(f, "(dict: com.apple.message.value5)"); return;
+ }
+
+ fprintf(f, "(dict: -unknown-)");
+ return;
+ }
+
+ if ((x & ASL_MSG_KV_MASK) == ASL_MSG_KV_EXTERN)
+ {
+ const char *c;
+ size_t z = x & ASL_MSG_OFFSET_MASK;
+ memcpy(&c, msg->data + z, sizeof(char *));
+ fprintf(f, "(extern: %s)", c);
+ return;
+ }
+
+ fprintf(f, "%s", msg->data + x);
+}
+
+void
+_asl_msg_dump(FILE *f, const char *comment, asl_msg_t *msg)
+{
+ uint32_t i, mslots, page1 = 1;