Compare commits

...

2 commits

Author SHA1 Message Date
39168765cb
smu: More cleanup 2025-01-21 21:11:59 +01:00
b83c9c0b07
smu: Cleanup source somewhat 2025-01-21 21:07:50 +01:00

101
smu.c
View file

@ -38,7 +38,7 @@
b[i] = a; \ b[i] = a; \
} while (0) } while (0)
typedef int (*Parser)(const char *, const char *, int); typedef int (*parser)(const char *, const char *, int);
struct tag { struct tag {
char *search; char *search;
int process; int process;
@ -49,25 +49,25 @@ struct tag {
off64_t get_file_size(const char *); off64_t get_file_size(const char *);
char *read_file(const char *, off64_t); char *read_file(const char *, off64_t);
static int doamp(const char *begin, const char *end, int newblock); static int doamp(const char *, const char *, int);
static int docomment(const char *begin, const char *end, int newblock); static int docomment(const char *, const char *, int);
static int dogtlt(const char *begin, const char *end, int newblock); static int dogtlt(const char *, const char *, int);
static int dohtml(const char *begin, const char *end, int newblock); static int dohtml(const char *, const char *, int);
static int dolineprefix(const char *begin, const char *end, int newblock); static int dolineprefix(const char *, const char *, int);
static int dolink(const char *begin, const char *end, int newblock); static int dolink(const char *, const char *, int);
static int dolist(const char *begin, const char *end, int newblock); static int dolist(const char *, const char *, int);
static int doparagraph(const char *begin, const char *end, int newblock); static int doparagraph(const char *, const char *, int);
static int doreplace(const char *begin, const char *end, int newblock); static int doreplace(const char *, const char *, int);
static int doshortlink(const char *begin, const char *end, int newblock); static int doshortlink(const char *, const char *, int);
static int dosurround(const char *begin, const char *end, int newblock); static int dosurround(const char *, const char *, int);
static int dounderline(const char *begin, const char *end, int newblock); static int dounderline(const char *, const char *, int);
static void *ereallocz(void *p, size_t size); static void *ereallocz(void *, size_t);
static void eprint(const char *format, ...); static void eprint(const char *, ...);
static void hprint(const char *begin, const char *end); static void hprint(const char *, const char *);
static int process(const char *begin, const char *end, int isblock); static int process(const char *, const char *, int);
/* list of parsers */ /* list of parsers */
static Parser parsers[] = { dounderline, docomment, dolineprefix, dolist, static parser parsers[] = { dounderline, docomment, dolineprefix, dolist,
doparagraph, dogtlt, dosurround, dolink, doparagraph, dogtlt, dosurround, dolink,
doshortlink, dohtml, doamp, doreplace }; doshortlink, dohtml, doamp, doreplace };
static int nohtml = 0; static int nohtml = 0;
@ -211,7 +211,9 @@ int docomment(const char *begin, const char *end, int newblock)
int dohtml(const char *begin, const char *end, int newblock) int dohtml(const char *begin, const char *end, int newblock)
{ {
const char *p, *tag, *tagend; const char *p;
const char *tag;
const char *tagend;
if (nohtml || begin + 2 >= end) if (nohtml || begin + 2 >= end)
return 0; return 0;
@ -311,9 +313,18 @@ int dolineprefix(const char *begin, const char *end, int newblock)
int dolink(const char *begin, const char *end, int newblock) int dolink(const char *begin, const char *end, int newblock)
{ {
int img, len, sep, parens_depth = 1; int img;
const char *desc, *link, *p, *q, *descend, *linkend; int len;
const char *title = NULL, *titleend = NULL; int sep;
int parens_depth = 1;
const char *desc;
const char *link;
const char *p;
const char *q;
const char *descend;
const char *linkend;
const char *title = NULL;
const char *titleend = NULL;
if (*begin == '[') if (*begin == '[')
img = 0; img = 0;
@ -398,8 +409,14 @@ int dolink(const char *begin, const char *end, int newblock)
int dolist(const char *begin, const char *end, int newblock) int dolist(const char *begin, const char *end, int newblock)
{ {
unsigned int i, j, indent, run, ul, isblock; unsigned int i;
const char *p, *q; unsigned int j;
unsigned int indent;
unsigned int run;
unsigned int ul;
unsigned int isblock;
const char *p;
const char *q;
char *buffer = NULL; char *buffer = NULL;
char marker = 0; char marker = 0;
@ -520,7 +537,8 @@ int doparagraph(const char *begin, const char *end, int newblock)
int doreplace(const char *begin, const char *end, int newblock) int doreplace(const char *begin, const char *end, int newblock)
{ {
unsigned int i, l; unsigned int i;
unsigned int l;
for (i = 0; i < LENGTH(insert); i++) for (i = 0; i < LENGTH(insert); i++)
if (strncmp(insert[i][0], begin, strlen(insert[i][0])) == 0) if (strncmp(insert[i][0], begin, strlen(insert[i][0])) == 0)
@ -539,7 +557,8 @@ int doreplace(const char *begin, const char *end, int newblock)
int doshortlink(const char *begin, const char *end, int newblock) int doshortlink(const char *begin, const char *end, int newblock)
{ {
const char *p, *c; const char *p;
const char *c;
int ismail = 0; int ismail = 0;
if (*begin != '<') if (*begin != '<')
@ -585,8 +604,11 @@ int doshortlink(const char *begin, const char *end, int newblock)
int dosurround(const char *begin, const char *end, int newblock) int dosurround(const char *begin, const char *end, int newblock)
{ {
unsigned int i, l; unsigned int i;
const char *p, *start, *stop; unsigned int l;
const char *p;
const char *start;
const char *stop;
for (i = 0; i < LENGTH(surround); i++) { for (i = 0; i < LENGTH(surround); i++) {
l = strlen(surround[i].search); l = strlen(surround[i].search);
@ -624,7 +646,9 @@ int dosurround(const char *begin, const char *end, int newblock)
int dounderline(const char *begin, const char *end, int newblock) int dounderline(const char *begin, const char *end, int newblock)
{ {
unsigned int i, j, l; unsigned int i;
unsigned int j;
unsigned int l;
const char *p; const char *p;
if (!newblock) if (!newblock)
@ -662,7 +686,7 @@ void *ereallocz(void *p, size_t size)
res = calloc(1, size); res = calloc(1, size);
if (!res) if (!res)
eprint("fatal: could not malloc() %u bytes\n", size); perror(PACKAGE);
return res; return res;
} }
@ -724,23 +748,26 @@ int process(const char *begin, const char *end, int newblock)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
char *buffer = NULL; char *buffer = NULL;
const char *path = "STDIN"; const char *path;
int i; int i;
int ret = EXIT_SUCCESS; int ret = EXIT_SUCCESS;
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
if (!strcmp("-v", argv[i])) if (!strcmp("-v", argv[i])) {
eprint("simple markup %s (C) Enno Boland\n", VERSION); eprint("simple markup %s (C) 2007 - 2014 Enno Boland, (C) 2025 Enno Tensing\n", VERSION);
else if (!strcmp("-n", argv[i])) goto exit;
} else if (!strcmp("-n", argv[i])) {
nohtml = 1; nohtml = 1;
else if (argv[i][0] != '-') } else if (argv[i][0] != '-') {
break; break;
else if (!strcmp("--", argv[i])) { } else if (!strcmp("--", argv[i])) {
i++; i++;
break; break;
} else } else {
eprint("Usage %s [-n] [file]\n -n escape html strictly\n", eprint("Usage %s [-n] [file]\n -n escape html strictly\n",
argv[0]); argv[0]);
goto exit;
}
} }
if (i < argc) { if (i < argc) {