Sync up with MMD upstream.

This commit is contained in:
Michael Sweet 2017-05-01 08:40:24 -04:00
parent 5771dbbaf3
commit 935df35140
3 changed files with 39 additions and 10 deletions

View File

@ -1,4 +1,4 @@
.TH mxml 3 "Mini-XML API" "04/30/17" "Mini-XML API" .TH mxml 3 "Mini-XML API" "05/01/17" "Mini-XML API"
.SH NAME .SH NAME
mxml \- Mini-XML API mxml \- Mini-XML API
.SH INCLUDE FILE .SH INCLUDE FILE

37
mmd.c
View File

@ -32,7 +32,6 @@
*/ */
#include "mmd.h" #include "mmd.h"
#include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
@ -277,6 +276,31 @@ mmd_t * /* O - First node in markdown */
mmdLoad(const char *filename) /* I - File to load */ mmdLoad(const char *filename) /* I - File to load */
{ {
FILE *fp; /* File */ FILE *fp; /* File */
mmd_t *doc; /* Document */
/*
* Open the file and create an empty document...
*/
if ((fp = fopen(filename, "r")) == NULL)
return (NULL);
doc = mmdLoadFile(fp);
fclose(fp);
return (doc);
}
/*
* 'mmdLoadFile()' - Load a markdown file into nodes from a stdio file.
*/
mmd_t * /* O - First node in markdown */
mmdLoadFile(FILE *fp) /* I - File to load */
{
mmd_t *doc, /* Document */ mmd_t *doc, /* Document */
*current, /* Current parent block */ *current, /* Current parent block */
*block = NULL; /* Current block */ *block = NULL; /* Current block */
@ -288,12 +312,9 @@ mmdLoad(const char *filename) /* I - File to load */
/* /*
* Open the file and create an empty document... * Create an empty document...
*/ */
if ((fp = fopen(filename, "r")) == NULL)
return (NULL);
doc = current = mmd_add(NULL, MMD_TYPE_DOCUMENT, 0, NULL, NULL); doc = current = mmd_add(NULL, MMD_TYPE_DOCUMENT, 0, NULL, NULL);
if (!doc) if (!doc)
@ -580,8 +601,6 @@ mmdLoad(const char *filename) /* I - File to load */
mmd_parse_inline(block, lineptr); mmd_parse_inline(block, lineptr);
} }
fclose(fp);
return (doc); return (doc);
} }
@ -782,8 +801,6 @@ mmd_parse_inline(mmd_t *parent, /* I - Parent node */
else else
type = MMD_TYPE_NORMAL_TEXT; type = MMD_TYPE_NORMAL_TEXT;
} }
else
type = MMD_TYPE_NORMAL_TEXT;
if (!*lineptr) if (!*lineptr)
break; break;
@ -803,6 +820,7 @@ mmd_parse_inline(mmd_t *parent, /* I - Parent node */
text = NULL; text = NULL;
whitespace = 0; whitespace = 0;
type = MMD_TYPE_NORMAL_TEXT;
} }
else if (*lineptr == '`' && type == MMD_TYPE_CODE_TEXT) else if (*lineptr == '`' && type == MMD_TYPE_CODE_TEXT)
{ {
@ -811,6 +829,7 @@ mmd_parse_inline(mmd_t *parent, /* I - Parent node */
text = NULL; text = NULL;
whitespace = 0; whitespace = 0;
type = MMD_TYPE_NORMAL_TEXT;
} }
else if (*lineptr == '\\' && lineptr[1]) else if (*lineptr == '\\' && lineptr[1])
{ {

10
mmd.h
View File

@ -34,6 +34,7 @@
* Include necessary headers... * Include necessary headers...
*/ */
# include <stdio.h>
/* /*
@ -82,6 +83,10 @@ typedef struct _mmd_s mmd_t;
* Functions... * Functions...
*/ */
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
extern void mmdFree(mmd_t *node); extern void mmdFree(mmd_t *node);
extern mmd_t *mmdGetFirstChild(mmd_t *node); extern mmd_t *mmdGetFirstChild(mmd_t *node);
extern mmd_t *mmdGetLastChild(mmd_t *node); extern mmd_t *mmdGetLastChild(mmd_t *node);
@ -95,5 +100,10 @@ extern const char *mmdGetURL(mmd_t *node);
extern int mmdGetWhitespace(mmd_t *node); extern int mmdGetWhitespace(mmd_t *node);
extern int mmdIsBlock(mmd_t *node); extern int mmdIsBlock(mmd_t *node);
extern mmd_t *mmdLoad(const char *filename); extern mmd_t *mmdLoad(const char *filename);
extern mmd_t *mmdLoadFile(FILE *fp);
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif /* !MMD_H */ #endif /* !MMD_H */