view ffstools/caltools/fc-add-ramps.c @ 965:2969032bdfac

fcup-smsend[mult]: fix buglet in K&R C NULL pointer passing The only 100% safe way to pass a NULL pointer as a function argument in K&R C is to cast 0 to a pointer type; failing to do so may cause mysterious bugs (invalid stack frames or garbage in argument registers) on 64-bit machines. This issue has already been fixed in most of FC host tools, but I just found some missed spots: passing of NULL UDH to PDU encoding functions in fcup-smsend[mult] in the case of single (not concatenated) SMS.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 01 Sep 2023 07:33:51 +0000
parents 5efb2832f4c2
children
line wrap: on
line source

/*
 * This utility reads a tx-ramps table in FreeCalypso ASCII format,
 * sums up each ramp and reports these sums.  The intended purpose is
 * to check if all ramps add up to 128 like they are supposed to.
 */

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

u_char data[512];
unsigned sums[32];

read_input(filename)
	char *filename;
{
	char *format;

	if (read_rf_table_ext(filename, data, 1, &format, (unsigned *) 0))
		exit(1);
	if (strcmp(format, "tx-ramps")) {
		fprintf(stderr, "error: %s is not a tx-ramps table\n",
			filename);
		exit(1);
	}
}

compute_sums()
{
	int i, j;
	unsigned accum;
	u_char *dp = data;

	for (i = 0; i < 32; i++) {
		accum = 0;
		for (j = 0; j < 16; j++)
			accum += *dp++;
		sums[i] = accum;
	}
}

output()
{
	unsigned n;

	for (n = 0; n < 16; n++)
		printf("Template #%u: ramp-up %u, ramp-down %u\n", n,
			sums[n*2], sums[n*2+1]);
}

main(argc, argv)
	char **argv;
{
	if (argc != 2) {
		fprintf(stderr, "usage: %s tx-ramps-file\n", argv[0]);
		exit(1);
	}
	read_input(argv[1]);
	compute_sums();
	output();
	exit(0);
}