Handle wide oriented stderr stream.
authordrepper <drepper>
Fri, 17 Aug 2001 04:47:56 +0000 (04:47 +0000)
committerdrepper <drepper>
Fri, 17 Aug 2001 04:47:56 +0000 (04:47 +0000)
28 files changed:
argp/argp-fmtstream.c
assert/assert-perr.c
assert/assert.c
gmon/gmon.c
inet/rcmd.c
malloc/obstack.c
misc/err.c
misc/error.c
misc/getpass.c
posix/getopt.c
resolv/res_hconf.c
stdio-common/perror.c
stdio-common/psignal.c
stdlib/fmtmsg.c
sunrpc/auth_unix.c
sunrpc/clnt_perr.c
sunrpc/clnt_tcp.c
sunrpc/clnt_udp.c
sunrpc/clnt_unix.c
sunrpc/svc_simple.c
sunrpc/svc_tcp.c
sunrpc/svc_udp.c
sunrpc/svc_unix.c
sunrpc/xdr.c
sunrpc/xdr_array.c
sunrpc/xdr_rec.c
sunrpc/xdr_ref.c
sysdeps/generic/wordexp.c

index 9c029c2..fca89a3 100644 (file)
@@ -1,5 +1,5 @@
 /* Word-wrapping and line-truncating streams
-   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Miles Bader <miles@gnu.ai.mit.edu>.
 
@@ -41,6 +41,7 @@
 #endif
 
 #if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/libioP.h>
 # define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a)
 #endif
@@ -58,8 +59,10 @@ argp_fmtstream_t
 __argp_make_fmtstream (FILE *stream,
                       size_t lmargin, size_t rmargin, ssize_t wmargin)
 {
-  argp_fmtstream_t fs = malloc (sizeof (struct argp_fmtstream));
-  if (fs)
+  argp_fmtstream_t fs;
+
+  fs = (struct argp_fmtstream *) malloc (sizeof (struct argp_fmtstream));
+  if (fs != NULL)
     {
       fs->stream = stream;
 
@@ -69,7 +72,7 @@ __argp_make_fmtstream (FILE *stream,
       fs->point_col = 0;
       fs->point_offs = 0;
 
-      fs->buf = malloc (INIT_BUF_SIZE);
+      fs->buf = (char *) malloc (INIT_BUF_SIZE);
       if (! fs->buf)
        {
          free (fs);
@@ -94,7 +97,14 @@ __argp_fmtstream_free (argp_fmtstream_t fs)
 {
   __argp_fmtstream_update (fs);
   if (fs->p > fs->buf)
-    fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
+    {
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (fs->stream, 0) > 0)
+       fwprintf (fs->stream, L"%.*s", (int) (fs->p - fs->buf), fs->buf);
+      else
+#endif
+       fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
+    }
   free (fs->buf);
   free (fs);
 }
@@ -134,7 +144,14 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
              /* No buffer space for spaces.  Must flush.  */
              size_t i;
              for (i = 0; i < pad; i++)
-               putc_unlocked (' ', fs->stream);
+               {
+#ifdef USE_IN_LIBIO
+                 if (_IO_fwide (fs->stream, 0) > 0)
+                   putwc_unlocked (L' ', fs->stream);
+                 else
+#endif
+                   putc_unlocked (' ', fs->stream);
+               }
            }
          fs->point_col = pad;
        }
@@ -267,9 +284,17 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
              else
                /* Output the first line so we can use the space.  */
                {
-                 if (nl > fs->buf)
-                   fwrite_unlocked (fs->buf, 1, nl - fs->buf, fs->stream);
-                 putc_unlocked ('\n', fs->stream);
+#ifdef USE_IN_LIBIO
+                 if (_IO_fwide (fs->stream, 0) > 0)
+                   fwprintf (fs->stream, L"%.*s\n",
+                             (int) (nl - fs->buf), fs->buf);
+                 else
+#endif
+                   {
+                     if (nl > fs->buf)
+                       fwrite_unlocked (fs->buf, 1, nl - fs->buf, fs->stream);
+                     putc_unlocked ('\n', fs->stream);
+                   }
                  len += buf - fs->buf;
                  nl = buf = fs->buf;
                }
@@ -286,7 +311,12 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
              *nl++ = ' ';
          else
            for (i = 0; i < fs->wmargin; ++i)
-             putc_unlocked (' ', fs->stream);
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (fs->stream, 0) > 0)
+               putwc_unlocked (L' ', fs->stream);
+             else
+#endif
+               putc_unlocked (' ', fs->stream);
 
          /* Copy the tail of the original buffer into the current buffer
             position.  */
@@ -323,7 +353,15 @@ __argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount)
       /* Flush FS's buffer.  */
       __argp_fmtstream_update (fs);
 
-      wrote = fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (fs->stream, 0) > 0)
+       {
+         __fwprintf (fs->stream, L"%.*s", (int) (fs->p - fs->buf), fs->buf);
+         wrote = fs->p - fs->buf;
+       }
+      else
+#endif
+       wrote = fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
       if (wrote == fs->p - fs->buf)
        {
          fs->p = fs->buf;
index 436a9ce..597ac5e 100644 (file)
    02111-1307 USA.  */
 
 #include <assert.h>
+#include <libintl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sysdep.h>
-#include <libintl.h>
 
 
 extern const char *__progname;
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fflush(s) _IO_fflush (s)
 #endif
@@ -46,17 +47,31 @@ __assert_perror_fail (int errnum,
                      const char *function)
 {
   char errbuf[1024];
+  char *buf;
+
 #ifdef FATAL_PREPARE
   FATAL_PREPARE;
 #endif
 
+  (void) __asprintf (&buf, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"),
+                    __progname, __progname[0] ? ": " : "",
+                    file, line,
+                    function ? function : "", function ? ": " : "",
+                    __strerror_r (errnum, errbuf, sizeof errbuf));
+
   /* Print the message.  */
-  (void) fprintf (stderr, _("%s%s%s:%u: %s%sUnexpected error: %s.\n"),
-                 __progname, __progname[0] ? ": " : "",
-                 file, line,
-                 function ? function : "", function ? ": " : "",
-                 __strerror_r (errnum, errbuf, sizeof errbuf));
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) __fwprintf (stderr, L"%s", buf);
+  else
+#endif
+    (void) fputs (buf, stderr);
+
   (void) fflush (stderr);
 
+  /* We have to free the buffer since the appplication might catch the
+     SIGABRT.  */
+  free (buf);
+
   abort ();
 }
index 81ad080..df38245 100644 (file)
    02111-1307 USA.  */
 
 #include <assert.h>
+#include <libintl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sysdep.h>
-#include <libintl.h>
 
 
 extern const char *__progname;
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fflush(s) _IO_fflush (s)
 #endif
@@ -44,17 +45,31 @@ void
 __assert_fail (const char *assertion, const char *file, unsigned int line,
               const char *function)
 {
+  char *buf;
+
 #ifdef FATAL_PREPARE
   FATAL_PREPARE;
 #endif
 
+  (void) __asprintf (&buf, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"),
+                    __progname, __progname[0] ? ": " : "",
+                    file, line,
+                    function ? function : "", function ? ": " : "",
+                    assertion);
+
   /* Print the message.  */
-  (void) fprintf (stderr, _("%s%s%s:%u: %s%sAssertion `%s' failed.\n"),
-                 __progname, __progname[0] ? ": " : "",
-                 file, line,
-                 function ? function : "", function ? ": " : "",
-                 assertion);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) __fwprintf (stderr, L"%s", buf);
+  else
+#endif
+    (void) fputs (buf, stderr);
+
   (void) fflush (stderr);
 
+  /* We have to free the buffer since the appplication might catch the
+     SIGABRT.  */
+  free (buf);
+
   abort ();
 }
index 8c8906e..c8923ab 100644 (file)
@@ -331,8 +331,14 @@ write_gmon (void)
          {
            char buf[300];
            int errnum = errno;
-           fprintf (stderr, "_mcleanup: gmon.out: %s\n",
-                    __strerror_r (errnum, buf, sizeof buf));
+#ifdef USE_IN_LIBIO
+           if (_IO_fwide (stderr, 0) > 0)
+             __fwprintf (stderr, L"_mcleanup: gmon.out: %s\n",
+                         __strerror_r (errnum, buf, sizeof buf));
+           else
+#endif
+             fprintf (stderr, "_mcleanup: gmon.out: %s\n",
+                      __strerror_r (errnum, buf, sizeof buf));
            return;
          }
       }
index de00bfa..7d974f3 100644 (file)
@@ -80,6 +80,9 @@ static char sccsid[] = "@(#)rcmd.c    8.3 (Berkeley) 3/26/94";
 #include <string.h>
 #include <libintl.h>
 #include <stdlib.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 
 int __ivaliduser (FILE *, u_int32_t, const char *, const char *);
@@ -133,8 +136,14 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
        (void)__snprintf(num, sizeof(num), "%d", ntohs(rport));
        error = getaddrinfo(*ahost, num, &hints, &res);
        if (error) {
-           fprintf(stderr, "rcmd: getaddrinfo: %s\n",
-                   gai_strerror(error));
+#ifdef USE_IN_LIBIO
+               if (_IO_fwide (stderr, 0) > 0)
+                       __fwprintf(stderr, L"rcmd: getaddrinfo: %s\n",
+                                  gai_strerror(error));
+               else
+#endif
+                       fprintf(stderr, "rcmd: getaddrinfo: %s\n",
+                               gai_strerror(error));
                 return (-1);
        }
 
@@ -152,13 +161,28 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
        refused = 0;
        oldmask = __sigblock(sigmask(SIGURG));
        for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
+               char errbuf[200];
+
                s = rresvport_af(&lport, ai->ai_family);
                if (s < 0) {
-                       if (errno == EAGAIN)
-                               fprintf(stderr,
-                                       _("rcmd: socket: All ports in use\n"));
-                       else
-                               fprintf(stderr, "rcmd: socket: %m\n");
+                       if (errno == EAGAIN) {
+#ifdef USE_IN_LIBIO
+                               if (_IO_fwide (stderr, 0) > 0)
+                                       __fwprintf(stderr, L"%s",
+                                                  _("rcmd: socket: All ports in use\n"));
+                               else
+#endif
+                                       fputs(_("rcmd: socket: All ports in use\n"),
+                                             stderr);
+                       } else {
+#ifdef USE_IN_LIBIO
+                               if (_IO_fwide (stderr, 0) > 0)
+                                       __fwprintf(stderr,
+                                                  L"rcmd: socket: %m\n");
+                               else
+#endif
+                                       fprintf(stderr, "rcmd: socket: %m\n");
+                       }
                        __sigsetmask(oldmask);
                        freeaddrinfo(res);
                        return -1;
@@ -175,12 +199,20 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                        refused = 1;
                if (ai->ai_next != NULL) {
                        int oerrno = errno;
+                       char *buf = NULL;
 
                        getnameinfo(ai->ai_addr, ai->ai_addrlen,
                                    paddr, sizeof(paddr),
                                    NULL, 0,
                                    NI_NUMERICHOST);
-                       fprintf(stderr, "connect to address %s: ", paddr);
+
+                       asprintf (&buf, _("connect to address %s: "), paddr);
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               __fwprintf(stderr, L"%s", buf);
+                       else
+#endif
+                               fputs (buf, stderr);
                        __set_errno (oerrno);
                        perror(0);
                        ai = ai->ai_next;
@@ -188,7 +220,14 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                                    paddr, sizeof(paddr),
                                    NULL, 0,
                                    NI_NUMERICHOST);
-                       fprintf(stderr, "Trying %s...\n", paddr);
+                       asprintf (&buf, _("Trying %s...\n"), paddr);
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               __fwprintf (stderr, L"%s", buf);
+                       else
+#endif
+                               fputs (buf, stderr);
+                       free (buf);
                        continue;
                }
                if (refused && timo <= 16) {
@@ -199,7 +238,16 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                        continue;
                }
                freeaddrinfo(res);
-               (void)fprintf(stderr, "%s: %s\n", *ahost, strerror(errno));
+#ifdef USE_IN_LIBIO
+               if (_IO_fwide (stderr, 0) > 0)
+                       (void)__fwprintf(stderr, L"%s: %s\n", *ahost,
+                                        __strerror_r(errno,
+                                                     errbuf, sizeof (errbuf)));
+               else
+#endif
+                       (void)fprintf(stderr, "%s: %s\n", *ahost,
+                                     __strerror_r(errno,
+                                                  errbuf, sizeof (errbuf)));
                __sigsetmask(oldmask);
                return -1;
        }
@@ -217,8 +265,17 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                listen(s2, 1);
                (void)__snprintf(num, sizeof(num), "%d", lport);
                if (__write(s, num, strlen(num)+1) != (ssize_t)strlen(num)+1) {
-                       (void)fprintf(stderr,
-                           _("rcmd: write (setting up stderr): %m\n"));
+                       char *buf = NULL;
+
+                       asprintf (&buf,
+                                 _("rcmd: write (setting up stderr): %m\n"));
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               __fwprintf(stderr, L"%s", buf);
+                       else
+#endif
+                               fputs (buf, stderr);
+                       free (buf);
                        (void)__close(s2);
                        goto bad;
                }
@@ -226,12 +283,21 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                pfd[1].fd = s2;
                __set_errno (0);
                if (__poll (pfd, 2, -1) < 1 || (pfd[1].revents & POLLIN) == 0){
+                       char *buf = NULL;
+
                        if (errno != 0)
-                               (void)fprintf(stderr,
+                               asprintf(&buf,
                                  _("rcmd: poll (setting up stderr): %m\n"));
                        else
-                               (void)fprintf(stderr,
+                               asprintf(&buf,
                             _("poll: protocol failure in circuit setup\n"));
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               __fwprintf (stderr, L"%s", buf);
+                       else
+#endif
+                               fputs (buf, stderr);
+                       free  (buf);
                        (void)__close(s2);
                        goto bad;
                }
@@ -249,16 +315,31 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
                }
                (void)__close(s2);
                if (s3 < 0) {
-                       (void)fprintf(stderr,
-                           "rcmd: accept: %m\n");
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               (void)__fwprintf(stderr,
+                                                L"rcmd: accept: %m\n");
+                       else
+#endif
+                               (void)fprintf(stderr,
+                                             "rcmd: accept: %m\n");
                        lport = 0;
                        goto bad;
                }
                *fd2p = s3;
 
                if (rport >= IPPORT_RESERVED || rport < IPPORT_RESERVED / 2){
-                       (void)fprintf(stderr,
-                       _("socket: protocol failure in circuit setup\n"));
+                       char *buf = NULL;
+
+                       asprintf(&buf,
+                            _("socket: protocol failure in circuit setup\n"));
+#ifdef USE_IN_LIBIO
+                       if (_IO_fwide (stderr, 0) > 0)
+                               __fwprintf (stderr, L"%s", buf);
+                       else
+#endif
+                               fputs (buf, stderr);
+                       free (buf);
                        goto bad2;
                }
        }
@@ -267,11 +348,19 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
        (void)__write(s, cmd, strlen(cmd)+1);
        n = __read(s, &c, 1);
        if (n != 1) {
+               char *buf = NULL;
+
                if (n == 0)
-                       (void)fprintf(stderr, _("rcmd: %s: short read"),
-                                     *ahost);
+                       asprintf(&buf, _("rcmd: %s: short read"), *ahost);
+               else
+                       asprintf(&buf, "rcmd: %s: %m\n", *ahost);
+#ifdef USE_IN_LIBIO
+               if (_IO_fwide (stderr, 0) > 0)
+                       __fwprintf (stderr, L"%s", buf);
                else
-                       (void)fprintf(stderr, "rcmd: %s: %m\n", *ahost);
+#endif
+                       fputs (buf, stderr);
+               free (buf);
                goto bad2;
        }
        if (c != 0) {
index dcc5cce..2e50397 100644 (file)
@@ -481,8 +481,15 @@ static void
 __attribute__ ((noreturn))
 print_and_abort ()
 {
-  fputs (_("memory exhausted"), stderr);
-  fputc ('\n', stderr);
+#if defined _LIBC && defined USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    __fwprintf (stderr, L"%s\n", _("memory exhausted"));
+  else
+#endif
+    {
+      fputs (_("memory exhausted"), stderr);
+      fputc ('\n', stderr);
+    }
   exit (obstack_exit_failure);
 }
 \f
index dc7025c..24b615b 100644 (file)
@@ -83,7 +83,7 @@ convert_and_print (const char *format, __gnuc_va_list ap)
     /* The string cannot be converted.  */
     wformat = (wchar_t *) L"???";
 
-  vfwprintf (stderr, wformat, ap);
+  __vfwprintf (stderr, wformat, ap);
 }
 #endif
 
@@ -94,7 +94,7 @@ vwarnx (const char *format, __gnuc_va_list ap)
 #ifdef USE_IN_LIBIO
   if (_IO_fwide (stderr, 0) > 0)
     {
-      fwprintf (stderr, L"%s: ", __progname);
+      __fwprintf (stderr, L"%s: ", __progname);
       convert_and_print (format, ap);
       putwc_unlocked (L'\n', stderr);
     }
@@ -118,14 +118,14 @@ vwarn (const char *format, __gnuc_va_list ap)
 #ifdef USE_IN_LIBIO
   if (_IO_fwide (stderr, 0) > 0)
     {
-      fwprintf (stderr, L"%s: ", __progname);
+      __fwprintf (stderr, L"%s: ", __progname);
       if (format)
        {
          convert_and_print (format, ap);
          fputws_unlocked (L": ", stderr);
        }
       __set_errno (error);
-      fwprintf (stderr, L"%m\n");
+      __fwprintf (stderr, L"%m\n");
     }
   else
 #endif
index 40b9498..86d49a5 100644 (file)
@@ -164,7 +164,7 @@ error_tail (int status, int errnum, const char *message, va_list args)
        /* The string cannot be converted.  */
        wmessage = (wchar_t *) L"???";
 
-      vfwprintf (stderr, wmessage, args);
+      __vfwprintf (stderr, wmessage, args);
     }
   else
 #  endif
@@ -182,7 +182,7 @@ error_tail (int status, int errnum, const char *message, va_list args)
       char *s = __strerror_r (errnum, errbuf, sizeof errbuf);
 # ifdef _LIBC
       if (_IO_fwide (stderr, 0) > 0)
-       fwprintf (stderr, L": %s", s);
+       __fwprintf (stderr, L": %s", s);
       else
 # endif
        fprintf (stderr, ": %s", s);
@@ -233,7 +233,7 @@ error (status, errnum, message, va_alist)
     {
 #ifdef _LIBC
       if (_IO_fwide (stderr, 0) > 0)
-       fwprintf (stderr, L"%s: ", program_name);
+       __fwprintf (stderr, L"%s: ", program_name);
       else
 #endif
        fprintf (stderr, "%s: ", program_name);
@@ -305,7 +305,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
     {
 #ifdef _LIBC
       if (_IO_fwide (stderr, 0) > 0)
-       fwprintf (stderr, L"%s: ", program_name);
+       __fwprintf (stderr, L"%s: ", program_name);
       else
 #endif
        fprintf (stderr, "%s:", program_name);
@@ -315,7 +315,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
     {
 #ifdef _LIBC
       if (_IO_fwide (stderr, 0) > 0)
-       fwprintf (stderr, L"%s:%d: ", file_name, line_number);
+       __fwprintf (stderr, L"%s:%d: ", file_name, line_number);
       else
 #endif
        fprintf (stderr, "%s:%d: ", file_name, line_number);
index 04ac12a..c392221 100644 (file)
@@ -79,7 +79,12 @@ getpass (prompt)
     tty_changed = 0;
 
   /* Write the prompt.  */
-  fputs_unlocked (prompt, out);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (out, 0) > 0)
+    __fwprintf (out, L"%s", prompt);
+  else
+#endif
+    fputs_unlocked (prompt, out);
   fflush_unlocked (out);
 
   /* Read the password.  */
@@ -93,8 +98,15 @@ getpass (prompt)
          /* Remove the newline.  */
          buf[nread - 1] = '\0';
          if (tty_changed)
-           /* Write the newline that was not echoed.  */
-           putc_unlocked ('\n', out);
+           {
+             /* Write the newline that was not echoed.  */
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (out, 0) > 0)
+               putwc_unlocked (L'\n', out);
+             else
+#endif
+               putc_unlocked ('\n', out);
+           }
        }
     }
 
index 9bafa45..df7127e 100644 (file)
@@ -86,6 +86,9 @@
 # else
 #  define _(msgid)     (msgid)
 # endif
+# if defined _LIBC && defined USE_IN_LIBIO
+#  include <wchar.h>
+# endif
 #endif
 
 /* This version of `getopt' appears to the caller like standard Unix `getopt'
@@ -678,8 +681,24 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
       if (ambig && !exact)
        {
          if (print_errors)
-           fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
-                    argv[0], argv[optind]);
+           {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+
+             __asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+                         argv[0], argv[optind]);
+
+             if (_IO_fwide (stderr, 0) > 0)
+               __fwprintf (stderr, L"%s", buf);
+             else
+               fputs (buf, stderr);
+
+             free (buf);
+#else
+             fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                      argv[0], argv[optind]);
+#endif
+           }
          nextchar += strlen (nextchar);
          optind++;
          optopt = 0;
@@ -700,16 +719,46 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
                {
                  if (print_errors)
                    {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+#endif
+
                      if (argv[optind - 1][1] == '-')
-                       /* --option */
-                       fprintf (stderr,
-                                _("%s: option `--%s' doesn't allow an argument\n"),
-                                argv[0], pfound->name);
+                       {
+                         /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                     argv[0], pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+                                  argv[0], pfound->name);
+#endif
+                       }
                      else
-                       /* +option or -option */
-                       fprintf (stderr,
-                                _("%s: option `%c%s' doesn't allow an argument\n"),
-                                argv[0], argv[optind - 1][0], pfound->name);
+                       {
+                         /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                         __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                     argv[0], argv[optind - 1][0],
+                                     pfound->name);
+#else
+                         fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+                                  argv[0], argv[optind - 1][0], pfound->name);
+#endif
+                       }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+                     if (_IO_fwide (stderr, 0) > 0)
+                       __fwprintf (stderr, L"%s", buf);
+                     else
+                       fputs (buf, stderr);
+
+                     free (buf);
+#endif
                    }
 
                  nextchar += strlen (nextchar);
@@ -725,9 +774,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
              else
                {
                  if (print_errors)
-                   fprintf (stderr,
-                          _("%s: option `%s' requires an argument\n"),
-                          argv[0], argv[optind - 1]);
+                   {
+#if defined _LIBC && defined USE_IN_LIBIO
+                     char *buf;
+
+                     __asprintf (&buf,
+                                 _("%s: option `%s' requires an argument\n"),
+                                 argv[0], argv[optind - 1]);
+
+                     if (_IO_fwide (stderr, 0) > 0)
+                       __fwprintf (stderr, L"%s", buf);
+                     else
+                       fputs (buf, stderr);
+
+                     free (buf);
+#else
+                     fprintf (stderr,
+                              _("%s: option `%s' requires an argument\n"),
+                              argv[0], argv[optind - 1]);
+#endif
+                   }
                  nextchar += strlen (nextchar);
                  optopt = pfound->val;
                  return optstring[0] == ':' ? ':' : '?';
@@ -753,14 +819,41 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
        {
          if (print_errors)
            {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+#endif
+
              if (argv[optind][1] == '-')
-               /* --option */
-               fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
-                        argv[0], nextchar);
+               {
+                 /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+                             argv[0], nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                          argv[0], nextchar);
+#endif
+               }
+             else
+               {
+                 /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+                 __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+                             argv[0], argv[optind][0], nextchar);
+#else
+                 fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                          argv[0], argv[optind][0], nextchar);
+#endif
+               }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+             if (_IO_fwide (stderr, 0) > 0)
+               __fwprintf (stderr, L"%s", buf);
              else
-               /* +option or -option */
-               fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
-                        argv[0], argv[optind][0], nextchar);
+               fputs (buf, stderr);
+
+             free (buf);
+#endif
            }
          nextchar = (char *) "";
          optind++;
@@ -783,13 +876,38 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
       {
        if (print_errors)
          {
+#if defined _LIBC && defined USE_IN_LIBIO
+             char *buf;
+#endif
+
            if (posixly_correct)
-             /* 1003.2 specifies the format of this message.  */
-             fprintf (stderr, _("%s: illegal option -- %c\n"),
-                      argv[0], c);
+             {
+               /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               __asprintf (&buf, _("%s: illegal option -- %c\n"),
+                           argv[0], c);
+#else
+               fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+             }
            else
-             fprintf (stderr, _("%s: invalid option -- %c\n"),
-                      argv[0], c);
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               __asprintf (&buf, _("%s: invalid option -- %c\n"),
+                           argv[0], c);
+#else
+               fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+             }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+           if (_IO_fwide (stderr, 0) > 0)
+             __fwprintf (stderr, L"%s", buf);
+           else
+             fputs (buf, stderr);
+
+           free (buf);
+#endif
          }
        optopt = c;
        return '?';
@@ -818,8 +936,22 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
            if (print_errors)
              {
                /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               __asprintf (&buf, _("%s: option requires an argument -- %c\n"),
+                           argv[0], c);
+
+               if (_IO_fwide (stderr, 0) > 0)
+                 __fwprintf (stderr, L"%s", buf);
+               else
+                 fputs (buf, stderr);
+
+               free (buf);
+#else
                fprintf (stderr, _("%s: option requires an argument -- %c\n"),
                         argv[0], c);
+#endif
              }
            optopt = c;
            if (optstring[0] == ':')
@@ -865,8 +997,24 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
        if (ambig && !exact)
          {
            if (print_errors)
-             fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
-                      argv[0], argv[optind]);
+             {
+#if defined _LIBC && defined USE_IN_LIBIO
+               char *buf;
+
+               __asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+                           argv[0], argv[optind]);
+
+               if (_IO_fwide (stderr, 0) > 0)
+                 __fwprintf (stderr, L"%s", buf);
+               else
+                 fputs (buf, stderr);
+
+               free (buf);
+#else
+               fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                        argv[0], argv[optind]);
+#endif
+             }
            nextchar += strlen (nextchar);
            optind++;
            return '?';
@@ -883,9 +1031,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
                else
                  {
                    if (print_errors)
-                     fprintf (stderr, _("\
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       __asprintf (&buf, _("\
 %s: option `-W %s' doesn't allow an argument\n"),
-                              argv[0], pfound->name);
+                                   argv[0], pfound->name);
+
+                       if (_IO_fwide (stderr, 0) > 0)
+                         __fwprintf (stderr, L"%s", buf);
+                       else
+                         fputs (buf, stderr);
+
+                       free (buf);
+#else
+                       fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                                argv[0], pfound->name);
+#endif
+                     }
 
                    nextchar += strlen (nextchar);
                    return '?';
@@ -898,9 +1063,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
                else
                  {
                    if (print_errors)
-                     fprintf (stderr,
-                              _("%s: option `%s' requires an argument\n"),
-                              argv[0], argv[optind - 1]);
+                     {
+#if defined _LIBC && defined USE_IN_LIBIO
+                       char *buf;
+
+                       __asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+                                   argv[0], argv[optind - 1]);
+
+                       if (_IO_fwide (stderr, 0) > 0)
+                         __fwprintf (stderr, L"%s", buf);
+                       else
+                         fputs (buf, stderr);
+
+                       free (buf);
+#else
+                       fprintf (stderr,
+                                _("%s: option `%s' requires an argument\n"),
+                                argv[0], argv[optind - 1]);
+#endif
+                     }
                    nextchar += strlen (nextchar);
                    return optstring[0] == ':' ? ':' : '?';
                  }
@@ -947,9 +1129,24 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
                if (print_errors)
                  {
                    /* 1003.2 specifies the format of this message.  */
+#if defined _LIBC && defined USE_IN_LIBIO
+                   char *buf;
+
+                   __asprintf (&buf,
+                               _("%s: option requires an argument -- %c\n"),
+                               argv[0], c);
+
+                   if (_IO_fwide (stderr, 0) > 0)
+                     __fwprintf (stderr, L"%s", buf);
+                   else
+                     fputs (buf, stderr);
+
+                   free (buf);
+#else
                    fprintf (stderr,
                             _("%s: option requires an argument -- %c\n"),
                             argv[0], c);
+#endif
                  }
                optopt = c;
                if (optstring[0] == ':')
index ab97e39..eb8cffa 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <errno.h>
 #include <ctype.h>
+#include <libintl.h>
 #include <memory.h>
 #include <stdio.h>
 #include <stdio_ext.h>
@@ -43,6 +44,9 @@
 #include <bits/libc-lock.h>
 #include "ifreq.h"
 #include "res_hconf.h"
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 #define _PATH_HOSTCONF "/etc/host.conf"
 
@@ -138,14 +142,37 @@ arg_service_list (const char *fname, int line_num, const char *args,
       }
       if (service == SERVICE_NONE)
        {
-         fprintf (stderr, "%s: line %d: expected service, found `%s'\n",
-                  fname, line_num, start);
+         char *buf;
+
+         __asprintf (&buf, _("%s: line %d: expected service, found `%s'\n"),
+                     fname, line_num, start);
+
+#ifdef USE_IN_LIBIO
+         if (_IO_fwide (stderr, 0) > 0)
+           fwprintf (stderr, L"%s", buf);
+         else
+#endif
+           fputs (buf, stderr);
+
+         free (buf);
          return 0;
        }
       if (_res_hconf.num_services >= SERVICE_MAX)
        {
-         fprintf (stderr, "%s: line %d: cannot specify more than %d services",
-                  fname, line_num, SERVICE_MAX);
+         char *buf;
+
+         __asprintf (&buf,
+                     _("%s: line %d: cannot specify more than %d services"),
+                     fname, line_num, SERVICE_MAX);
+
+#ifdef USE_IN_LIBIO
+         if (_IO_fwide (stderr, 0) > 0)
+           fwprintf (stderr, L"%s", buf);
+         else
+#endif
+           fputs (buf, stderr);
+
+         free (buf);
          return 0;
        }
       _res_hconf.service[_res_hconf.num_services++] = service;
@@ -159,9 +186,20 @@ arg_service_list (const char *fname, int line_num, const char *args,
          args = skip_ws (++args);
          if (!*args || *args == '#')
            {
-             fprintf (stderr,
-                      "%s: line %d: list delimiter not followed by keyword",
-                      fname, line_num);
+             char *buf;
+
+             __asprintf (&buf, _("\
+%s: line %d: list delimiter not followed by keyword"),
+                         fname, line_num);
+
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (stderr, 0) > 0)
+               fwprintf (stderr, L"%s", buf);
+             else
+#endif
+               fputs (buf, stderr);
+
+             free (buf);
              return 0;
            }
        default:
@@ -188,9 +226,20 @@ arg_trimdomain_list (const char *fname, int line_num, const char *args,
 
       if (_res_hconf.num_trimdomains >= TRIMDOMAINS_MAX)
        {
-         fprintf (stderr,
-                  "%s: line %d: cannot specify more than %d trim domains",
-                  fname, line_num, TRIMDOMAINS_MAX);
+         char *buf;
+
+         __asprintf (&buf, _("\
+%s: line %d: cannot specify more than %d trim domains"),
+                     fname, line_num, TRIMDOMAINS_MAX);
+
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (stderr, 0) > 0)
+               fwprintf (stderr, L"%s", buf);
+             else
+#endif
+               fputs (buf, stderr);
+
+             free (buf);
          return 0;
        }
       _res_hconf.trimdomain[_res_hconf.num_trimdomains++] =
@@ -202,9 +251,20 @@ arg_trimdomain_list (const char *fname, int line_num, const char *args,
          args = skip_ws (++args);
          if (!*args || *args == '#')
            {
-             fprintf (stderr,
-                      "%s: line %d: list delimiter not followed by domain",
-                      fname, line_num);
+             char *buf;
+
+             __asprintf (&buf, _("\
+%s: line %d: list delimiter not followed by domain"),
+                         fname, line_num);
+
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (stderr, 0) > 0)
+               fwprintf (stderr, L"%s", buf);
+             else
+#endif
+               fputs (buf, stderr);
+
+             free (buf);
              return 0;
            }
        default:
@@ -253,8 +313,20 @@ arg_bool (const char *fname, int line_num, const char *args, unsigned flag)
     }
   else
     {
-      fprintf (stderr, "%s: line %d: expected `on' or `off', found `%s'\n",
-              fname, line_num, args);
+      char *buf;
+
+      __asprintf (&buf,
+                 _("%s: line %d: expected `on' or `off', found `%s'\n"),
+                 fname, line_num, args);
+
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       fwprintf (stderr, L"%s", buf);
+      else
+#endif
+       fputs (buf, stderr);
+
+      free (buf);
       return 0;
     }
   return args;
@@ -289,8 +361,19 @@ parse_line (const char *fname, int line_num, const char *str)
     }
   if (c == NULL)
     {
-      fprintf (stderr, "%s: line %d: bad command `%s'\n",
-              fname, line_num, start);
+      char *buf;
+
+      __asprintf (&buf, _("%s: line %d: bad command `%s'\n"),
+                 fname, line_num, start);
+
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       fwprintf (stderr, L"%s", buf);
+      else
+#endif
+       fputs (buf, stderr);
+
+      free (buf);
       return;
     }
 
@@ -305,8 +388,22 @@ parse_line (const char *fname, int line_num, const char *str)
     {
       if (!isspace (*str)) {
        if (*str != '#')
-         fprintf (stderr, "%s: line %d: ignoring trailing garbage `%s'\n",
-                  fname, line_num, str);
+         {
+           char *buf;
+
+           __asprintf (&buf,
+                       _("%s: line %d: ignoring trailing garbage `%s'\n"),
+                     fname, line_num, str);
+
+#ifdef USE_IN_LIBIO
+           if (_IO_fwide (stderr, 0) > 0)
+             __fwprintf (stderr, L"%s", buf);
+           else
+#endif
+             fputs (buf, stderr);
+
+           free (buf);
+         }
        break;
       }
       ++str;
index dfdd69a..a2865dc 100644 (file)
@@ -42,7 +42,7 @@ perror_internal (FILE *fp, const char *s)
 
 #ifdef USE_IN_LIBIO
   if (_IO_fwide (fp, 0) > 0)
-    (void) fwprintf (fp, L"%s%s%s\n", s, colon, errstring);
+    (void) __fwprintf (fp, L"%s%s%s\n", s, colon, errstring);
   else
 #endif
     (void) fprintf (fp, "%s%s%s\n", s, colon, errstring);
index 019e15d..c524bf3 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1995,1996,1997,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #include <stdio.h>
 #include <signal.h>
+#include <stdlib.h>
 #include <libintl.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 
 #ifndef        HAVE_GNU_LD
@@ -43,7 +47,27 @@ psignal (int sig, const char *s)
     colon = ": ";
 
   if (sig >= 0 && sig < NSIG && (desc = _sys_siglist[sig]) != NULL)
-    (void) fprintf (stderr, "%s%s%s\n", s, colon, _(desc));
+    {
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s%s%s\n", s, colon, _(desc));
+      else
+#endif
+       (void) fprintf (stderr, "%s%s%s\n", s, colon, _(desc));
+    }
   else
-    (void) fprintf (stderr, _("%s%sUnknown signal %d\n"), s, colon, sig);
+    {
+      char *buf;
+
+      (void) __asprintf (&buf, _("%s%sUnknown signal %d\n"), s, colon, sig);
+
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",  buf);
+      else
+#endif
+       (void) fputs (buf, stderr);
+
+      free (buf);
+    }
 }
index 2bafbc3..bb8502f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -23,6 +23,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/syslog.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 
 /* We have global data, protect the modification.  */
@@ -143,20 +146,42 @@ fmtmsg (long int classification, const char *label, int severity,
       int do_action = (print & action_mask) && action != MM_NULLACT;
       int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
 
-      if (fprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
-                  do_label ? label : "",
-                  do_label && (do_severity | do_text | do_action | do_tag)
-                  ? ": " : "",
-                  do_severity ? severity_rec->string : "",
-                  do_severity && (do_text | do_action | do_tag) ? ": " : "",
-                  do_text ? text : "",
-                  do_text && (do_action | do_tag) ? "\n" : "",
-                  do_action ? "TO FIX: " : "",
-                  do_action ? action : "",
-                  do_action && do_tag ? "  " : "",
-                  do_tag ? tag : "") == EOF)
-       /* Oh, oh.  An error occurred during the output.  */
-       result = MM_NOMSG;
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       {
+         if (__fwprintf (stderr, L"%s%s%s%s%s%s%s%s%s%s\n",
+                         do_label ? label : "",
+                         do_label
+                         && (do_severity | do_text | do_action | do_tag)
+                         ? ": " : "",
+                         do_severity ? severity_rec->string : "",
+                         do_severity && (do_text | do_action | do_tag)
+                         ? ": " : "",
+                         do_text ? text : "",
+                         do_text && (do_action | do_tag) ? "\n" : "",
+                         do_action ? "TO FIX: " : "",
+                         do_action ? action : "",
+                         do_action && do_tag ? "  " : "",
+                         do_tag ? tag : "") == WEOF)
+           /* Oh, oh.  An error occurred during the output.  */
+           result = MM_NOMSG;
+       }
+      else
+#endif
+       if (fprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
+                    do_label ? label : "",
+                    do_label && (do_severity | do_text | do_action | do_tag)
+                    ? ": " : "",
+                    do_severity ? severity_rec->string : "",
+                    do_severity && (do_text | do_action | do_tag) ? ": " : "",
+                    do_text ? text : "",
+                    do_text && (do_action | do_tag) ? "\n" : "",
+                    do_action ? "TO FIX: " : "",
+                    do_action ? action : "",
+                    do_action && do_tag ? "  " : "",
+                    do_tag ? tag : "") == EOF)
+         /* Oh, oh.  An error occurred during the output.  */
+         result = MM_NOMSG;
     }
 
   if (classification & MM_CONSOLE)
index a03ce02..50f9551 100644 (file)
 #include <rpc/auth.h>
 #include <rpc/auth_unix.h>
 
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
 /*
  * Unix authenticator operations vector
  */
@@ -101,15 +105,16 @@ authunix_create (char *machname, uid_t uid, gid_t gid, int len,
    * Allocate and set up auth handle
    */
   auth = (AUTH *) mem_alloc (sizeof (*auth));
-  if (auth == NULL)
-    {
-      (void) fprintf (stderr, _("authunix_create: out of memory\n"));
-      return NULL;
-    }
   au = (struct audata *) mem_alloc (sizeof (*au));
-  if (au == NULL)
+  if (auth == NULL || au == NULL)
     {
-      (void) fprintf (stderr, _("authunix_create: out of memory\n"));
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("authunix_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("authunix_create: out of memory\n"), stderr);
       return NULL;
     }
   auth->ah_ops = &auth_unix_ops;
@@ -139,7 +144,13 @@ authunix_create (char *machname, uid_t uid, gid_t gid, int len,
   au->au_origcred.oa_base = mem_alloc ((u_int) len);
   if (au->au_origcred.oa_base == NULL)
     {
-      (void) fputs (_("authunix_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("authunix_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("authunix_create: out of memory\n"), stderr);
       return NULL;
     }
   memcpy(au->au_origcred.oa_base, mymem, (u_int) len);
index 55d3815..4164539 100644 (file)
@@ -43,6 +43,7 @@ static char sccsid[] = "@(#)clnt_perror.c 1.15 87/10/07 Copyr 1984 Sun Micro";
 #include <rpc/rpc.h>
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -154,7 +155,12 @@ clnt_sperror (CLIENT * rpch, const char *msg)
 void
 clnt_perror (CLIENT * rpch, const char *msg)
 {
-  (void) fputs (clnt_sperror (rpch, msg), stderr);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) __fwprintf (stderr, L"%s", clnt_sperror (rpch, msg));
+  else
+#endif
+    (void) fputs (clnt_sperror (rpch, msg), stderr);
 }
 
 
@@ -281,7 +287,12 @@ clnt_sperrno (enum clnt_stat stat)
 void
 clnt_perrno (enum clnt_stat num)
 {
-  (void) fputs (clnt_sperrno (num), stderr);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) __fwprintf (stderr, L"%s", clnt_sperrno (num));
+  else
+#endif
+    (void) fputs (clnt_sperrno (num), stderr);
 }
 
 
@@ -323,7 +334,12 @@ clnt_spcreateerror (const char *msg)
 void
 clnt_pcreateerror (const char *msg)
 {
-  (void) fputs (clnt_spcreateerror (msg), stderr);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) __fwprintf (stderr, L"%s", clnt_spcreateerror (msg));
+  else
+#endif
+    (void) fputs (clnt_spcreateerror (msg), stderr);
 }
 
 struct auth_errtab
index e307652..6267dc7 100644 (file)
@@ -59,6 +59,9 @@ static char sccsid[] = "@(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";
 #include <sys/poll.h>
 #include <sys/socket.h>
 #include <rpc/pmap_clnt.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 extern u_long _create_xid (void);
 
@@ -117,25 +120,23 @@ clnttcp_create (struct sockaddr_in *raddr, u_long prog, u_long vers,
                int *sockp, u_int sendsz, u_int recvsz)
 {
   CLIENT *h;
-  struct ct_data *ct = (struct ct_data *) mem_alloc (sizeof (*ct));
+  struct ct_data *ct;
   struct rpc_msg call_msg;
 
   h = (CLIENT *) mem_alloc (sizeof (*h));
-  if (h == NULL)
+  ct = (struct ct_data *) mem_alloc (sizeof (*ct));
+  if (h == NULL || ct == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fprintf (stderr, _("clnttcp_create: out of memory\n"));
-      ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
-      goto fooy;
-    }
-  /*  ct = (struct ct_data *) mem_alloc (sizeof (*ct)); */
-  if (ct == NULL)
-    {
-      struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fprintf (stderr, _("clnttcp_create: out of memory\n"));
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("clnttcp_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("clnttcp_create: out of memory\n"), stderr);
       ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
+      ce->cf_error.re_errno = ENOMEM;
       goto fooy;
     }
 
index bf98553..94b6721 100644 (file)
@@ -50,6 +50,9 @@ static char sccsid[] = "@(#)clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";
 #include <errno.h>
 #include <rpc/pmap_clnt.h>
 #include <net/if.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 #ifdef IP_RECVERR
 #include <errqueue.h>
@@ -126,23 +129,21 @@ clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
   struct rpc_msg call_msg;
 
   cl = (CLIENT *) mem_alloc (sizeof (CLIENT));
-  if (cl == NULL)
-    {
-      struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fprintf (stderr, _("clntudp_create: out of memory\n"));
-      ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
-      goto fooy;
-    }
   sendsz = ((sendsz + 3) / 4) * 4;
   recvsz = ((recvsz + 3) / 4) * 4;
   cu = (struct cu_data *) mem_alloc (sizeof (*cu) + sendsz + recvsz);
-  if (cu == NULL)
+  if (cl == NULL || cu == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fprintf (stderr, _("clntudp_create: out of memory\n"));
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("clntudp_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("clntudp_create: out of memory\n"), stderr);
       ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
+      ce->cf_error.re_errno = ENOMEM;
       goto fooy;
     }
   cu->cu_outbuf = &cu->cu_inbuf[recvsz];
index 19356ad..64a97a1 100644 (file)
@@ -56,6 +56,9 @@
 #include <sys/poll.h>
 #include <sys/socket.h>
 #include <rpc/pmap_clnt.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 extern u_long _create_xid (void);
 
@@ -119,21 +122,18 @@ clntunix_create (struct sockaddr_un *raddr, u_long prog, u_long vers,
   int len;
 
   h = (CLIENT *) mem_alloc (sizeof (*h));
-  if (h == NULL)
-    {
-      struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fputs (_("clntunix_create: out of memory\n"), stderr);
-      ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
-      goto fooy;
-    }
-  /*  ct = (struct ct_data *) mem_alloc (sizeof (*ct)); */
-  if (ct == NULL)
+  if (h == NULL || ct == NULL)
     {
       struct rpc_createerr *ce = &get_rpc_createerr ();
-      (void) fputs (_("clntunix_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("clntunix_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("clntunix_create: out of memory\n"), stderr);
       ce->cf_stat = RPC_SYSTEMERROR;
-      ce->cf_error.re_errno = errno;
+      ce->cf_error.re_errno = ENOMEM;
       goto fooy;
     }
 
index 979b5b6..db77743 100644 (file)
@@ -41,12 +41,14 @@ static char sccsid[] = "@(#)svc_simple.c 1.18 87/08/11 Copyr 1984 Sun Micro";
 #include <stdio.h>
 #include <string.h>
 #include <libintl.h>
+#include <unistd.h>
 #include <rpc/rpc.h>
 #include <rpc/pmap_clnt.h>
 #include <sys/socket.h>
 #include <netdb.h>
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -78,35 +80,37 @@ registerrpc (u_long prognum, u_long versnum, u_long procnum,
             char *(*progname) (char *), xdrproc_t inproc, xdrproc_t outproc)
 {
   struct proglst_ *pl;
+  char *buf;
 
   if (procnum == NULLPROC)
     {
-      (void) fprintf (stderr,
-                     _("can't reassign procedure number %ld\n"), NULLPROC);
-      return -1;
+
+      (void) __asprintf (&buf, _("can't reassign procedure number %ld\n"),
+                        NULLPROC);
+      goto err_out;
     }
   if (transp == 0)
     {
       transp = svcudp_create (RPC_ANYSOCK);
       if (transp == NULL)
        {
-         (void) fputs (_("couldn't create an rpc server\n"), stderr);
-         return -1;
+         buf = strdup (_("couldn't create an rpc server\n"));
+         goto err_out;
        }
     }
   (void) pmap_unset ((u_long) prognum, (u_long) versnum);
   if (!svc_register (transp, (u_long) prognum, (u_long) versnum,
                     universal, IPPROTO_UDP))
     {
-      (void) fprintf (stderr, _("couldn't register prog %ld vers %ld\n"),
-                     prognum, versnum);
-      return -1;
+      (void) __asprintf (&buf, _("couldn't register prog %ld vers %ld\n"),
+                        prognum, versnum);
+      goto err_out;
     }
   pl = (struct proglst_ *) malloc (sizeof (struct proglst_));
   if (pl == NULL)
     {
-      (void) fprintf (stderr, _("registerrpc: out of memory\n"));
-      return -1;
+      buf = strdup (_("registerrpc: out of memory\n"));
+      goto err_out;
     }
   pl->p_progname = progname;
   pl->p_prognum = prognum;
@@ -116,6 +120,16 @@ registerrpc (u_long prognum, u_long versnum, u_long procnum,
   pl->p_nxt = proglst;
   proglst = pl;
   return 0;
+
+ err_out:
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    (void) fwprintf (stderr, L"%s", buf);
+  else
+#endif
+    (void) fputs (buf, stderr);
+  free (buf);
+  return -1;
 }
 
 static void
@@ -125,6 +139,7 @@ universal (struct svc_req *rqstp, SVCXPRT *transp_l)
   char *outdata;
   char xdrbuf[UDPMSGSIZE];
   struct proglst_ *pl;
+  char *buf = NULL;
 
   /*
    * enforce "procnum 0 is echo" convention
@@ -133,7 +148,7 @@ universal (struct svc_req *rqstp, SVCXPRT *transp_l)
     {
       if (svc_sendreply (transp_l, (xdrproc_t)xdr_void, (char *) NULL) == FALSE)
        {
-         (void) fprintf (stderr, "xxx\n");
+         write (STDERR_FILENO, "xxx\n", 4);
          exit (1);
        }
       return;
@@ -156,15 +171,22 @@ universal (struct svc_req *rqstp, SVCXPRT *transp_l)
          return;
        if (!svc_sendreply (transp_l, pl->p_outproc, outdata))
          {
-           (void) fprintf (stderr,
-                           ("trouble replying to prog %d\n"),
-                           pl->p_prognum);
+           (void) __asprintf (&buf,
+                              _("trouble replying to prog %d\n"),
+                              pl->p_prognum);
            exit (1);
          }
        /* free the decoded arguments */
        (void) svc_freeargs (transp_l, pl->p_inproc, xdrbuf);
        return;
       }
-  (void) fprintf (stderr, _ ("never registered prog %d\n"), prog);
+  (void) __asprintf (&buf, _("never registered prog %d\n"), prog);
+#ifdef USE_IN_LIBIO
+  if (_IO_fwide (stderr, 0) > 0)
+    __fwprintf (stderr, L"%s", buf);
+  else
+#endif
+    fputs (buf, stderr);
+  free (buf);
   exit (1);
 }
index 06c05a6..2fffdf5 100644 (file)
@@ -52,6 +52,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro";
 #include <stdlib.h>
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -173,19 +174,19 @@ svctcp_create (int sock, u_int sendsize, u_int recvsize)
       return (SVCXPRT *) NULL;
     }
   r = (struct tcp_rendezvous *) mem_alloc (sizeof (*r));
-  if (r == NULL)
+  xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
+  if (r == NULL || xprt == NULL)
     {
-      (void) fputs (_("svctcp_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s", _("svctcp_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("svctcp_create: out of memory\n"), stderr);
       return NULL;
     }
   r->sendsize = sendsize;
   r->recvsize = recvsize;
-  xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
-  if (xprt == NULL)
-    {
-      (void) fputs (_("svctcp_create: out of memory\n"), stderr);
-      return NULL;
-    }
   xprt->xp_p2 = NULL;
   xprt->xp_p1 = (caddr_t) r;
   xprt->xp_verf = _null_auth;
@@ -214,18 +215,17 @@ makefd_xprt (int fd, u_int sendsize, u_int recvsize)
   struct tcp_conn *cd;
 
   xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
-  if (xprt == (SVCXPRT *) NULL)
-    {
-      (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
-      goto done;
-    }
   cd = (struct tcp_conn *) mem_alloc (sizeof (struct tcp_conn));
-  if (cd == (struct tcp_conn *) NULL)
+  if (xprt == (SVCXPRT *) NULL || cd == NULL)
     {
-      (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
-      mem_free ((char *) xprt, sizeof (SVCXPRT));
-      xprt = (SVCXPRT *) NULL;
-      goto done;
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("svc_tcp: makefd_xprt: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
+      return NULL;
     }
   cd->strm_stat = XPRT_IDLE;
   xdrrec_create (&(cd->xdrs), sendsize, recvsize,
@@ -238,7 +238,6 @@ makefd_xprt (int fd, u_int sendsize, u_int recvsize)
   xprt->xp_port = 0;           /* this is a connection, not a rendezvouser */
   xprt->xp_sock = fd;
   xprt_register (xprt);
-done:
   return xprt;
 }
 
index f912260..f8ea76c 100644 (file)
@@ -52,6 +52,7 @@ static char sccsid[] = "@(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";
 #endif
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -118,7 +119,8 @@ svcudp_bufcreate (sock, sendsz, recvsz)
   struct svcudp_data *su;
   struct sockaddr_in addr;
   socklen_t len = sizeof (struct sockaddr_in);
-  int pad; 
+  int pad;
+  void *buf;
 
   if (sock == RPC_ANYSOCK)
     {
@@ -144,23 +146,20 @@ svcudp_bufcreate (sock, sendsz, recvsz)
       return (SVCXPRT *) NULL;
     }
   xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
-  if (xprt == NULL)
-    {
-      (void) fputs (_("svcudp_create: out of memory\n"), stderr);
-      return NULL;
-    }
   su = (struct svcudp_data *) mem_alloc (sizeof (*su));
-  if (su == NULL)
+  buf = mem_alloc (((MAX (sendsz, recvsz) + 3) / 4) * 4);
+  if (xprt == NULL || su == NULL || buf == NULL)
     {
-      (void) fputs (_("svcudp_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s", _("svcudp_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("svcudp_create: out of memory\n"), stderr);
       return NULL;
     }
   su->su_iosz = ((MAX (sendsz, recvsz) + 3) / 4) * 4;
-  if ((rpc_buffer (xprt) = mem_alloc (su->su_iosz)) == NULL)
-    {
-      (void) fputs (_("svcudp_create: out of memory\n"), stderr);
-      return NULL;
-    }
+  rpc_buffer (xprt) = buf;
   xdrmem_create (&(su->su_xdrs), rpc_buffer (xprt), su->su_iosz, XDR_DECODE);
   su->su_cache = NULL;
   xprt->xp_p2 = (caddr_t) su;
@@ -174,8 +173,14 @@ svcudp_bufcreate (sock, sendsz, recvsz)
        + sizeof(struct cmsghdr) + sizeof (struct in_pktinfo))
       > sizeof (xprt->xp_pad))
     {
-      (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
-                   stderr);
+# ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("svcudp_create: xp_pad is too small for IP_PKTINFO\n"));
+      else
+# endif
+       (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
+                     stderr);
       return NULL;
     }
   pad = 1;
@@ -380,8 +385,16 @@ svcudp_destroy (xprt)
 
 #define SPARSENESS 4           /* 75% sparse */
 
-#define CACHE_PERROR(msg)      \
+#ifdef USE_IN_LIBIO
+# define CACHE_PERROR(msg)     \
+       if (_IO_fwide (stderr, 0) > 0)                                        \
+               (void) __fwprintf(stderr, L"%s\n", msg);                      \
+       else                                                                  \
+               (void) fprintf(stderr, "%s\n", msg)
+#else
+# define CACHE_PERROR(msg)     \
        (void) fprintf(stderr,"%s\n", msg)
+#endif
 
 #define ALLOC(type, size)      \
        (type *) mem_alloc((unsigned) (sizeof(type) * (size)))
index 20bc0aa..99e5a2a 100644 (file)
 #include <stdlib.h>
 #include <libintl.h>
 
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
 /*
  * Ops vector for AF_UNIX based rpc service handle
  */
@@ -166,19 +170,19 @@ svcunix_create (int sock, u_int sendsize, u_int recvsize, char *path)
     }
 
   r = (struct unix_rendezvous *) mem_alloc (sizeof (*r));
-  if (r == NULL)
+  xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
+  if (r == NULL || xprt == NULL)
     {
-      fputs (_("svcunix_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       __fwprintf (stderr, L"%s", _("svcunix_create: out of memory\n"));
+      else
+#endif
+       fputs (_("svcunix_create: out of memory\n"), stderr);
       return NULL;
     }
   r->sendsize = sendsize;
   r->recvsize = recvsize;
-  xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
-  if (xprt == NULL)
-    {
-      fputs (_("svcunix_create: out of memory\n"), stderr);
-      return NULL;
-    }
   xprt->xp_p2 = NULL;
   xprt->xp_p1 = (caddr_t) r;
   xprt->xp_verf = _null_auth;
@@ -207,18 +211,17 @@ makefd_xprt (int fd, u_int sendsize, u_int recvsize)
   struct unix_conn *cd;
 
   xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
-  if (xprt == (SVCXPRT *) NULL)
-    {
-      (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
-      goto done;
-    }
   cd = (struct unix_conn *) mem_alloc (sizeof (struct unix_conn));
-  if (cd == (struct unix_conn *) NULL)
+  if (xprt == (SVCXPRT *) NULL || cd == (struct unix_conn *) NULL)
     {
-      (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
-      mem_free ((char *) xprt, sizeof (SVCXPRT));
-      xprt = (SVCXPRT *) NULL;
-      goto done;
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s",
+                          _("svc_unix: makefd_xprt: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
+      return NULL;
     }
   cd->strm_stat = XPRT_IDLE;
   xdrrec_create (&(cd->xdrs), sendsize, recvsize,
@@ -231,7 +234,6 @@ makefd_xprt (int fd, u_int sendsize, u_int recvsize)
   xprt->xp_port = 0;           /* this is a connection, not a rendezvouser */
   xprt->xp_sock = fd;
   xprt_register (xprt);
-done:
   return xprt;
 }
 
index 46dfe3b..cc1aa2c 100644 (file)
@@ -44,10 +44,15 @@ static char sccsid[] = "@(#)xdr.c 1.35 87/08/12";
 #include <stdio.h>
 #include <limits.h>
 #include <string.h>
+#include <libintl.h>
 
 #include <rpc/types.h>
 #include <rpc/xdr.h>
 
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
 /*
  * constants specific to the xdr "protocol"
  */
@@ -548,7 +553,12 @@ xdr_bytes (xdrs, cpp, sizep, maxsize)
        }
       if (sp == NULL)
        {
-         (void) fprintf (stderr, "xdr_bytes: out of memory\n");
+#ifdef USE_IN_LIBIO
+         if (_IO_fwide (stderr, 0) > 0)
+           (void) __fwprintf (stderr, L"%s", _("xdr_bytes: out of memory\n"));
+         else
+#endif
+           (void) fputs (_("xdr_bytes: out of memory\n"), stderr);
          return FALSE;
        }
       /* fall into ... */
@@ -694,7 +704,13 @@ xdr_string (xdrs, cpp, maxsize)
        *cpp = sp = (char *) mem_alloc (nodesize);
       if (sp == NULL)
        {
-         (void) fprintf (stderr, "xdr_string: out of memory\n");
+#ifdef USE_IN_LIBIO
+         if (_IO_fwide (stderr, 0) > 0)
+           (void) __fwprintf (stderr, L"%s",
+                              _("xdr_string: out of memory\n"));
+         else
+#endif
+           (void) fputs (_("xdr_string: out of memory\n"), stderr);
          return FALSE;
        }
       sp[size] = 0;
index a049b2d..2dbf8c1 100644 (file)
@@ -44,6 +44,11 @@ static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro";
 #include <string.h>
 #include <rpc/types.h>
 #include <rpc/xdr.h>
+#include <libintl.h>
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
 
 #define LASTUNSIGNED   ((u_int)0-1)
 
@@ -95,8 +100,13 @@ xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc)
        *addrp = target = mem_alloc (nodesize);
        if (target == NULL)
          {
-           (void) fprintf (stderr,
-                           "xdr_array: out of memory\n");
+#ifdef USE_IN_LIBIO
+           if (_IO_fwide (stderr, 0) > 0)
+             (void) __fwprintf (stderr, L"%s",
+                                _("xdr_array: out of memory\n"));
+           else
+#endif
+             (void) fputs (_("xdr_array: out of memory\n"), stderr);
            return FALSE;
          }
        __bzero (target, nodesize);
index 3544edc..17c9b35 100644 (file)
@@ -51,6 +51,7 @@
 #include <libintl.h>
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -145,10 +146,16 @@ xdrrec_create (XDR *xdrs, u_int sendsize,
 {
   RECSTREAM *rstrm = (RECSTREAM *) mem_alloc (sizeof (RECSTREAM));
   caddr_t tmp;
+  char *buf = mem_alloc (sendsize + recvsize + BYTES_PER_XDR_UNIT);
 
-  if (rstrm == NULL)
+  if (rstrm == NULL || buf == NULL)
     {
-      (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+      if (_IO_fwide (stderr, 0) > 0)
+       (void) __fwprintf (stderr, L"%s", _("xdrrec_create: out of memory\n"));
+      else
+#endif
+       (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
       /*
        *  This is bad.  Should rework xdrrec_create to
        *  return a handle, and in this case return NULL
@@ -160,12 +167,7 @@ xdrrec_create (XDR *xdrs, u_int sendsize,
    */
   rstrm->sendsize = sendsize = fix_buf_size (sendsize);
   rstrm->recvsize = recvsize = fix_buf_size (recvsize);
-  rstrm->the_buffer = mem_alloc (sendsize + recvsize + BYTES_PER_XDR_UNIT);
-  if (rstrm->the_buffer == NULL)
-    {
-      (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
-      return;
-    }
+  rstrm->the_buffer = buf;
   tmp = rstrm->the_buffer;
   if ((size_t)tmp % BYTES_PER_XDR_UNIT)
     tmp += BYTES_PER_XDR_UNIT - (size_t)tmp % BYTES_PER_XDR_UNIT;
index 2a9ffb1..e49329f 100644 (file)
@@ -47,6 +47,7 @@ static char sccsid[] = "@(#)xdr_reference.c 1.11 87/08/11 SMI";
 #include <libintl.h>
 
 #ifdef USE_IN_LIBIO
+# include <wchar.h>
 # include <libio/iolibio.h>
 # define fputs(s, f) _IO_fputs (s, f)
 #endif
@@ -82,7 +83,13 @@ xdr_reference (xdrs, pp, size, proc)
        *pp = loc = (caddr_t) mem_alloc (size);
        if (loc == NULL)
          {
-           (void) fputs (_("xdr_reference: out of memory\n"), stderr);
+#ifdef USE_IN_LIBIO
+           if (_IO_fwide (stderr, 0) > 0)
+             (void) __fwprintf (stderr, L"%s",
+                                _("xdr_reference: out of memory\n"));
+           else
+#endif
+             (void) fputs (_("xdr_reference: out of memory\n"), stderr);
            return FALSE;
          }
        __bzero (loc, (int) size);
index 5a9209c..1804d2c 100644 (file)
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <wordexp.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <fnmatch.h>
+#include <glob.h>
+#include <libintl.h>
+#include <paths.h>
+#include <pwd.h>
 #include <signal.h>
+#include <stdio.h>
 #include <stdlib.h>
-#include <pwd.h>
-#include <sys/types.h>
 #include <string.h>
-#include <glob.h>
-#include <ctype.h>
+#include <sys/param.h>
+#include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/types.h>
+#include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <paths.h>
-#include <errno.h>
-#include <sys/param.h>
-#include <stdio.h>
-#include <fnmatch.h>
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#endif
+#include <wordexp.h>
 
 #include <stdio-common/_itoa.h>
 
@@ -1789,12 +1793,19 @@ envsubst:
          if (!colon_seen && value)
            /* Substitute NULL */
            ;
-         else if (*pattern)
-           fprintf (stderr, "%s: %s\n", env, pattern);
          else
            {
-             fprintf (stderr, "%s: parameter null or not set\n", env);
-             error = WRDE_BADVAL;
+             const char *str = pattern;
+
+             if (str[0] == '\0')
+               str = gettext ("parameter null or not set");
+
+#ifdef USE_IN_LIBIO
+             if (_IO_fwide (stderr, 0) > 0)
+               __fwprintf (stderr, L"%s: %s\n", env, str);
+             else
+#endif
+               fprintf (stderr, "%s: %s\n", env, str);
            }
 
          if (free_value)