чување 9494cfed16d6cb63868f31be9be9a6340f270b65
родитељ e841fbe524c35a27b3d34d136fd49a986c19e575
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Fri, 13 Aug 2021 21:17:01 +0200
Formatted code using clang-format
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
| M | table.c | | | 376 | +++++++++++++++++++++++++++++++++++++++++++++---------------------------------- |
| M | utf8.h | | | 42 | +++++++++++++++++++++--------------------- |
измењених датотека: 2, додавања: 234(+), брисања: 184(-)
diff --git a/table.c b/table.c
@@ -11,56 +11,75 @@
#include "defs.h"
#include "version.h"
-#define CHECKEXITNOMEM(ptr) do { if (!ptr) exit(error(ENOMEM, \
- "Memory allocation failed (out of memory?)")); } while (0)
-
-#define CALLOC(ptr, ptrtype, nmemb) do { ptr = calloc(nmemb, sizeof(ptrtype)); \
- CHECKEXITNOMEM(ptr); } while (0)
-
-#define REALLOC(ptr, ptrtype, newsize) do { ptrtype* newptr = realloc(ptr, newsize); \
- CHECKEXITNOMEM(newptr); \
- ptr = newptr; } while (0)
+#define CHECKEXITNOMEM(ptr) \
+ do \
+ { \
+ if (!ptr) \
+ exit(error(ENOMEM, \
+ "Memory allocation failed (out of memory?)")); \
+ } while (0)
+
+#define CALLOC(ptr, ptrtype, nmemb) \
+ do \
+ { \
+ ptr = calloc(nmemb, sizeof(ptrtype)); \
+ CHECKEXITNOMEM(ptr); \
+ } while (0)
+
+#define REALLOC(ptr, ptrtype, newsize) \
+ do \
+ { \
+ ptrtype* newptr = realloc(ptr, newsize); \
+ CHECKEXITNOMEM(newptr); \
+ ptr = newptr; \
+ } while (0)
#define REALLOCARRAY(ptr, membtype, newcount) \
REALLOC(ptr, membtype, sizeof(membtype) * newcount);
-#define CHECKCOPY(token, ptoken, token_size, parg) do { \
- if (ptoken + 2 > token + token_size) \
- { \
- size_t old_size = token_size; \
- token_size += BUFSIZE; \
- REALLOC(token, char, token_size); \
- ptoken = token + old_size - 1; \
- } \
- *ptoken++ = *parg++; } while (0)
-
-#define CHECKSET(format, pformat, format_size, num) do { \
- if (pformat + 2 > format + format_size) \
- { \
- size_t old_size = format_size; \
- format_size += BUFSIZE; \
- REALLOC(format, ULONG, format_size); \
- pformat = format + old_size - 1; \
- } \
- *pformat++ = num; } while (0)
-
-size_t colno = 0;
-size_t lineno = 0;
-int current_symbol_set = TABLE_SYMBOLS_DOUBLE;
+#define CHECKCOPY(token, ptoken, token_size, parg) \
+ do \
+ { \
+ if (ptoken + 2 > token + token_size) \
+ { \
+ size_t old_size = token_size; \
+ token_size += BUFSIZE; \
+ REALLOC(token, char, token_size); \
+ ptoken = token + old_size - 1; \
+ } \
+ *ptoken++ = *parg++; \
+ } while (0)
+
+#define CHECKSET(format, pformat, format_size, num) \
+ do \
+ { \
+ if (pformat + 2 > format + format_size) \
+ { \
+ size_t old_size = format_size; \
+ format_size += BUFSIZE; \
+ REALLOC(format, ULONG, format_size); \
+ pformat = format + old_size - 1; \
+ } \
+ *pformat++ = num; \
+ } while (0)
+
+size_t colno = 0;
+size_t lineno = 0;
+int current_symbol_set = TABLE_SYMBOLS_DOUBLE;
int current_inner_symbol_set = TABLE_INNER_DOUBLE_SINGLE;
size_t current_table_column = 0;
size_t current_rune_column = 0;
-size_t table_columns = 0;
-size_t rune_columns = 80;
-size_t tab_length = 8;
-u32 delimiter = L',';
-ULONG* format = NULL;
-size_t format_size = 0;
-ULONG format_value = 0;
-BOOL border_mode = FALSE;
-BOOL handle_ansi = TRUE;
-BOOL msdos = FALSE;
-BOOL expand_tabs = FALSE;
+size_t table_columns = 0;
+size_t rune_columns = 80;
+size_t tab_length = 8;
+u32 delimiter = L',';
+ULONG* format = NULL;
+size_t format_size = 0;
+ULONG format_value = 0;
+BOOL border_mode = FALSE;
+BOOL handle_ansi = TRUE;
+BOOL msdos = FALSE;
+BOOL expand_tabs = FALSE;
int
version()
@@ -73,17 +92,18 @@ int
usage()
{
printf("Usage: %s [-b|--border-mode] [-c <cols>|--columns=<cols>] [-d"
- " <delim>|--delimiter=<delim>] [-f <format>|--format=<format>]"
- " [-h|--help] [-m|--msdos] [-n|--no-ansi]"
- " [-s <set>|--symbols=<set>] [-t|--expand-tabs] [-v|--version]\n",
- PROGRAMNAME);
+ " <delim>|--delimiter=<delim>] [-f <format>|--format=<format>]"
+ " [-h|--help] [-m|--msdos] [-n|--no-ansi]"
+ " [-s <set>|--symbols=<set>] [-t|--expand-tabs] "
+ "[-v|--version]\n",
+ PROGRAMNAME);
return 0;
}
int
error(int code, char* fmt, ...)
{
- char buf[BUFSIZE];
+ char buf[BUFSIZE];
va_list args;
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), (const char*)fmt, args);
@@ -98,14 +118,14 @@ substr(const char* src, int start, int finish)
int len = strlen(src);
if (finish > len)
finish = len;
- int substr_len = finish-start;
+ int substr_len = finish - start;
if (substr_len < 0)
substr_len = 0;
char* result = NULL;
- CALLOC(result, char, substr_len+1);
+ CALLOC(result, char, substr_len + 1);
char* presult = result;
- for (int i = start; i < finish && *(src+i) != '\0'; i++)
- *presult++ = *(src+i);
+ for (int i = start; i < finish && *(src + i) != '\0'; i++)
+ *presult++ = *(src + i);
*presult = 0;
return result;
@@ -117,7 +137,7 @@ startswith(const char* s, const char* what)
if (!s || !what)
return 0;
- char* subs = substr(s, 0, strlen(what));
+ char* subs = substr(s, 0, strlen(what));
BOOL result = !strcmp(subs, what);
free(subs);
@@ -126,32 +146,31 @@ startswith(const char* s, const char* what)
}
int
-set_symbol_set(char* arg, int* current_symbol_set,
- int* current_inner_symbol_set)
+set_symbol_set(char* arg, int* current_symbol_set, int* current_inner_symbol_set)
{
if (!strcmp(arg, "aa"))
{
- *current_symbol_set = TABLE_SYMBOLS_ASCII;
+ *current_symbol_set = TABLE_SYMBOLS_ASCII;
*current_inner_symbol_set = TABLE_INNER_ASCII_ASCII;
}
else if (!strcmp(arg, "ss"))
{
- *current_symbol_set = TABLE_SYMBOLS_SINGLE;
+ *current_symbol_set = TABLE_SYMBOLS_SINGLE;
*current_inner_symbol_set = TABLE_INNER_SINGLE_SINGLE;
}
else if (!strcmp(arg, "sd"))
{
- *current_symbol_set = TABLE_SYMBOLS_SINGLE;
+ *current_symbol_set = TABLE_SYMBOLS_SINGLE;
*current_inner_symbol_set = TABLE_INNER_SINGLE_DOUBLE;
}
else if (!strcmp(arg, "ds"))
{
- *current_symbol_set = TABLE_SYMBOLS_DOUBLE;
+ *current_symbol_set = TABLE_SYMBOLS_DOUBLE;
*current_inner_symbol_set = TABLE_INNER_DOUBLE_SINGLE;
}
else if (!strcmp(arg, "dd"))
{
- *current_symbol_set = TABLE_SYMBOLS_DOUBLE;
+ *current_symbol_set = TABLE_SYMBOLS_DOUBLE;
*current_inner_symbol_set = TABLE_INNER_DOUBLE_DOUBLE;
}
else
@@ -176,12 +195,12 @@ int
set_delimiter(u8* arg, u32* delimiter)
{
size_t delimiter_len = 0;
- u8* parg = arg;
+ u8* parg = arg;
u32 uch;
while (parg && *parg)
{
- u8_char_to_u32(&uch, parg, &delimiter_len);
+ u8_char_to_u32(&uch, parg, &delimiter_len);
if (uch != (u32)L'"' && uch != (u32)L'\'')
{
*delimiter = uch;
@@ -197,14 +216,14 @@ int
set_format(const char* arg, ULONG** format, size_t* format_size)
{
const char* parg = arg;
- ULONG* pformat = NULL;
- char* token = NULL;
+ ULONG* pformat = NULL;
+ char* token = NULL;
size_t token_size = BUFSIZE;
- char* ptoken = NULL;
+ char* ptoken = NULL;
ULONG num;
CALLOC(token, char, token_size);
- ptoken = token;
+ ptoken = token;
*format_size = SMALL_BUFSIZE;
CALLOC(*format, ULONG, *format_size);
pformat = *format;
@@ -220,7 +239,7 @@ set_format(const char* arg, ULONG** format, size_t* format_size)
}
if (*parg == ':')
{
- if (parg == arg || !*(parg+1))
+ if (parg == arg || !*(parg + 1))
{
free(token);
free(*format);
@@ -228,7 +247,7 @@ set_format(const char* arg, ULONG** format, size_t* format_size)
return 2;
}
*ptoken = 0;
- num = strtol(token, NULL, 10);
+ num = strtol(token, NULL, 10);
if (errno)
{
perror("strtol");
@@ -248,7 +267,7 @@ set_format(const char* arg, ULONG** format, size_t* format_size)
if (*token)
{
*ptoken = 0;
- num = strtol(token, NULL, 10);
+ num = strtol(token, NULL, 10);
if (errno)
{
perror("strtol");
@@ -270,8 +289,8 @@ size_t
number_of_columns(const u8* input, u32 delimiter)
{
u32 uch;
- size_t ch_len = 0;
- size_t result = 1;
+ size_t ch_len = 0;
+ size_t result = 1;
const u8* pinput = NULL;
pinput = input;
@@ -281,7 +300,7 @@ number_of_columns(const u8* input, u32 delimiter)
while (pinput && *pinput)
{
- u8_char_to_u32(&uch, pinput, &ch_len);
+ u8_char_to_u32(&uch, pinput, &ch_len);
if (uch == delimiter)
result++;
pinput += ch_len;
@@ -290,19 +309,18 @@ number_of_columns(const u8* input, u32 delimiter)
return result;
}
-UINT round_div(UINT a, UINT b)
+UINT
+round_div(UINT a, UINT b)
{
- return (a + (b/2)) / b;
+ return (a + (b / 2)) / b;
}
BOOL
within_column(size_t column_start)
{
- return format
- ? (current_rune_column <
- column_start + *(format+current_table_column))
- : (current_rune_column <
- column_start + format_value);
+ return format ? (current_rune_column
+ < column_start + *(format + current_table_column))
+ : (current_rune_column < column_start + format_value);
}
int
@@ -331,15 +349,19 @@ main(int argc, char** argv)
{
arg += strlen("columns=");
if (set_columns(arg, &rune_columns))
- return error(EINVAL, "Invalid argument: '%s'",
- arg);
+ return error(EINVAL,
+ "Invalid argument: "
+ "'%s'",
+ arg);
}
else if (startswith(arg, "delimiter="))
{
arg += strlen("delimiter=");
if (set_delimiter((u8*)arg, &delimiter))
- return error(EINVAL, "Invalid argument: '%s'",
- arg);
+ return error(EINVAL,
+ "Invalid argument: "
+ "'%s'",
+ arg);
}
else if (startswith(arg, "expand-tabs"))
{
@@ -364,16 +386,20 @@ main(int argc, char** argv)
else if (startswith(arg, "symbols="))
{
arg += strlen("symbols=");
- if (set_symbol_set(arg, ¤t_symbol_set,
- ¤t_inner_symbol_set))
- return error(EINVAL, "Invalid argument: '%s'",
- arg);
+ if (set_symbol_set(arg,
+ ¤t_symbol_set,
+ ¤t_inner_symbol_set))
+ return error(EINVAL,
+ "Invalid argument: "
+ "'%s'",
+ arg);
}
else if (!strcmp(arg, "help"))
return usage();
else
{
- error(EINVAL, "Invalid argument: --%s", arg);
+ error(EINVAL, "Invalid argument: --%s",
+ arg);
return usage();
}
}
@@ -412,7 +438,8 @@ main(int argc, char** argv)
cmd = CMD_VERSION;
break;
default:
- error(EINVAL, "Invalid argument: -%c", c);
+ error(EINVAL, "Invalid argument: -%c",
+ c);
return usage();
}
}
@@ -422,23 +449,27 @@ main(int argc, char** argv)
if (cmd == CMD_COLUMNS)
{
if (set_columns(arg, &rune_columns))
- return error(EINVAL, "Invalid argument: '%s'", arg);
+ return error(EINVAL,
+ "Invalid argument: '%s'", arg);
}
else if (cmd == CMD_DELIMITER)
{
if (set_delimiter((u8*)arg, &delimiter))
- return error(EINVAL, "Invalid argument: '%s'", arg);
+ return error(EINVAL,
+ "Invalid argument: '%s'", arg);
}
else if (cmd == CMD_FORMAT)
{
if (set_format(arg, &format, &format_size))
- return error(EINVAL, "Invalid argument: '%s'", arg);
+ return error(EINVAL,
+ "Invalid argument: '%s'", arg);
}
else if (cmd == CMD_SYMBOLS)
{
if (set_symbol_set(arg, ¤t_symbol_set,
- ¤t_inner_symbol_set))
- return error(EINVAL, "Invalid argument: '%s'", arg);
+ ¤t_inner_symbol_set))
+ return error(EINVAL,
+ "Invalid argument: '%s'", arg);
}
else
filename = arg;
@@ -459,13 +490,13 @@ main(int argc, char** argv)
else
input = stdin;
- u8* line = NULL;
- u8* pline = NULL;
- BOOL quote = FALSE;
+ u8* line = NULL;
+ u8* pline = NULL;
+ BOOL quote = FALSE;
u32 uch;
u8 u8ch[7];
- size_t u8len = 0;
- size_t ch_len = 0;
+ size_t u8len = 0;
+ size_t ch_len = 0;
size_t output_lines = 0;
size_t column_start = 0;
@@ -474,98 +505,110 @@ main(int argc, char** argv)
while (!feof(input))
{
char* eol = NULL;
- if (!fgets((char*)line, BUFSIZE-1, input))
+ if (!fgets((char*)line, BUFSIZE - 1, input))
break;
eol = strchr((char*)line, '\n');
if (eol)
{
- if (msdos && *line != '\n' && *(eol-1) == '\r')
- *(eol-1) = 0;
+ if (msdos && *line != '\n' && *(eol - 1) == '\r')
+ *(eol - 1) = 0;
*eol = 0;
}
if (!*line)
continue;
- quote = FALSE;
- pline = line;
- colno = 0;
+ quote = FALSE;
+ pline = line;
+ colno = 0;
current_rune_column = 0;
/* Top border */
if (lineno == 0)
{
if (!border_mode)
- table_columns = number_of_columns(line, delimiter);
+ table_columns
+ = number_of_columns(line, delimiter);
else
table_columns = 1;
/* Sanity check */
- if (rune_columns < table_columns+2)
- rune_columns = table_columns+2;
+ if (rune_columns < table_columns + 2)
+ rune_columns = table_columns + 2;
if (format && !border_mode)
{
- ULONG* pformat = format;
+ ULONG* pformat = format;
ULONG format_sum = 0;
while (*pformat)
format_sum += *pformat++;
pformat = format;
while (*pformat && format_sum)
{
- *pformat = round_div((rune_columns-table_columns-2)
- * (*pformat), format_sum);
+ *pformat
+ = round_div((rune_columns
+ - table_columns
+ - 2)
+ * (*pformat),
+ format_sum);
pformat++;
}
}
else
- format_value = (rune_columns-table_columns-2) / table_columns;
+ format_value
+ = (rune_columns - table_columns - 2)
+ / table_columns;
current_table_column = 0;
- column_start = 0;
+ column_start = 0;
while (current_table_column < table_columns)
{
if (current_rune_column == 0)
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][0]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set]
+ [0]);
u8ch[u8len] = 0;
printf("%s", u8ch);
column_start++;
}
else if (!within_column(column_start))
{
- if (current_table_column == table_columns-1)
+ if (current_table_column
+ == table_columns - 1)
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][2]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols
+ [current_symbol_set]
+ [2]);
u8ch[u8len] = 0;
printf("%s", u8ch);
current_table_column++;
}
else
{
- u8len = u32_char_to_u8(u8ch,
- *table_inner_symbols[
- current_inner_symbol_set][0]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_inner_symbols
+ [current_inner_symbol_set]
+ [0]);
u8ch[u8len] = 0;
printf("%s", u8ch);
column_start++;
if (format)
- column_start += *(format+current_table_column);
+ column_start += *(format
+ + current_table_column);
else
- column_start += format_value;
+ column_start
+ += format_value;
current_table_column++;
}
}
else
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][1]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set]
+ [1]);
u8ch[u8len] = 0;
printf("%s", u8ch);
}
@@ -578,10 +621,10 @@ main(int argc, char** argv)
/* Inner rows */
current_table_column = 0;
current_rune_column = 0;
- column_start = 0;
+ column_start = 0;
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[current_symbol_set][3]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set][3]);
u8ch[u8len] = 0;
printf("%s", u8ch);
@@ -599,7 +642,7 @@ main(int argc, char** argv)
else
{
u8* pch_end;
- u8_char_to_u32(&uch, pline, &ch_len);
+ u8_char_to_u32(&uch, pline, &ch_len);
if (border_mode)
{
pch_end = pline + ch_len;
@@ -627,14 +670,17 @@ main(int argc, char** argv)
{
printf(" ");
current_rune_column++;
- if (current_rune_column % tab_length == 0)
+ if (current_rune_column
+ % tab_length
+ == 0)
break;
}
pline++;
colno++;
}
- else if (uch == delimiter && !quote
- && current_table_column < table_columns-1)
+ else if (uch == delimiter && !quote
+ && current_table_column
+ < table_columns - 1)
{
if (handle_ansi && lineno == 0)
printf("%s", ANSI_SGR_BOLD_OFF);
@@ -646,14 +692,17 @@ main(int argc, char** argv)
}
column_start++;
if (format)
- column_start += *(format+current_table_column);
+ column_start += *(format
+ + current_table_column);
else
column_start += format_value;
- if (current_table_column != table_columns-1)
+ if (current_table_column
+ != table_columns - 1)
{
- u8len = u32_char_to_u8(u8ch,
- *table_inner_symbols[
- current_inner_symbol_set][1]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_inner_symbols
+ [current_inner_symbol_set]
+ [1]);
u8ch[u8len] = 0;
printf("%s", u8ch);
current_rune_column++;
@@ -684,21 +733,22 @@ main(int argc, char** argv)
if (handle_ansi && lineno == 0)
printf("%s", ANSI_SGR_BOLD_OFF);
- while (current_table_column < table_columns-1)
+ while (current_table_column < table_columns - 1)
{
while (within_column(column_start))
{
printf(" ");
current_rune_column++;
}
- u8len = u32_char_to_u8(u8ch,
- *table_inner_symbols[
- current_inner_symbol_set][1]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_inner_symbols[current_inner_symbol_set]
+ [1]);
u8ch[u8len] = 0;
printf("%s", u8ch);
column_start++;
if (format)
- column_start += *(format+current_table_column);
+ column_start
+ += *(format + current_table_column);
else
column_start += format_value;
current_table_column++;
@@ -710,8 +760,8 @@ main(int argc, char** argv)
current_rune_column++;
}
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[current_symbol_set][5]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set][5]);
u8ch[u8len] = 0;
printf("%s\n", u8ch);
@@ -726,40 +776,41 @@ main(int argc, char** argv)
if (output_lines)
{
current_table_column = 0;
- current_rune_column = 0;
- column_start = 0;
+ current_rune_column = 0;
+ column_start = 0;
while (current_table_column < table_columns)
{
if (current_rune_column == 0)
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][6]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set][6]);
u8ch[u8len] = 0;
printf("%s", u8ch);
column_start++;
}
else if (!within_column(column_start))
{
- if (current_table_column == table_columns-1)
+ if (current_table_column == table_columns - 1)
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][8]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set]
+ [8]);
u8ch[u8len] = 0;
printf("%s", u8ch);
current_table_column++;
}
else
{
- u8len = u32_char_to_u8(u8ch,
- *table_inner_symbols[
- current_inner_symbol_set][2]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_inner_symbols
+ [current_inner_symbol_set]
+ [2]);
u8ch[u8len] = 0;
printf("%s", u8ch);
column_start++;
if (format)
- column_start += *(format+current_table_column);
+ column_start += *(format
+ + current_table_column);
else
column_start += format_value;
current_table_column++;
@@ -767,9 +818,8 @@ main(int argc, char** argv)
}
else
{
- u8len = u32_char_to_u8(u8ch,
- *table_symbols[
- current_symbol_set][7]);
+ u8len = u32_char_to_u8(u8ch,
+ *table_symbols[current_symbol_set][7]);
u8ch[u8len] = 0;
printf("%s", u8ch);
}
diff --git a/utf8.h b/utf8.h
@@ -3,31 +3,31 @@
#include <stdint.h>
#include <sys/types.h>
-#define XMASK1 0x7F /* b01111111 */
-#define XMASK2 0x1F /* b00011111 */
-#define XMASK3 0x0F /* b00001111 */
-#define XMASK4 0x07 /* b00000111 */
-#define XMASK5 0x03 /* b00000011 */
-#define XMASK6 0x01 /* b00000001 */
+#define XMASK1 0x7F /* b01111111 */
+#define XMASK2 0x1F /* b00011111 */
+#define XMASK3 0x0F /* b00001111 */
+#define XMASK4 0x07 /* b00000111 */
+#define XMASK5 0x03 /* b00000011 */
+#define XMASK6 0x01 /* b00000001 */
-#define XMASKR 0x3F /* b00111111 */
+#define XMASKR 0x3F /* b00111111 */
/*
#define BOUND1 0x0*/
-#define BOUND2 0x80
-#define BOUND3 0x800
-#define BOUND4 0x10000
-#define BOUND5 0x200000
-#define BOUND6 0x800000
-
-#define START1 0x00 /* b0xxxxxxx */
-#define START2 0xC0 /* b110xxxxx */
-#define START3 0xE0 /* b1110xxxx */
-#define START4 0xF0 /* b11110xxx */
-#define START5 0xF8 /* b111110xx */
-#define START6 0xFC /* b1111110x */
-
-#define STARTR 0x80 /* b10xxxxxx */
+#define BOUND2 0x80
+#define BOUND3 0x800
+#define BOUND4 0x10000
+#define BOUND5 0x200000
+#define BOUND6 0x800000
+
+#define START1 0x00 /* b0xxxxxxx */
+#define START2 0xC0 /* b110xxxxx */
+#define START3 0xE0 /* b1110xxxx */
+#define START4 0xF0 /* b11110xxx */
+#define START5 0xF8 /* b111110xx */
+#define START6 0xFC /* b1111110x */
+
+#define STARTR 0x80 /* b10xxxxxx */
typedef uint8_t u8;
typedef uint32_t u32;