]> Dogcows Code - chaz/tar/commitdiff
Rewrite from scratch, as print-copyr.c.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 21 Sep 2001 22:19:09 +0000 (22:19 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 21 Sep 2001 22:19:09 +0000 (22:19 +0000)
lib/print-copyr.c

index 7bbb2c0667ec6eceadd5b0cd487ac8951ea7cdd9..6abaccf64e46a4e6866855efd123132c8df2dd72 100644 (file)
@@ -1,4 +1,4 @@
-/* copysym.c -- Return a copyright symbol suitable for the current locale.
+/* Print a copyright notice suitable for the current locale.
    Copyright (C) 2001 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
 # include <config.h>
 #endif
 
-#include <stddef.h>
+#include "unicodeio.h"
+#include "print-copyr.h"
 
-#if HAVE_ICONV
-# include <iconv.h>
+#include <stdio.h>
 
-# if ! USE_INCLUDED_LIBINTL && HAVE_LANGINFO_CODESET
-#  include <langinfo.h>
-# endif
+#define COPYRIGHT_SIGN 0x00A9
 
-# if HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-
-#include "copysym.h"
-
-/* Store into BUF (of size BUFSIZE) a representation of the copyright
-   symbol (C-in-a-circle) that is a valid text string for the current
-   locale.  Return BUF if successful, and a pointer to some other
-   string otherwise.  */
+/* Print "(C)".  */
 
-char const *
-copyright_symbol (char *buf, size_t bufsize)
+static int
+print_parenthesized_c (unsigned int code, void *callback_arg)
 {
-#if HAVE_ICONV
-  char const *outcharset = getenv ("OUTPUT_CHARSET");
-
-  if (! (outcharset && *outcharset))
-    {
-#if USE_INCLUDED_LIBINTL
-      extern char const *locale_charset (void);
-      outcharset = locale_charset ();
-#else
-# if HAVE_LANGINFO_CODESET
-      outcharset = nl_langinfo (CODESET);
-# endif
-#endif
-    }
-
-  if (*outcharset)
-    {
-      iconv_t conv = iconv_open (outcharset, "UTF-8");
-
-      if (conv != (iconv_t) -1)
-       {
-         static char const copyright_utf_8[] = "\302\251";
-         char ICONV_CONST *inptr = (char ICONV_CONST *) &copyright_utf_8;
-         size_t inleft = sizeof copyright_utf_8;
-         char *outptr = buf;
-         size_t chars = iconv (conv, &inptr, &inleft, &outptr, &bufsize);
+  FILE *stream = callback_arg;
+  return fputs ("(C)", stream);
+}
 
-         iconv_close (conv);
+/* Print "Copyright (C) " followed by NOTICE and then a newline,
+   transliterating "(C)" to an actual copyright sign (C-in-a-circle)
+   if possible.  */
 
-         if (chars != (size_t) -1)
-           return buf;
-       }
-    }
-#endif
-
-  /* "(C)" is the best we can do in ASCII.  */
-  return "(C)";
+void
+print_copyright (char const *notice)
+{
+  fputs ("Copyright ", stdout);
+  unicode_to_mb (COPYRIGHT_SIGN, print_unicode_success, print_parenthesized_c,
+                stdout);
+  fputc (' ', stdout);
+  puts (notice);
 }
This page took 0.029204 seconds and 4 git commands to generate.