view libutil/numstring.c @ 199:e6c7ced3c031

mgw: accept zero-length RTP payload as BFI Mainline OsmoBTS now has an option (rtp continuous-streaming) that causes it to emit an RTP packet every 20 ms without gaps, sending a BFI marker in the form of zero-length RTP payload when it has nothing else to send. These codec-independent BFI markers don't indicate TAF, but this provision is a good start. Accept this BFI packet format in themwi-mgw.
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 29 Mar 2023 20:23:43 -0800
parents d712d518059e
children
line wrap: on
line source

/*
 * Utility functions for number string initial parsing or preening.
 * grok_number_string() checks whether or not a user-supplied string
 * argument is fully numeric (with possibility of allowing hyphens),
 * and returns the number of digits.  dehyphen_number_string() copies
 * a possibly-hyphenated number string to a new buffer with all hyphens
 * taken out.
 */

#include <ctype.h>

grok_number_string(str, allow_hyphen)
	char *str;
{
	char *cp;
	int c, n, last_hyphen;

	n = 0;
	last_hyphen = 0;
	for (cp = str; *cp; ) {
		c = *cp++;
		if (isdigit(c)) {
			n++;
			last_hyphen = 0;
		} else if (c == '-') {
			if (!allow_hyphen || !n || last_hyphen)
				return(-1);
			last_hyphen = 1;
		} else
			return(-1);
	}
	if (last_hyphen)
		return(-1);
	return n;
}

dehyphen_number_string(src, dest)
	char *src, *dest;
{
	char *cp, *dp;
	int c;

	dp = dest;
	for (cp = src; *cp; ) {
		c = *cp++;
		if (isdigit(c))
			*dp++ = c;
	}
	*dp = '\0';
}