view smpp-trx-sa/log.c @ 261:a375639e4190

smpp-trx-sa: refactor time formatting code
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 11 Oct 2023 17:34:45 -0800
parents 9d6e8d99d2b1
children f1c024b2b835
line wrap: on
line source

/*
 * This module implements smpp-trx-sa log file output.
 */

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <time.h>

extern FILE *logF;
extern time_t curtime;
extern char fmt_time[32];
extern int init_done;

void
log_fatal_error(cause)
	char *cause;
{
	if (!init_done)
		return;
	fprintf(logF, "\n%s %s\n", fmt_time, cause);
}

static void
pdu_hexdump(pdu, pdulen)
	u_char *pdu;
	unsigned pdulen;
{
	unsigned off, chunk;
	int i, c;

	for (off = 0; off < pdulen; off += chunk) {
		fprintf(logF, "%04X:  ", off);
		chunk = pdulen - off;
		if (chunk > 16)
			chunk = 16;
		for (i = 0; i < 16; i++) {
			if (i < chunk)
				fprintf(logF, "%02X ", pdu[off + i]);
			else
				fputs("   ", logF);
			if (i == 7 || i == 15)
				putc(' ', logF);
		}
		for (i = 0; i < chunk; i++) {
			c = pdu[off + i];
			if (c < ' ' || c > '~')
				c = '.';
			putc(c, logF);
		}
		putc('\n', logF);
	}
}

void
log_rx_pdu(pdu, pdulen)
	u_char *pdu;
	unsigned pdulen;
{
	fprintf(logF, "\n%s Received PDU:\n", fmt_time);
	pdu_hexdump(pdu, pdulen);
}

void
log_sent_pdu(pdu, pdulen)
	u_char *pdu;
	unsigned pdulen;
{
	fprintf(logF, "\n%s Sent PDU:\n", fmt_time);
	pdu_hexdump(pdu, pdulen);
}