table

Помоћни програм из командне линије за форматирање и приказ CSV-а
git clone https://git.sr.ht/~strahinja/table
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 4bd84d27ec94e5d591a4a8d1bdd035796092207e
родитељ 6f6a902010de6749bb20c317915b4d1b212af6ba
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Sat,  6 Jul 2024 14:23:21 +0200

defs.h: Move macros to defs.h; use perror(3)

Diffstat:
Mdefs.h | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
измењених датотека: 1, додавања: 69(+), брисања: 0(-)

diff --git a/defs.h b/defs.h @@ -12,9 +12,78 @@ #define ANSI_SGR_BOLD_ON "\033[1m" #define ANSI_SGR_BOLD_OFF "\033[0m" +#define LEN(x) (sizeof(x) / sizeof(x[0])) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define UNUSED(x) ((void)(x)) +#define ENSURE_SIZE(to, temp, tosize, testsize, fromsize, type) \ + do \ + { \ + if (!to || tosize < testsize) \ + { \ + tosize = fromsize; \ + temp = realloc(to, tosize * sizeof(type)); \ + if (!temp) \ + { \ + perror(PROGRAMNAME ": realloc"); \ + exit(1); \ + } \ + to = temp; \ + } \ + } while (0) + +#define CALLOC(ptr, ptrtype, nmemb) \ + do \ + { \ + ptr = calloc(nmemb, sizeof(ptrtype)); \ + if (!ptr) \ + { \ + perror(PROGRAMNAME ": calloc"); \ + exit(1); \ + } \ + } while (0) + +#define REALLOC(ptr, ptrtype, newsize) \ + do \ + { \ + ptrtype* newptr = realloc(ptr, newsize); \ + if (!newptr) \ + { \ + perror(PROGRAMNAME ": realloc"); \ + exit(1); \ + } \ + ptr = newptr; \ + } while (0) + +/* Copy *parg to *ptoken and increase ptoken */ +#define CHECKCOPY(token, ptoken, token_size, parg) \ + do \ + { \ + if (ptoken + 2 > token + token_size) \ + { \ + size_t old_size = token_size; \ + token_size += BUF_DELTA; \ + REALLOC(token, char, token_size); \ + ptoken = token + old_size - 1; \ + } \ + *ptoken++ = *parg++; \ + } while (0) + +/* Set *pformat to num and increase pformat */ +#define CHECKSET(format, pformat, format_size, num) \ + do \ + { \ + if (pformat + 2 > format + format_size) \ + { \ + size_t old_size = format_size; \ + format_size += BUF_DELTA; \ + REALLOC(format, int, format_size); \ + pformat = format + old_size - 1; \ + } \ + *pformat++ = num; \ + } while (0) + typedef enum { CMD_NONE, CMD_ALIGN,