diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 20 | ||||
-rw-r--r-- | src/buffer.c | 3 | ||||
-rw-r--r-- | src/cmark_ctype.c | 2 | ||||
-rw-r--r-- | src/cmark_ctype.h | 13 | ||||
-rw-r--r-- | src/config.h.in | 6 | ||||
-rw-r--r-- | src/html.c | 5 | ||||
-rw-r--r-- | src/main.c | 9 | ||||
-rw-r--r-- | src/man.c | 4 | ||||
-rw-r--r-- | src/xml.c | 5 |
9 files changed, 41 insertions, 26 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 87651bc..b4a0fe8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -47,24 +47,6 @@ set(PROGRAM_SOURCES include_directories(. ${CMAKE_CURRENT_BINARY_DIR}) -set(RE2C re2c) -if (MSVC) - file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} DOS_CURRENT_SOURCE_DIR) - add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/scanners.c - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scanners.re - COMMAND ${RE2C} --case-insensitive -b -i - --no-generation-date - -o ${DOS_CURRENT_SOURCE_DIR}\\scanners.c - ${DOS_CURRENT_SOURCE_DIR}\\scanners.re ) -else(MSVC) - add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/scanners.c - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scanners.re - COMMAND ${RE2C} --case-insensitive -b -i - --no-generation-date - -o ${CMAKE_CURRENT_SOURCE_DIR}/scanners.c - ${CMAKE_CURRENT_SOURCE_DIR}/scanners.re ) -endif(MSVC) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libcmark.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libcmark.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcmark.pc @@ -117,6 +99,7 @@ install(FILES cmark.h ${CMAKE_CURRENT_BINARY_DIR}/cmark_export.h # Feature tests include(CheckIncludeFile) include(CheckCSourceCompiles) +include(CheckSymbolExists) CHECK_INCLUDE_FILE(stdbool.h HAVE_STDBOOL_H) CHECK_C_SOURCE_COMPILES( "int main() { __builtin_expect(0,0); return 0; }" @@ -125,6 +108,7 @@ CHECK_C_SOURCE_COMPILES(" int f(void) __attribute__ (()); int main() { return 0; } " HAVE___ATTRIBUTE__) +CHECK_SYMBOL_EXISTS(va_copy stdarg.h HAVE_VA_COPY) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in diff --git a/src/buffer.c b/src/buffer.c index b508310..87d817b 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5,6 +5,7 @@ #include <stdio.h> #include <stdlib.h> +#include "config.h" #include "cmark_ctype.h" #include "buffer.h" @@ -175,6 +176,8 @@ int cmark_strbuf_vprintf(cmark_strbuf *buf, const char *format, va_list ap) format, args ); + va_end(args); + if (len < 0) { free(buf->ptr); buf->ptr = cmark_strbuf__oom; diff --git a/src/cmark_ctype.c b/src/cmark_ctype.c index 8805b9a..a3871a8 100644 --- a/src/cmark_ctype.c +++ b/src/cmark_ctype.c @@ -1,5 +1,7 @@ #include <stdint.h> +#include "cmark_ctype.h" + /** 1 = space, 2 = punct, 3 = digit, 4 = alpha, 0 = other */ static const int8_t cmark_ctype_class[256] = { diff --git a/src/cmark_ctype.h b/src/cmark_ctype.h index 7423f80..f803946 100644 --- a/src/cmark_ctype.h +++ b/src/cmark_ctype.h @@ -1,3 +1,10 @@ +#ifndef CMARK_CMARK_CTYPE_H +#define CMARK_CMARK_CTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + /** Locale-independent versions of functions from ctype.h. * We want cmark to behave the same no matter what the system locale. */ @@ -9,3 +16,9 @@ int cmark_ispunct(char c); int cmark_isalnum(char c); int cmark_isdigit(char c); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/config.h.in b/src/config.h.in index 5294bc9..c1e9597 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -15,3 +15,9 @@ #else #define CMARK_ATTRIBUTE(list) #endif + +#cmakedefine HAVE_VA_COPY + +#ifndef HAVE_VA_COPY + #define va_copy(dest, src) ((dest) = (src)) +#endif @@ -50,10 +50,9 @@ S_render_sourcepos(cmark_node *node, cmark_strbuf *html, long options) { } static int -S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate, - long options) +S_render_node(cmark_node *node, cmark_event_type ev_type, + struct render_state *state, long options) { - struct render_state *state = vstate; cmark_node *parent; cmark_node *grandparent; cmark_strbuf *html = state->html; @@ -7,6 +7,11 @@ #include "debug.h" #include "bench.h" +#if defined(_WIN32) && !defined(__CYGWIN__) + #include <io.h> + #include <fcntl.h> +#endif + typedef enum { FORMAT_NONE, FORMAT_HTML, @@ -58,6 +63,10 @@ int main(int argc, char *argv[]) writer_format writer = FORMAT_HTML; long options = CMARK_OPT_DEFAULT; +#if defined(_WIN32) && !defined(__CYGWIN__) + _setmode(_fileno(stdout), _O_BINARY); +#endif + parser = cmark_parser_new(); files = (int *)malloc(argc * sizeof(*files)); @@ -43,9 +43,9 @@ struct render_state { }; static int -S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate) +S_render_node(cmark_node *node, cmark_event_type ev_type, + struct render_state *state) { - struct render_state *state = vstate; cmark_node *tmp; cmark_strbuf *man = state->man; int list_number; @@ -35,10 +35,9 @@ static inline void indent(struct render_state *state) } static int -S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate, - long options) +S_render_node(cmark_node *node, cmark_event_type ev_type, + struct render_state *state, long options) { - struct render_state *state = vstate; cmark_strbuf *xml = state->xml; bool literal = false; |