aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2015-12-14 22:22:29 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2015-12-14 22:22:29 +0000
commit9fe195b9871d38df12aa9c2dcc3d5736f5294e4b (patch)
tree2cbeb9566fe3d0d6c47d3fd2dc5aa40e41aab3a8
parent930dd5ad7723cab4add8e651c47e267f23397467 (diff)
downloadwyslij-po-9fe195b9871d38df12aa9c2dcc3d5736f5294e4b.tar.gz
wyslij-po-9fe195b9871d38df12aa9c2dcc3d5736f5294e4b.tar.bz2
Update
-rw-r--r--ChangeLog6
-rw-r--r--src/po.c23
2 files changed, 21 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 14f72b2..207ff89 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-15 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix compatibility with the recent MU commits.
+
+ * src/po.c (po_header): Use mu_wordsplit to process headers.
+
2014-09-02 Sergey Poznyakoff <gray@gnu.org.ua>
Update for newer gnulib
diff --git a/src/po.c b/src/po.c
index ec6ee20..f64eec1 100644
--- a/src/po.c
+++ b/src/po.c
@@ -185,10 +185,14 @@ po_header (const char *name)
struct po_file pof;
size_t bufsize = 0;
char *buf = NULL;
- char *str = NULL;
- size_t size = 0;
struct obstack stk;
int status;
+ struct mu_wordsplit ws;
+ int wsflags = MU_WRDSF_NOVAR | MU_WRDSF_NOCMD
+ | MU_WRDSF_QUOTE
+ | MU_WRDSF_CESCAPES
+ | MU_WRDSF_NOSPLIT;
+ char *str;
po_open (&pof, name);
if (!po_find_msgid (&pof))
@@ -227,19 +231,22 @@ po_header (const char *name)
}
if (len == 0)
continue;
- if (size < len + 1)
+ if (mu_wordsplit (p, &ws, wsflags))
{
- size = len + 1;
- str = xrealloc (str, size);
+ mu_error (_("cannot split \"%s\": %s"),
+ p, mu_wordsplit_strerror (&ws));
+ exit (1);
}
- mu_wordsplit_c_unquote_copy (str, p, len);
- obstack_grow (&stk, str, strlen (str));
+ wsflags |= MU_WRDSF_REUSE;
+ obstack_grow (&stk, ws.ws_wordv[0], strlen (ws.ws_wordv[0]));
}
obstack_1grow (&stk, '\n');
obstack_1grow (&stk, 0);
po_close (&pof);
- free (str);
+ if (wsflags & MU_WRDSF_REUSE)
+ mu_wordsplit_free (&ws);
+
free (buf);
str = obstack_finish (&stk);

Return to:

Send suggestions and report system problems to the System administrator.