+1998-10-29 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * manual/locale.texi (Formatting Numbers): Fix strfmon examples.
+
+1998-10-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * sysdeps/generic/bits/select.h (__FD_ZERO): Change '\0' to plain
+ 0, __fd_mask is usually not a char.
+
+1998-10-30 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * sysdeps/unix/sysv/linux/sigpending.c (sigpending): Allow
+ compilation on systems without rt_* syscalls (e.g. on Linux 2.0).
+ * sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise.
+ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigsuspend.c (__sigsuspend): Likewise
+ * sysdeps/unix/sysv/linux/sigqueue.c: Likewise.
+ * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/i386/sigaction.c (__sigaction): Allow
+ compiling on systems without rt_sigaction syscall.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c (__sigaction):
+ Likewise.
+
+1998-10-30 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * time/strptime.c (HERE_D_FMT): Fix typo.
+ Reported by Claus Heine <heine@math1.rwth-aachen.de>, PR libc/842.
+
1998-10-30 Ulrich Drepper <drepper@cygnus.com>
* catgets/Makefile (tests): Add rules to run gencat on test1.msg.
(generate): Add test1.cat and test1.h.
(distribute): Add test1.msg.
+ * catgets/test1.msg: New file.
* catgets/gencat.c: Do a better job in initializing dynamic
memory [PR libc/844].
unsigned int __i; \
__fd_set *__arr = (s); \
for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \
- __FDS_BITS (__arr)[__i] = '\0'; \
+ __FDS_BITS (__arr)[__i] = 0; \
} while (0)
#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
@noindent
The output produced is
@smallexample
-"@@$123.45@@-$123.45@@$12,345.68@@"
+"@@$123.45@@-$567.89@@$12,345.68@@"
@end smallexample
We can notice several things here. First, the width for all formats is
The output this time is:
@smallexample
-"@@ $123.45@@ -$123.45@@ $12,345.68@@"
+"@@ $123.45@@ -$567.89@@ $12,345.68@@"
@end smallexample
Two things stand out. First, all fields have the same width (eleven
The most noticeable change is the use of the alternative style to
represent negative numbers. In financial circles it is often done using
-braces and this is what the @samp{(} flag selected. The fill character
+parentheses and this is what the @samp{(} flag selected. The fill character
is now @samp{0}. Please note that this @samp{0} character is not
regarded as a numeric zero and therefore the first and second number are
not printed using a thousands separator. Since we use in the format the
unsigned int __i; \
__fd_set *__arr = (s); \
for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \
- __FDS_BITS (__arr)[__i] = '\0'; \
+ __FDS_BITS (__arr)[__i] = 0; \
} while (0)
#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
#include "aio_misc.h"
+#ifdef __NR_rt_sigqueueinfo
extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *);
return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
}
+#else
+# include <sysdeps/generic/aio_sigqueue.c>
+#endif
struct old_kernel_sigaction k_newact, k_oldact;
int result;
+#ifdef __NR_rt_sigaction
/* First try the RT signals. */
if (!__libc_missing_rt_sigs)
{
__set_errno (saved_errno);
__libc_missing_rt_sigs = 1;
}
+#endif
if (act)
{
sigpending (set)
sigset_t *set;
{
+#ifdef __NR_rt_pending
/* First try the RT signals. */
if (!__libc_missing_rt_sigs)
{
__set_errno (saved_errno);
__libc_missing_rt_sigs = 1;
}
+#endif
return INLINE_SYSCALL (sigpending, 1, set);
}
const sigset_t *set;
sigset_t *oset;
{
+#ifdef __NR_rt_sigprocmask
/* First try the RT signals. */
if (!__libc_missing_rt_sigs)
{
__set_errno (saved_errno);
__libc_missing_rt_sigs = 1;
}
+#endif
return INLINE_SYSCALL (sigprocmask, 3, how, set, oset);
}
extern int __syscall_rt_sigqueueinfo (int, int, siginfo_t *);
-
+#ifdef __NR_rt_sigqueueinfo
/* Return any pending signal or wait for one for the given time. */
int
__sigqueue (pid, sig, val)
return INLINE_SYSCALL (rt_sigqueueinfo, 3, pid, sig, &info);
}
weak_alias (__sigqueue, sigqueue)
+#else
+# include <sysdeps/generic/sigqueue.c>
+#endif
__sigsuspend (set)
const sigset_t *set;
{
+#ifdef __NR_rt_sigsuspend
/* First try the RT signals. */
if (!__libc_missing_rt_sigs)
{
__set_errno (saved_errno);
__libc_missing_rt_sigs = 1;
}
+#endif
return INLINE_SYSCALL (sigsuspend, 3, 0, 0, set->__val[0]);
}
#include <sysdep.h>
#include <sys/syscall.h>
+#ifdef __NR_rt_sigtimedwait
extern int __syscall_rt_sigtimedwait (const sigset_t *, siginfo_t *,
const struct timespec *, size_t);
return INLINE_SYSCALL (rt_sigtimedwait, 4, set, info, timeout, _NSIG / 8);
}
weak_alias (__sigtimedwait, sigtimedwait)
+#else
+# include <sysdeps/generic/sigtimedwait.c>
+#endif
#include <sysdep.h>
#include <sys/syscall.h>
+#ifdef __NR_rt_sigtimedwait
extern int __syscall_rt_sigtimedwait (const sigset_t *, siginfo_t *,
const struct timespec *, size_t);
return INLINE_SYSCALL (rt_sigtimedwait, 4, set, info, NULL, _NSIG / 8);
}
weak_alias (__sigwaitinfo, sigwaitinfo)
+#else
+# include <sysdeps/generic/sigwaitinfo.c>
+#endif
struct old_kernel_sigaction k_sigact, k_osigact;
int ret;
+#ifdef __NR_rt_sigaction
/* First try the RT signals. */
if (!__libc_missing_rt_sigs)
{
__set_errno (saved_errno);
__libc_missing_rt_sigs = 1;
}
+#endif
/* Magic to tell the kernel we are using "new-style" signals, in that
the signal table is not kept in userspace. Not the same as the
# define month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (MON_1)].string)
# define ab_month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)].string)
# define HERE_D_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_T_FMT)].string)
-# define HERE_D_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_T_FMT)].string)
+# define HERE_D_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_FMT)].string)
# define HERE_AM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (AM_STR)].string)
# define HERE_PM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (PM_STR)].string)
# define HERE_T_FMT_AMPM \