Compare commits
No commits in common. "39168765cb87429896c64d141f965c5342b79012" and "7cd933c532c3aa79a293c5b29df7e1327b19c318" have entirely different histories.
39168765cb
...
7cd933c532
1 changed files with 37 additions and 64 deletions
101
smu.c
101
smu.c
|
@ -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 *, const char *, int);
|
static int doamp(const char *begin, const char *end, int newblock);
|
||||||
static int docomment(const char *, const char *, int);
|
static int docomment(const char *begin, const char *end, int newblock);
|
||||||
static int dogtlt(const char *, const char *, int);
|
static int dogtlt(const char *begin, const char *end, int newblock);
|
||||||
static int dohtml(const char *, const char *, int);
|
static int dohtml(const char *begin, const char *end, int newblock);
|
||||||
static int dolineprefix(const char *, const char *, int);
|
static int dolineprefix(const char *begin, const char *end, int newblock);
|
||||||
static int dolink(const char *, const char *, int);
|
static int dolink(const char *begin, const char *end, int newblock);
|
||||||
static int dolist(const char *, const char *, int);
|
static int dolist(const char *begin, const char *end, int newblock);
|
||||||
static int doparagraph(const char *, const char *, int);
|
static int doparagraph(const char *begin, const char *end, int newblock);
|
||||||
static int doreplace(const char *, const char *, int);
|
static int doreplace(const char *begin, const char *end, int newblock);
|
||||||
static int doshortlink(const char *, const char *, int);
|
static int doshortlink(const char *begin, const char *end, int newblock);
|
||||||
static int dosurround(const char *, const char *, int);
|
static int dosurround(const char *begin, const char *end, int newblock);
|
||||||
static int dounderline(const char *, const char *, int);
|
static int dounderline(const char *begin, const char *end, int newblock);
|
||||||
static void *ereallocz(void *, size_t);
|
static void *ereallocz(void *p, size_t size);
|
||||||
static void eprint(const char *, ...);
|
static void eprint(const char *format, ...);
|
||||||
static void hprint(const char *, const char *);
|
static void hprint(const char *begin, const char *end);
|
||||||
static int process(const char *, const char *, int);
|
static int process(const char *begin, const char *end, int isblock);
|
||||||
|
|
||||||
/* 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,9 +211,7 @@ 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;
|
const char *p, *tag, *tagend;
|
||||||
const char *tag;
|
|
||||||
const char *tagend;
|
|
||||||
|
|
||||||
if (nohtml || begin + 2 >= end)
|
if (nohtml || begin + 2 >= end)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -313,18 +311,9 @@ 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;
|
int img, len, sep, parens_depth = 1;
|
||||||
int len;
|
const char *desc, *link, *p, *q, *descend, *linkend;
|
||||||
int sep;
|
const char *title = NULL, *titleend = NULL;
|
||||||
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;
|
||||||
|
@ -409,14 +398,8 @@ 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;
|
unsigned int i, j, indent, run, ul, isblock;
|
||||||
unsigned int j;
|
const char *p, *q;
|
||||||
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;
|
||||||
|
|
||||||
|
@ -537,8 +520,7 @@ 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;
|
unsigned int i, l;
|
||||||
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)
|
||||||
|
@ -557,8 +539,7 @@ 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;
|
const char *p, *c;
|
||||||
const char *c;
|
|
||||||
int ismail = 0;
|
int ismail = 0;
|
||||||
|
|
||||||
if (*begin != '<')
|
if (*begin != '<')
|
||||||
|
@ -604,11 +585,8 @@ 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;
|
unsigned int i, l;
|
||||||
unsigned int l;
|
const char *p, *start, *stop;
|
||||||
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);
|
||||||
|
@ -646,9 +624,7 @@ 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;
|
unsigned int i, j, l;
|
||||||
unsigned int j;
|
|
||||||
unsigned int l;
|
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
||||||
if (!newblock)
|
if (!newblock)
|
||||||
|
@ -686,7 +662,7 @@ void *ereallocz(void *p, size_t size)
|
||||||
res = calloc(1, size);
|
res = calloc(1, size);
|
||||||
|
|
||||||
if (!res)
|
if (!res)
|
||||||
perror(PACKAGE);
|
eprint("fatal: could not malloc() %u bytes\n", size);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -748,26 +724,23 @@ 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;
|
const char *path = "STDIN";
|
||||||
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) 2007 - 2014 Enno Boland, (C) 2025 Enno Tensing\n", VERSION);
|
eprint("simple markup %s (C) Enno Boland\n", VERSION);
|
||||||
goto exit;
|
else if (!strcmp("-n", argv[i]))
|
||||||
} 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) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue