Michael McConville <mm...@mykolab.com> writes: > attila wrote: >> Ping. >> >> Just tested that the diff works against recentish i386 snap (22 May). >> Patch attached. > > I can't comment on all of the changes, but this builds and runs fine for > me.
Thanks for looking at it, but the upstream has moved on and there's a newer release. I'm working on an update to that instead, and maybe finally get the unit tests working... I'll try to post something soon (today or tomorrow). Pax, -A > >> Index: Makefile >> =================================================================== >> RCS file: /cvs/ports/textproc/multimarkdown/Makefile,v >> retrieving revision 1.2 >> diff -u -p -r1.2 Makefile >> --- Makefile 5 Apr 2015 13:31:15 -0000 1.2 >> +++ Makefile 15 Apr 2016 20:30:02 -0000 >> @@ -1,13 +1,13 @@ >> # $OpenBSD: Makefile,v 1.2 2015/04/05 13:31:15 sthen Exp $ >> >> -V = 4.7.1 >> +V = 5.2.0-1 >> COMMENT = marked-up plain text to formatted document converter >> DISTNAME = ${GH_PROJECT}-${V} >> -PKGNAME = multimarkdown-${V} >> +PKGNAME = multimarkdown-${V:C/-/./} >> CATEGORIES = textproc >> >> GH_ACCOUNT = fletcher >> -GH_PROJECT = MultiMarkdown-4 >> +GH_PROJECT = MultiMarkdown-5 >> GH_TAGNAME = ${V} >> >> HOMEPAGE = http://fletcherpenney.net/multimarkdown/ >> @@ -20,15 +20,19 @@ WANTLIB += c >> >> BUILD_DEPENDS = devel/greg >> >> -USE_GMAKE = Yes >> -ALL_TARGET = ALL >> -MAKE_FLAGS = CFLAGS="${CFLAGS} -include GLibFacade.h >> -DHAVE_ARC4RANDOM" \ >> - GREG=${LOCALBASE}/bin/greg >> +MODULES = devel/cmake >> + >> +CFLAGS += -DHAVE_SRAND_DETERMINISTIC >> + >> +CONFIGURE_ARGS += -DGREG=${LOCALBASE}/bin/greg >> >> # Test files aren't included in distfile. >> NO_TEST = Yes >> >> +pre-configure: >> + touch ${WRKBUILD}/README.html >> + >> do-install: >> - ${INSTALL_PROGRAM} ${WRKSRC}/multimarkdown ${PREFIX}/bin/ >> + ${INSTALL_PROGRAM} ${WRKBUILD}/multimarkdown ${PREFIX}/bin/ >> >> .include <bsd.port.mk> >> Index: distinfo >> =================================================================== >> RCS file: /cvs/ports/textproc/multimarkdown/distinfo,v >> retrieving revision 1.1.1.1 >> diff -u -p -r1.1.1.1 distinfo >> --- distinfo 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ distinfo 15 Apr 2016 20:30:02 -0000 >> @@ -1,2 +1,2 @@ >> -SHA256 (MultiMarkdown-4-4.7.1.tar.gz) = >> gy5dzm+hv/TWfmSsLMJPCSCujZEoDlPqh5I3odQ/SGU= >> -SIZE (MultiMarkdown-4-4.7.1.tar.gz) = 120896 >> +SHA256 (MultiMarkdown-5-5.2.0-1.tar.gz) = >> be3wxbEGZQob8/ZZlHtBei0/S6T2FNyN3VI8RsEsyzI= >> +SIZE (MultiMarkdown-5-5.2.0-1.tar.gz) = 135551 >> Index: patches/patch-CMakeLists_txt >> =================================================================== >> RCS file: patches/patch-CMakeLists_txt >> diff -N patches/patch-CMakeLists_txt >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-CMakeLists_txt 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,14 @@ >> +$OpenBSD$ >> + >> +Use installed greg >> +--- CMakeLists.txt.orig Mon Feb 22 20:05:02 2016 >> ++++ CMakeLists.txt Tue Mar 22 12:45:41 2016 >> +@@ -149,7 +149,7 @@ endif () >> + # Need to build parser.c via greg >> + add_custom_command ( >> + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/parser.c >> +- COMMAND ${PROJECT_SOURCE_DIR}/submodules/greg/greg -o >> ${CMAKE_CURRENT_BINARY_DIR}/parser.c ${PROJECT_SOURCE_DIR}/src/parser.leg >> ++ COMMAND ${GREG} -o ${CMAKE_CURRENT_BINARY_DIR}/parser.c >> ${PROJECT_SOURCE_DIR}/src/parser.leg >> + ) >> + >> + # src_files are the primary files, and will be included in doxygen >> documentation >> Index: patches/patch-Makefile >> =================================================================== >> RCS file: patches/patch-Makefile >> diff -N patches/patch-Makefile >> --- patches/patch-Makefile 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,37 +0,0 @@ >> -$OpenBSD: patch-Makefile,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -Make it possible to pass GREG=/usr/local/bin/greg in on the >> -command line and avoid git submodules. >> - >> ---- Makefile.orig Mon Mar 23 18:21:56 2015 >> -+++ Makefile Mon Mar 23 18:32:22 2015 >> -@@ -32,18 +32,25 @@ ifeq ($(MAKECMDGOALS),static) >> - LDFLAGS += -static -static-libgcc >> - endif >> - >> --GREG= greg/greg >> -+# OUR_GREG: the version of greg in a submodule >> -+# GREG: the path to greg we want to use for parser.leg >> -+# >> -+# This way we can pass GREG=/usr/local/bin/greg in on >> -+# the command line if we have greg installed already. >> - >> -+OUR_GREG=greg/greg >> -+GREG?=$(OUR_GREG) >> -+ >> - ALL : $(PROGRAM) enumMap.txt >> - static : $(PROGRAM) enumMap.txt >> - >> - %.o : %.c parser.h >> - $(CC) -c $(CFLAGS) -o $@ $< >> - >> --parser.c : parser.leg greg/greg parser.h >> -- greg/greg -o parser.c parser.leg >> -+parser.c : parser.leg $(GREG) parser.h >> -+ $(GREG) -o parser.c parser.leg >> - >> --$(GREG): greg >> -+$(OUR_GREG): greg >> - $(MAKE) -C greg >> - >> - $(PROGRAM) : $(OBJS) >> Index: patches/patch-html_c >> =================================================================== >> RCS file: patches/patch-html_c >> diff -N patches/patch-html_c >> --- patches/patch-html_c 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,59 +0,0 @@ >> -$OpenBSD: patch-html_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -Switch to using arc4random(3) everywhere, since they don't really want >> -repeatability (as evidenced by the arguments they pass to srand(3)). >> - >> ---- html.c.orig Mon Mar 9 18:52:39 2015 >> -+++ html.c Sat Mar 21 15:44:10 2015 >> -@@ -112,8 +112,12 @@ void print_html_node(GString *out, node *n, scratch_pa >> - scratch->footnote_para_counter --; >> - if (scratch->footnote_para_counter == 0) { >> - if (scratch->extensions & >> EXT_RANDOM_FOOT) { >> -+#ifdef HAVE_ARC4RANDOM >> -+ random = >> arc4random_uniform(99999) + 1; >> -+#else >> - srand(scratch->random_seed_base >> + scratch->footnote_to_print); >> - random = rand() % 99999 + 1; >> -+#endif >> - } else { >> - random = >> scratch->footnote_to_print; >> - } >> -@@ -574,8 +578,12 @@ void print_html_node(GString *out, node *n, scratch_pa >> - temp_node = node_for_count(scratch->used_notes, lev); >> - >> - if (scratch->extensions & EXT_RANDOM_FOOT) { >> -+#ifdef HAVE_ARC4RANDOM >> -+ random = arc4random_uniform(99999) + 1; >> -+#else >> - srand(scratch->random_seed_base + lev); >> - random = rand() % 99999 + 1; >> -+#endif >> - } else { >> - random = lev; >> - } >> -@@ -628,8 +636,12 @@ void print_html_node(GString *out, node *n, scratch_pa >> - fprintf(stderr, "matching cite found - >> %d\n",lev); >> - #endif >> - if (scratch->extensions & >> EXT_RANDOM_FOOT) { >> -+#ifdef HAVE_ARC4RANDOM >> -+ random = >> arc4random_uniform(99999) + 1; >> -+#else >> - srand(scratch->random_seed_base >> + lev); >> - random = rand() % 99999 + 1; >> -+#endif >> - } else { >> - random = lev; >> - } >> -@@ -901,8 +913,12 @@ void print_html_endnotes(GString *out, scratch_pad *sc >> - pad(out, 1, scratch); >> - >> - if (scratch->extensions & EXT_RANDOM_FOOT) { >> -+#ifdef HAVE_ARC4RANDOM >> -+ random = arc4random_uniform(99999) + 1; >> -+#else >> - srand(scratch->random_seed_base + counter); >> - random = rand() % 99999 + 1; >> -+#endif >> - } else { >> - random = counter; >> - } >> Index: patches/patch-latex_c >> =================================================================== >> RCS file: patches/patch-latex_c >> diff -N patches/patch-latex_c >> --- patches/patch-latex_c 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,29 +0,0 @@ >> -$OpenBSD: patch-latex_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -Switch from strcat(3) to a safer idiom. >> - >> ---- latex.c.orig Mon Mar 9 18:52:39 2015 >> -+++ latex.c Sat Mar 21 15:44:10 2015 >> -@@ -1202,16 +1202,16 @@ void print_latex_url(GString *out, char *str, >> scratch_ >> - char * correct_dimension_units(char *original) { >> - char *result; >> - int i; >> -- >> -+ size_t result_len; >> -+ >> - result = strdup(original); >> -- >> -+ result_len = strlen(result); >> -+ >> - for (i = 0; result[i]; i++) >> - result[i] = tolower(result[i]); >> - >> -- if (strstr(&result[strlen(result)-2],"px")) { >> -- result[strlen(result)-2] = '\0'; >> -- strcat(result, "pt"); >> -- } >> -+ if (strstr(&result[result_len-2],"px")) >> -+ result[result_len-1] = 't'; >> - >> - return result; >> - } >> Index: patches/patch-parse_utilities_c >> =================================================================== >> RCS file: patches/patch-parse_utilities_c >> diff -N patches/patch-parse_utilities_c >> --- patches/patch-parse_utilities_c 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,52 +0,0 @@ >> -$OpenBSD: patch-parse_utilities_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -ifdef out pragmas that don't work under OpenBSD. Use arc4random(3). >> - >> ---- parse_utilities.c.orig Mon Sep 22 12:57:41 2014 >> -+++ parse_utilities.c Wed Jan 7 16:02:19 2015 >> -@@ -22,7 +22,9 @@ >> - #include "parser.h" >> - #include <libgen.h> >> - >> -+#ifndef __OpenBSD__ >> - #pragma mark - Parse Tree >> -+#endif /* __OpenBSD__ */ >> - >> - /* Create a new node in the parse tree */ >> - node * mk_node(int key) { >> -@@ -219,7 +221,9 @@ void append_list(node *new, node *list) { >> - } >> - } >> - >> -+#ifndef __OpenBSD__ >> - #pragma mark - Parser Data >> -+#endif /* __OpenBSD__ */ >> - >> - /* Create parser data - this is where you stash stuff to communicate >> - into and out of the parser */ >> -@@ -250,7 +254,9 @@ void free_parser_data(parser_data *data) { >> - } >> - >> - /* mk_scratch_pad -- store stuff here while exporting the result tree */ >> -+#ifndef HAVE_ARC4RANDOM >> - void ran_start(long seed); >> -+#endif >> - scratch_pad * mk_scratch_pad(unsigned long extensions) { >> - scratch_pad *result = (scratch_pad *)malloc(sizeof(scratch_pad)); >> - result->extensions = extensions; >> -@@ -277,6 +283,7 @@ scratch_pad * mk_scratch_pad(unsigned long extensions) >> - result->table_alignment = NULL; >> - result->table_column = 0; >> - >> -+#ifndef HAVE_ARC4RANDOM >> - if (extensions & EXT_RANDOM_FOOT) { >> - srand((int)time(NULL)); >> - result->random_seed_base = rand() % 32000; >> -@@ -285,6 +292,7 @@ scratch_pad * mk_scratch_pad(unsigned long extensions) >> - result->random_seed_base = 0; >> - } >> - ran_start(310952L); >> -+#endif /* !HAVE_ARC4RANDOM */ >> - >> - result->lyx_para_type = PARA; /* CRC - Simple paragraph */ >> - result->lyx_level = 0; /* CRC - out outside level */ >> Index: patches/patch-parser_leg >> =================================================================== >> RCS file: patches/patch-parser_leg >> diff -N patches/patch-parser_leg >> --- patches/patch-parser_leg 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,19 +0,0 @@ >> -$OpenBSD: patch-parser_leg,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -Switch from sprintf(3) to snprintf(3) >> - >> ---- parser.leg.orig Mon Mar 9 18:52:39 2015 >> -+++ parser.leg Sat Mar 21 15:44:10 2015 >> -@@ -562,8 +562,10 @@ AutoLinkUrl = '<' < [A-Za-z]+ "://" ( !Newline !'>' >> - >> - AutoLinkEmail = '<' ( "mailto:" )? < [-A-Za-z0-9+_./!%~$]+ '@' ( !Newline >> !'>' . )+ > '>' >> - { >> -- char *mailto = malloc(strlen(yytext) + 8); >> -- sprintf(mailto, "mailto:%s", yytext); >> -+ size_t mailto_len = strlen(yytext) + 8; >> -+ char *mailto = malloc(mailto_len); >> -+ assert(mailto); >> -+ assert(snprintf(mailto,mailto_len,"mailto:%s",yytext) < >> mailto_len); >> - $$ = mk_link(str(yytext), NULL, mailto, NULL, NULL); >> - free(mailto); >> - } >> Index: patches/patch-src_html_c >> =================================================================== >> RCS file: patches/patch-src_html_c >> diff -N patches/patch-src_html_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_html_c 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,53 @@ >> +$OpenBSD$ >> + >> +Use srand_deterministic(3) if available. >> +--- src/html.c.orig Wed Mar 16 13:35:47 2016 >> ++++ src/html.c Wed Mar 16 13:42:24 2016 >> +@@ -115,7 +115,11 @@ void print_html_node(GString *out, node *n, scratch_pa >> + scratch->footnote_para_counter --; >> + if (scratch->footnote_para_counter == 0) { >> + if (scratch->extensions & >> EXT_RANDOM_FOOT) { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ >> srand_deterministic(scratch->random_seed_base + scratch->footnote_to_print); >> ++#else >> + srand(scratch->random_seed_base >> + scratch->footnote_to_print); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + random = rand() % 99999 + 1; >> + } else { >> + random = >> scratch->footnote_to_print; >> +@@ -599,7 +603,11 @@ void print_html_node(GString *out, node *n, scratch_pa >> + temp_node = node_for_count(scratch->used_notes, lev); >> + >> + if (scratch->extensions & EXT_RANDOM_FOOT) { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ srand_deterministic(scratch->random_seed_base + >> lev); >> ++#else >> + srand(scratch->random_seed_base + lev); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + random = rand() % 99999 + 1; >> + } else { >> + random = lev; >> +@@ -653,7 +661,11 @@ void print_html_node(GString *out, node *n, scratch_pa >> + fprintf(stderr, "matching cite found - >> %d\n",lev); >> + #endif >> + if (scratch->extensions & >> EXT_RANDOM_FOOT) { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ >> srand_deterministic(scratch->random_seed_base + lev); >> ++#else >> + srand(scratch->random_seed_base >> + lev); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + random = rand() % 99999 + 1; >> + } else { >> + random = lev; >> +@@ -946,7 +958,11 @@ void print_html_endnotes(GString *out, scratch_pad *sc >> + pad(out, 1, scratch); >> + >> + if (scratch->extensions & EXT_RANDOM_FOOT) { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ srand_deterministic(scratch->random_seed_base + >> counter); >> ++#else >> + srand(scratch->random_seed_base + counter); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + random = rand() % 99999 + 1; >> + } else { >> + random = counter; >> Index: patches/patch-src_latex_c >> =================================================================== >> RCS file: patches/patch-src_latex_c >> diff -N patches/patch-src_latex_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_latex_c 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,29 @@ >> +$OpenBSD$ >> + >> +Avoid strcat(3) using similar strategy to patch-src_writer_c. Was also >> +rejected by upstream, keeping to quell ld-time warnings about strcat(3). >> +--- src/latex.c.orig Wed Mar 16 13:44:52 2016 >> ++++ src/latex.c Wed Mar 16 13:48:17 2016 >> +@@ -1218,16 +1218,16 @@ void print_latex_url(GString *out, char *str, >> scratch_ >> + char * correct_dimension_units(char *original) { >> + char *result; >> + int i; >> +- >> ++ size_t result_len; >> ++ >> + result = strdup(original); >> +- >> ++ result_len = strlen(result); >> ++ >> + for (i = 0; result[i]; i++) >> + result[i] = tolower(result[i]); >> + >> +- if (strstr(&result[strlen(result)-2],"px")) { >> +- result[strlen(result)-2] = '\0'; >> +- strcat(result, "pt"); >> +- } >> ++ if (strstr(&result[result_len-2],"px")) >> ++ result[result_len-1] = 't'; >> + >> + return result; >> + } >> Index: patches/patch-src_multimarkdown_c >> =================================================================== >> RCS file: patches/patch-src_multimarkdown_c >> diff -N patches/patch-src_multimarkdown_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_multimarkdown_c 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,32 @@ >> +$OpenBSD$ >> + >> +Use pledge(2) on OpenBSD. Include <string.h> on OpenBSD so we can use >> +strerror(3) if pledge(2) returns an error, as per practice elsewhere >> +in the tree. >> +--- src/multimarkdown.c.orig Mon Feb 22 20:05:02 2016 >> ++++ src/multimarkdown.c Wed Mar 16 14:56:04 2016 >> +@@ -63,6 +63,10 @@ >> + #include "parser.h" >> + #include "transclude.h" >> + #include "version.h" >> ++#ifdef __OpenBSD__ >> ++# include <errno.h> /* errno */ >> ++# include <string.h> /* strerror(3) */ >> ++#endif /* __OpenBSD__ */ >> + >> + /// main() >> + int main(int argc, char **argv) >> +@@ -131,6 +135,13 @@ int main(int argc, char **argv) >> + unsigned long extensions = 0; >> + extensions = extensions | EXT_SMART | EXT_NOTES | EXT_OBFUSCATE; >> + >> ++#ifdef __OpenBSD__ >> ++ if (pledge("stdio rpath wpath cpath", NULL) == -1) { >> ++ fprintf(stderr, "%s: pledge: %s\n", argv[0], strerror(errno)); >> ++ exit(EXIT_FAILURE); >> ++ } >> ++#endif /* __OpenBSD__ */ >> ++ >> + /* process options */ >> + while (1) { >> + int option_index = 0; >> Index: patches/patch-src_parse_utilities_c >> =================================================================== >> RCS file: patches/patch-src_parse_utilities_c >> diff -N patches/patch-src_parse_utilities_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_parse_utilities_c 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,31 @@ >> +$OpenBSD$ >> + >> +Use srand_deterministic(3) on OpenBSD >> +--- src/parse_utilities.c.orig Wed Mar 16 14:30:51 2016 >> ++++ src/parse_utilities.c Wed Mar 16 14:32:10 2016 >> +@@ -267,10 +267,18 @@ scratch_pad * mk_scratch_pad(unsigned long extensions) >> + result->inside_footnote = 0; >> + >> + if (extensions & EXT_RANDOM_FOOT) { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ srand_deterministic((int)time(NULL)); >> ++#else >> + srand((int)time(NULL)); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + result->random_seed_base = rand() % 32000; >> + } else { >> ++#ifdef HAVE_SRAND_DETERMINISTIC >> ++ srand_deterministic(1); >> ++#else >> + srand(1); >> ++#endif /* HAVE_SRAND_DETERMINISTIC */ >> + result->random_seed_base = 0; >> + } >> + ran_start(310952L); >> +@@ -905,4 +913,4 @@ char * my_strndup(const char * source, size_t n) { >> + result[len] = '\0'; >> + >> + return result; >> +-} >> +\ No newline at end of file >> ++} >> Index: patches/patch-src_parser_leg >> =================================================================== >> RCS file: patches/patch-src_parser_leg >> diff -N patches/patch-src_parser_leg >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_parser_leg 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,16 @@ >> +$OpenBSD$ >> + >> +s/sprintf/asprintf/ and die on malloc failure >> +--- src/parser.leg.orig Wed Mar 16 13:59:32 2016 >> ++++ src/parser.leg Wed Mar 16 13:59:00 2016 >> +@@ -612,8 +612,8 @@ AutoLinkUrl = '<' < [A-Za-z]+ "://" ( !Newline !'>' >> + >> + AutoLinkEmail = '<' ( "mailto:" )? < [-A-Za-z0-9+_./!%~$]+ '@' ( !Newline >> !'>' . )+ > '>' >> + { >> +- char *mailto = malloc(strlen(yytext) + 8); >> +- sprintf(mailto, "mailto:%s", yytext); >> ++ char *mailto; >> ++ assert(asprintf(&mailto, "mailto:%s", yytext) >= 7); >> + $$ = mk_link(str(yytext), NULL, mailto, NULL, NULL); >> + free(mailto); >> + } >> Index: patches/patch-src_writer_c >> =================================================================== >> RCS file: patches/patch-src_writer_c >> diff -N patches/patch-src_writer_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ patches/patch-src_writer_c 15 Apr 2016 20:30:02 -0000 >> @@ -0,0 +1,21 @@ >> +$OpenBSD$ >> + >> +Avoid strcat(3). Was rejected by upstream previously, keeping to quell >> +ld-time warnings. >> +--- src/writer.c.orig Wed Mar 16 13:55:05 2016 >> ++++ src/writer.c Wed Mar 16 13:58:02 2016 >> +@@ -696,11 +696,9 @@ char * dimension_for_attribute(char *querystring, node >> + fprintf(stderr, "b\n"); >> + #endif >> + >> +- if (strstr(dimension, "px")) { >> +- ptr = strstr(dimension,"px"); >> +- ptr[0] = '\0'; >> +- strcat(ptr,"pt"); >> +- } >> ++ ptr = strstr(dimension, "px"); >> ++ if (ptr) >> ++ ptr[1] = 't'; /* px -> pt */ >> + >> + result = g_string_new(dimension); >> + >> Index: patches/patch-writer_c >> =================================================================== >> RCS file: patches/patch-writer_c >> diff -N patches/patch-writer_c >> --- patches/patch-writer_c 24 Mar 2015 19:16:13 -0000 1.1.1.1 >> +++ /dev/null 1 Jan 1970 00:00:00 -0000 >> @@ -1,42 +0,0 @@ >> -$OpenBSD: patch-writer_c,v 1.1.1.1 2015/03/24 19:16:13 okan Exp $ >> - >> -Switch from strcat to a safer idiom. >> - >> ---- writer.c.orig Mon Mar 9 18:52:39 2015 >> -+++ writer.c Sat Mar 21 15:44:10 2015 >> -@@ -648,6 +648,7 @@ char * dimension_for_attribute(char *querystring, node >> - int i; >> - char *upper; >> - GString *result; >> -+ size_t dimension_len; >> - >> - attribute = node_for_attribute(querystring, list); >> - if (attribute == NULL) return NULL; >> -@@ -655,6 +656,7 @@ char * dimension_for_attribute(char *querystring, node >> - fprintf(stderr, "a\n"); >> - #endif >> - >> -+ dimension_len = strlen(attribute->children->str); >> - dimension = strdup(attribute->children->str); >> - upper = strdup(attribute->children->str); >> - >> -@@ -667,15 +669,13 @@ char * dimension_for_attribute(char *querystring, node >> - fprintf(stderr, "b\n"); >> - #endif >> - >> -- if (strstr(dimension, "px")) { >> -- ptr = strstr(dimension,"px"); >> -- ptr[0] = '\0'; >> -- strcat(ptr,"pt"); >> -- } >> -+ ptr = strstr(dimension, "px"); >> -+ if (ptr) >> -+ ptr[1] = 't'; >> - >> - result = g_string_new(dimension); >> - >> -- if ((strcmp(dimension,upper) == 0) && (dimension[strlen(dimension) -1] >> != '%')) { >> -+ if ((strcmp(dimension,upper) == 0) && (dimension[dimension_len-1] != >> '%')) { >> - /* no units */ >> - g_string_append_printf(result, "pt"); >> - } -- http://haqistan.net/~attila | att...@stalphonsos.com | 0x62A729CF