- tick = now;
- vtime = asl_get(msg, ASL_KEY_TIME);
- if (vtime != NULL)
- {
- /* aslmsg_verify converts time to seconds, but use current time if something went sour */
- tick = atol(vtime);
- if (tick == 0) tick = now;
- }
-
- p = ctime(&tick);
- memcpy(vt, p+4, 15);
- vt[15] = '\0';
-
- vhost = asl_get(msg, ASL_KEY_HOST);
- if (vhost == NULL) vhost = "localhost";
-
- vident = asl_get(msg, ASL_KEY_SENDER);
- if ((vident != NULL) && (!strcmp(vident, "Unknown"))) vident = NULL;
-
- vpid = asl_get(msg, ASL_KEY_PID);
- if ((vpid != NULL) && (!strcmp(vpid, "-1"))) vpid = NULL;
-
- if ((vpid != NULL) && (vident == NULL)) vident = "Unknown";
-
- vrefproc = asl_get(msg, ASL_KEY_REF_PROC);
- vrefpid = asl_get(msg, ASL_KEY_REF_PID);
-
- vmsg = asl_get(msg, ASL_KEY_MSG);
- if (vmsg != NULL) outmsg = bsd_log_string(vmsg);
-
- n = 0;
- /* Time + " " */
- n += (strlen(vt) + 1);
-
- /* Host + " " */
- if (vhost != NULL) n += (strlen(vhost) + 1);
-
- /* Sender */
- if (vident != NULL) n += strlen(vident);
-
- /* "[" PID "]" */
- if (vpid != NULL) n += (strlen(vpid) + 2);
-
- /* " (" */
- if ((vrefproc != NULL) || (vrefpid != NULL)) n += 2;
-
- /* RefProc */
- if (vrefproc != NULL) n += strlen(vrefproc);
-
- /* "[" RefPID "]" */
- if (vrefpid != NULL) n += (strlen(vrefpid) + 2);
-
- /* ")" */
- if ((vrefproc != NULL) || (vrefpid != NULL)) n += 1;
-
- /* ": " */
- n += 2;
-
- /* Message */
- if (outmsg != NULL) n += strlen(outmsg);
-
- if (n == 0) return -1;
-
- /* "\n" + nul */
- n += 2;
-
- so = calloc(1, n);
- if (so == NULL) return -1;
-
- strcat(so, vt);
- strcat(so, " ");
-
- if (vhost != NULL)
- {
- strcat(so, vhost);
- strcat(so, " ");
- }
-
- if (vident != NULL)
- {
- strcat(so, vident);
- if (vpid != NULL)
- {
- strcat(so, "[");
- strcat(so, vpid);
- strcat(so, "]");
- }
- }
-
- if ((vrefproc != NULL) || (vrefpid != NULL))
- {
- strcat(so, " (");
-
- if (vrefproc != NULL) strcat(so, vrefproc);
-
- if (vrefpid != NULL)
- {
- strcat(so, "[");
- strcat(so, vrefpid);
- strcat(so, "]");
- }
-
- strcat(so, ")");
- }
-
- strcat(so, ": ");
-
- if (outmsg != NULL)
- {
- strcat(so, outmsg);
- free(outmsg);
- }
-
- strcat(so, "\n");
-
- *out = so;