view uptools/libcoding/decode_helpers.c @ 752:c79aaed75bd8

compile-fc-batt: allow possible third field in source lines Battery tables maintained in the fc-battery-conf repository will now have a third field added, defining thresholds for the battery bars icon, and there will be a new utility to compile them into the new /etc/batterytab2 file read by the FC Tourmaline version of our FCHG driver. For backward compatibility with the original Magnetite version of FCHG, compile-fc-batt remains the tool for compiling the original /etc/batterytab file format, and it needs to ignore the newly added third field in battery table sources.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 05 Nov 2020 20:37:55 +0000
parents 978571e23318
children 1c599681fd60
line wrap: on
line source

/*
 * This library module implements the is_decoded_char_ok() and emit_utf8_char()
 * functions used by gsm7_to_ascii_or_ext() and ucs2_to_ascii_or_ext().
 */

#include <sys/types.h>

is_decoded_char_ok(uni, ascii_ext)
	unsigned uni;
{
	unsigned upper_limit;

	/* weed out control chars first */
	if (uni < 0x20)
		return(0);
	if (uni >= 0x7F && uni <= 0x9F)
		return(0);
	/* see what range our output encoding allows */
	switch (ascii_ext) {
	case 0:
		upper_limit = 0x7F;
		break;
	case 1:
		upper_limit = 0xFF;
		break;
	case 2:
		upper_limit = 0xFFFF;
		break;
	default:
		upper_limit = 0;
	}
	if (uni <= upper_limit)
		return(1);
	else
		return(0);
}

emit_utf8_char(uni, outp)
	unsigned uni;
	u_char *outp;
{
	if (uni < 0x80) {
		*outp = uni;
		return(1);
	}
	if (uni < 0x800) {
		outp[0] = 0xC0 | (uni >> 6);
		outp[1] = 0x80 | (uni & 0x3F);
		return(2);
	}
	outp[0] = 0xE0 | (uni >> 12);
	outp[1] = 0x80 | ((uni >> 6) & 0x3F);
	outp[2] = 0x80 | (uni & 0x3F);
	return(3);
}