From c199a24feb079bf0f81f8cedcfe55e99c47ac415 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Sun, 21 Jul 1996 06:52:29 +0000 Subject: Sun Jul 21 01:44:39 1996 Miles Bader * locale/programs/locfile.c (write_locale_data): Deal with missing UIO_MAXIOV. * sysdeps/mach/hurd/socket.c (socket): Make TYPE an int. * sysdeps/mach/hurd/socketpair.c (socketpair): Likewise. --- locale/programs/locfile.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'locale') diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c index e225e577d6..69d976160b 100644 --- a/locale/programs/locfile.c +++ b/locale/programs/locfile.c @@ -931,7 +931,7 @@ void write_locale_data (const char *output_path, const char *category, size_t n_elem, struct iovec *vec) { - size_t cnt, step; + size_t cnt, step, maxiov; int fd; char *fname; @@ -959,11 +959,19 @@ write_locale_data (const char *output_path, const char *category, } free (fname); +#ifdef UIO_MAXIOV + maxiov = UIO_MAXIOV; +#else + maxiov = sysconf (_SC_UIO_MAXIOV); +#endif + /* Write the data using writev. But we must take care for the limitation of the implementation. */ for (cnt = 0; cnt < n_elem; cnt += step) { - step = MIN (UIO_MAXIOV, n_elem - cnt); + step = n_elem - cnt; + if (maxiov > 0) + step = MIN (maxiov, step); if (writev (fd, &vec[cnt], step) < 0) { -- cgit v1.2.3