Пример #1
0
void
debug_log(int level, const char *str, ...)
{
	va_list v;

	if ((debug & DEBUG_STDERR) && (level <= (debug & DEBUG_LEVEL_MASK)))
	{
		va_start(v, str);
		vfprintf(stderr, str, v);
		va_end(v);
	}

	if (debug & DEBUG_ASL)
	{
		char *line = NULL;

		if (aslc == NULL)
		{
			aslc = asl_open("aslmanager", "syslog", 0);
			asl_msg_t *msg = asl_msg_new(ASL_TYPE_MSG);

			asl_msg_set_key_val(msg, ASL_KEY_MSG, "Status Report");
			asl_msg_set_key_val(msg, ASL_KEY_LEVEL, ASL_STRING_NOTICE);
			asl_create_auxiliary_file((asl_object_t)msg, "Status Report", "public.text", &asl_aux_fd);
			asl_msg_release(msg);
		}

		va_start(v, str);
		vasprintf(&line, str, v);
		va_end(v);

		if (line != NULL) write(asl_aux_fd, line, strlen(line));
		free(line);
	}
}
Пример #2
0
/* find all messages that have an ASLExpireTime key */
static uint32_t
do_ASLExpireTime_search(asl_store_t *s, asl_search_result_t **out)
{
	asl_search_result_t q, *query, *res;
	asl_msg_t *qm[1];
	uint32_t status;
	uint64_t mid;

	qm[0] = asl_msg_new(ASL_TYPE_QUERY);
	if (qm[0] == NULL) return ASL_STATUS_NO_MEMORY;

	q.count = 1;
	q.curr = 0;
	q.msg = qm;
	query = &q;

	if (asl_msg_set_key_val_op(qm[0], ASL_KEY_EXPIRE_TIME, NULL, ASL_QUERY_OP_TRUE) != 0)
	{
		asl_msg_release(qm[0]);
		return ASL_STATUS_NO_MEMORY;
	}

	res = NULL;
	mid = 0;
	status = asl_store_match(s, query, out, &mid, 0, 0, 1);

	asl_msg_release(qm[0]);
	return status;
}
Пример #3
0
int
checkpoint(const char *name)
{
	/* send checkpoint message to syslogd */
	debug_log(ASL_LEVEL_NOTICE, "Checkpoint module %s\n", (name == NULL) ? "*" : name);
	if (dryrun != 0) return 0;

	asl_msg_t *qmsg = asl_msg_new(ASL_TYPE_QUERY);
	char *tmp = NULL;
	asl_msg_list_t *res;

	asprintf(&tmp, "%s checkpoint", (name == NULL) ? "*" : name);
	asl_msg_set_key_val_op(qmsg, "action", tmp, ASL_QUERY_OP_EQUAL);
	free(tmp);

	res = control_query(qmsg);

	asl_msg_list_release(res);
	return 0;
}