+2002-06-29 Ulrich Drepper <drepper@redhat.com>
+
+ * catgets/gencat.c (read_input_file): Handle more than one slash
+ at end of line correctly [PR libc/3926].
+ Based on a patch by Steven Kim <steven.kim@peregrine.com>.
+
+ * catgets/sample.SJIS: Add test case for above bug.
+ * catgets/test-gencat.c: Adjust test code.
+ * catgets/test-gencat.sh: Adjust expected results.
+
+ * elf/do-rel.h (elf_dynamic_do_rel): Avoid overflow in computation
+ to skip relative relocations.
+ Patch by Geoff Keating <geoffk@redhat.com>.
+
2002-05-26 Bruno Haible <bruno@clisp.org>
* iconv/loop.c (STANDARD_FROM_LOOP_ERR_HANDLER): New macro.
++line_number;
/* It the line continued? */
+ continued = 0;
if (buf[act_len - 1] == '\n')
{
--act_len;
- continued = buf[act_len - 1] == '\\';
+
+ /* There might be more than one backslash at the end of
+ the line. Only if there is an odd number of them is
+ the line continued. */
+ if (buf[act_len - 1] == '\\')
+ {
+ int temp_act_len = act_len;
+
+ do
+ {
+ --temp_act_len;
+ continued = !continued;
+ }
+ while (temp_act_len > 0 && buf[temp_act_len - 1] == '\\');
+ }
+
if (continued)
--act_len;
}
- else
- continued = 0;
/* Append to currently selected line. */
obstack_grow (¤t->mem_pool, buf, act_len);
3 sample3:\97\\92è\95\:
4 sample4:TEST\tTAB:
5 sample5:\8b@\94\\t\8f\\8eí\97Þ:
+6 double slash\\
+7 "another line"
$set Another
FOO "message foo"
printf ("%s\n", catgets(catalog, 1, 3, "sample 3"));
printf ("%s\n", catgets(catalog, 1, 4, "sample 4"));
printf ("%s\n", catgets(catalog, 1, 5, "sample 5"));
+ printf ("%s\n", catgets(catalog, 1, 6, "sample 6"));
+ printf ("%s\n", catgets(catalog, 1, 7, "sample 7"));
catclose (catalog);
return 0;
#! /bin/sh
# Test escape character handling in gencat.
-# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
sample3:\97\\92è\95\:
sample4:TEST TAB:
sample5:\8b@\94\ \8f\\8eí\97Þ:
+double slash\
+another line
EOF
res=$?
cat <<EOF |
-#define AnotherSet 0x2 /* *standard input*:11 */
-#define AnotherFOO 0x1 /* *standard input*:12 */
+#define AnotherSet 0x2 /* *standard input*:13 */
+#define AnotherFOO 0x1 /* *standard input*:14 */
EOF
cmp ${common_objpfx}catgets/test-gencat.h - || res=1
@item %p
Either @samp{AM} or @samp{PM}, according to the given time value; or the
corresponding strings for the current locale. Noon is treated as
-@samp{PM} and midnight as @samp{AM}.
+@samp{PM} and midnight as @samp{AM}. In most locales
+@samp{AM}/@samp{PM} format is not supported, in such cases @code{"%p"}
+yields an empty string.
@ignore
We currently have a problem with makeinfo. Write @samp{AM} and @samp{am}
@item %P
Either @samp{am} or @samp{pm}, according to the given time value; or the
corresponding strings for the current locale, printed in lowercase
-characters. Noon is treated as @samp{pm} and midnight as @samp{am}.
+characters. Noon is treated as @samp{pm} and midnight as @samp{am}. In
+most locales @samp{AM}/@samp{PM} format is not supported, in such cases
+@code{"%P"} yields an empty string.
This format is a GNU extension.