Hello community, here is the log from the commit of package cmark for openSUSE:Factory checked in at 2017-11-04 19:29:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cmark (Old) and /work/SRC/openSUSE:Factory/.cmark.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cmark" Sat Nov 4 19:29:56 2017 rev:8 rq:538801 version:0.28.3 Changes: -------- --- /work/SRC/openSUSE:Factory/cmark/cmark.changes 2017-10-01 17:02:06.760193144 +0200 +++ /work/SRC/openSUSE:Factory/.cmark.new/cmark.changes 2017-11-04 19:30:22.466741836 +0100 @@ -1,0 +2,10 @@ +Fri Nov 3 16:07:37 UTC 2017 - mimi...@gmail.com + +- update to 0.28.3 + * -smart: open quote can never occur right after ] or ) + * Include GNUInstallDirs in src/CMakeLists.txt + * Fix quadratic behavior in finalize + * Don't use CMAKE_INSTALL_LIBDIR to create libcmark.pc + - drop cmark-install_libdir_is_abs.patch + +------------------------------------------------------------------- Old: ---- cmark-0.28.0.tar.gz cmark-install_libdir_is_abs.patch New: ---- cmark-0.28.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cmark.spec ++++++ --- /var/tmp/diff_new_pack.CmBZ9j/_old 2017-11-04 19:30:25.554629010 +0100 +++ /var/tmp/diff_new_pack.CmBZ9j/_new 2017-11-04 19:30:25.558628865 +0100 @@ -16,16 +16,15 @@ # -%define libname libcmark0_28_0 +%define libname libcmark0_28_3 Name: cmark -Version: 0.28.0 +Version: 0.28.3 Release: 0 Summary: CommonMark parsing and rendering library and program in C License: BSD-2-Clause AND MIT AND CC-BY-SA-4.0 Group: Productivity/Text/Utilities Url: https://github.com/jgm/cmark Source: https://github.com/jgm/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz -Patch0: cmark-install_libdir_is_abs.patch BuildRequires: cmake >= 3.0.2 BuildRequires: gcc-c++ BuildRequires: pkgconfig @@ -63,7 +62,6 @@ %prep %setup -q -%patch0 -p1 %build %cmake -DCMARK_TESTS=OFF -DCMARK_STATIC=OFF ++++++ cmark-0.28.0.tar.gz -> cmark-0.28.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/CMakeLists.txt new/cmark-0.28.3/CMakeLists.txt --- old/cmark-0.28.0/CMakeLists.txt 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/CMakeLists.txt 2017-10-21 18:06:00.000000000 +0200 @@ -18,7 +18,7 @@ set(PROJECT_VERSION_MAJOR 0) set(PROJECT_VERSION_MINOR 28) -set(PROJECT_VERSION_PATCH 0) +set(PROJECT_VERSION_PATCH 3) set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} ) option(CMARK_TESTS "Build cmark tests and enable testing" ON) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/README.md new/cmark-0.28.3/README.md --- old/cmark-0.28.0/README.md 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/README.md 2017-10-21 18:06:00.000000000 +0200 @@ -110,9 +110,9 @@ make leakcheck -To reformat source code using `astyle`: +To reformat source code using `clang-format`: - make astyle + make format To run a "fuzz test" against ten long randomly generated inputs: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/changelog.txt new/cmark-0.28.3/changelog.txt --- old/cmark-0.28.0/changelog.txt 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/changelog.txt 2017-10-21 18:06:00.000000000 +0200 @@ -1,4 +1,27 @@ -[0.28] +[0.28.3] + + * Include GNUInstallDirs in src/CMakeLists.txt (Nick Wellnhofer, #240). + This fixes build problems on some cmake versions (#241). + +[0.28.2] + + * Fixed regression in install dest for static library (#238). + Due to a mistake, 0.28.1 installed libcmark.a into include/. + +[0.28.1] + + * `--smart`: open quote can never occur right after `]` or `)` (#227). + * Fix quadratic behavior in `finalize` (Vicent Marti). + * Don't use `CMAKE_INSTALL_LIBDIR` to create `libcmark.pc` (#236). + This wasn't getting set in processing `libcmark.pc.in`, and we + were getting the wrong entry in `libcmark.pc`. + The new approach sets an internal `libdir` variable to + `lib${LIB_SUFFIX}`. This variable is used both to set the + install destination and in the libcmark.pc.in template. + * Update README.md, replace `make astyle` with `make format` + (Nguyễn Thái Ngọc Duy). + +[0.28.0] * Update spec. * Use unsigned integer when shifting (Phil Turnbull). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/CMakeLists.txt new/cmark-0.28.3/src/CMakeLists.txt --- old/cmark-0.28.0/src/CMakeLists.txt 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/CMakeLists.txt 2017-10-21 18:06:00.000000000 +0200 @@ -2,6 +2,8 @@ cmake_policy(SET CMP0063 NEW) endif() +include(GNUInstallDirs) + set(LIBRARY "libcmark") set(STATICLIBRARY "libcmark_static") set(HEADERS @@ -123,19 +125,21 @@ set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) +set(libdir lib${LIB_SUFFIX}) + include (InstallRequiredSystemLibraries) install(TARGETS ${PROGRAM} ${CMARK_INSTALL} EXPORT cmark RUNTIME DESTINATION bin - LIBRARY DESTINATION lib${LIB_SUFFIX} - ARCHIVE DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${libdir} + ARCHIVE DESTINATION ${libdir} ) if(CMARK_SHARED OR CMARK_STATIC) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libcmark.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libcmark.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libcmark.pc - DESTINATION lib${LIB_SUFFIX}/pkgconfig) + DESTINATION ${libdir}/pkgconfig) install(FILES cmark.h @@ -144,7 +148,7 @@ DESTINATION include ) - install(EXPORT cmark DESTINATION lib${LIB_SUFFIX}/cmake) + install(EXPORT cmark DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() # Feature tests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/blocks.c new/cmark-0.28.3/src/blocks.c --- old/cmark-0.28.0/src/blocks.c 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/blocks.c 2017-10-21 18:06:00.000000000 +0200 @@ -255,17 +255,21 @@ switch (S_type(b)) { case CMARK_NODE_PARAGRAPH: - while (cmark_strbuf_at(node_content, 0) == '[' && - (pos = cmark_parse_reference_inline(parser->mem, node_content, - parser->refmap))) { + { + cmark_chunk chunk = {node_content->ptr, node_content->size, 0}; + while (chunk.len && chunk.data[0] == '[' && + (pos = cmark_parse_reference_inline(parser->mem, &chunk, parser->refmap))) { - cmark_strbuf_drop(node_content, pos); + chunk.data += pos; + chunk.len -= pos; } + cmark_strbuf_drop(node_content, (node_content->size - chunk.len)); if (is_blank(node_content, 0)) { // remove blank node (former reference def) cmark_node_free(b); } break; + } case CMARK_NODE_CODE_BLOCK: if (!b->as.code.fenced) { // indented code diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/inlines.c new/cmark-0.28.3/src/inlines.c --- old/cmark-0.28.0/src/inlines.c 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/inlines.c 2017-10-21 18:06:00.000000000 +0200 @@ -72,7 +72,7 @@ static int parse_inline(subject *subj, cmark_node *parent, int options); -static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_chunk *chunk, cmark_reference_map *refmap); static bufsize_t subject_find_special_char(subject *subj, int options); @@ -149,13 +149,11 @@ return link; } -static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer, +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_chunk *chunk, cmark_reference_map *refmap) { int i; e->mem = mem; - e->input.data = buffer->ptr; - e->input.len = buffer->size; - e->input.alloc = 0; + e->input = *chunk; e->pos = 0; e->refmap = refmap; e->last_delim = NULL; @@ -345,7 +343,8 @@ *can_close = right_flanking && (!left_flanking || cmark_utf8proc_is_punctuation(after_char)); } else if (c == '\'' || c == '"') { - *can_open = left_flanking && !right_flanking; + *can_open = left_flanking && !right_flanking && + before_char != ']' && before_char != ')'; *can_close = right_flanking; } else { *can_open = left_flanking; @@ -615,7 +614,7 @@ cmark_node *tmp, *tmpnext, *emph; // calculate the actual number of characters used from this closer - use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1; + use_delims = (closer_num_chars >= 2 && opener_num_chars >= 2) ? 2 : 1; // remove used characters from associated inlines. opener_num_chars -= use_delims; @@ -707,7 +706,7 @@ return result; } - houdini_unescape_html_f(&buf, url->data, url->len); + houdini_unescape_html_f(&buf, url->data, url->len); cmark_strbuf_unescape(&buf); return cmark_chunk_buf_detach(&buf); @@ -821,28 +820,29 @@ return 0; } -static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) { +static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset, + cmark_chunk *output) { bufsize_t i = offset; size_t nb_p = 0; - while (i < input->len) { - if (input->data[i] == '\\' && - i + 1 < input-> len && - cmark_ispunct(input->data[i+1])) - i += 2; - else if (input->data[i] == '(') { - ++nb_p; - ++i; - } else if (input->data[i] == ')') { - if (nb_p == 0) + while (i < input->len) { + if (input->data[i] == '\\' && + i + 1 < input-> len && + cmark_ispunct(input->data[i+1])) + i += 2; + else if (input->data[i] == '(') { + ++nb_p; + ++i; + } else if (input->data[i] == ')') { + if (nb_p == 0) + break; + --nb_p; + ++i; + } else if (cmark_isspace(input->data[i])) break; - --nb_p; - ++i; - } else if (cmark_isspace(input->data[i])) - break; - else - ++i; - } + else + ++i; + } if (i >= input->len) return -1; @@ -854,7 +854,8 @@ return i - offset; } -static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, cmark_chunk *output) { +static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset, + cmark_chunk *output) { bufsize_t i = offset; if (i < input->len && input->data[i] == '<') { @@ -924,7 +925,8 @@ // First, look for an inline link. if (peek_char(subj) == '(' && ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) && - ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, &url_chunk)) > -1)) { + ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps, + &url_chunk)) > -1)) { // try to parse an explicit link: endurl = subj->pos + 1 + sps + n; @@ -1174,7 +1176,8 @@ extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent, cmark_reference_map *refmap, int options) { subject subj; - subject_from_buf(mem, &subj, &parent->content, refmap); + cmark_chunk content = {parent->content.ptr, parent->content.size, 0}; + subject_from_buf(mem, &subj, &content, refmap); cmark_chunk_rtrim(&subj.input); while (!is_eof(&subj) && parse_inline(&subj, parent, options)) @@ -1202,7 +1205,7 @@ // Modify refmap if a reference is encountered. // Return 0 if no reference found, otherwise position of subject // after reference is parsed. -bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input, +bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input, cmark_reference_map *refmap) { subject subj; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/inlines.h new/cmark-0.28.3/src/inlines.h --- old/cmark-0.28.0/src/inlines.h 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/inlines.h 2017-10-21 18:06:00.000000000 +0200 @@ -11,7 +11,7 @@ void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent, cmark_reference_map *refmap, int options); -bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input, +bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input, cmark_reference_map *refmap); #ifdef __cplusplus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/latex.c new/cmark-0.28.3/src/latex.c --- old/cmark-0.28.0/src/latex.c 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/latex.c 2017-10-21 18:06:00.000000000 +0200 @@ -252,24 +252,24 @@ CR(); list_number = cmark_node_get_list_start(node); if (list_number > 1) { - enumlevel = S_get_enumlevel(node); - // latex normally supports only five levels - if (enumlevel >= 1 && enumlevel <= 5) { + enumlevel = S_get_enumlevel(node); + // latex normally supports only five levels + if (enumlevel >= 1 && enumlevel <= 5) { snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d", list_number); LIT("\\setcounter{enum"); - switch(enumlevel) { - case 1: LIT("i"); break; - case 2: LIT("ii"); break; - case 3: LIT("iii"); break; - case 4: LIT("iv"); break; - case 5: LIT("v"); break; - default: LIT("i"); break; + switch (enumlevel) { + case 1: LIT("i"); break; + case 2: LIT("ii"); break; + case 3: LIT("iii"); break; + case 4: LIT("iv"); break; + case 5: LIT("v"); break; + default: LIT("i"); break; } LIT("}{"); OUT(list_number_string, false, NORMAL); LIT("}"); - } + } CR(); } } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/src/libcmark.pc.in new/cmark-0.28.3/src/libcmark.pc.in --- old/cmark-0.28.0/src/libcmark.pc.in 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/src/libcmark.pc.in 2017-10-21 18:06:00.000000000 +0200 @@ -1,6 +1,6 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +libdir=@CMAKE_INSTALL_PREFIX@/@libdir@ includedir=@CMAKE_INSTALL_PREFIX@/include Name: libcmark diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmark-0.28.0/test/smart_punct.txt new/cmark-0.28.3/test/smart_punct.txt --- old/cmark-0.28.0/test/smart_punct.txt 2017-08-02 16:06:54.000000000 +0200 +++ new/cmark-0.28.3/test/smart_punct.txt 2017-10-21 18:06:00.000000000 +0200 @@ -78,6 +78,15 @@ <p>“Second paragraph by same speaker, in fiction.”</p> ```````````````````````````````` +A quote following a `]` or `)` character cannot +be an open quote: + +```````````````````````````````` example +[a]'s b' +. +<p>[a]’s b’</p> +```````````````````````````````` + Quotes that are escaped come out as literal straight quotes: