Terminal program for MailStation devices
1/*
2 * msTERM
3 * utility functions
4 *
5 * Copyright (c) 2019 joshua stein <jcs@jcs.org>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20/* From Bela Torok, 1999 <bela.torok@kssg.ch> */
21
22#define NUMBER_OF_DIGITS 16
23
24void
25uitoa(unsigned int value, char *string, int radix)
26{
27 unsigned char t[NUMBER_OF_DIGITS + 1];
28 unsigned char index, i;
29
30 index = NUMBER_OF_DIGITS;
31 i = 0;
32
33 do {
34 t[--index] = '0' + (value % radix);
35 if (t[index] > '9')
36 t[index] += 'A' - ':';
37 value /= radix;
38 } while (value != 0);
39
40 do {
41 string[i++] = t[index++];
42 } while (index < NUMBER_OF_DIGITS);
43
44 string[i] = '\0';
45}
46
47void
48itoa(int value, char *string, int radix)
49{
50 if (value < 0 && radix == 10) {
51 *string++ = '-';
52 uitoa(-value, string, radix);
53 } else {
54 uitoa(value, string, radix);
55 }
56}