lib/util: Use common d_printf() in the whole codebase
authorAndrew Bartlett <abartlet@samba.org>
Mon, 20 Jun 2011 09:56:50 +0000 (19:56 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 20 Jun 2011 23:35:34 +0000 (09:35 +1000)
This removes the lang_tdb based varient, the only user of the lang_tdb
code is SWAT, which calls that directly.

'net' and 'pam_winbind' are internationalised using gettext.

Andrew Bartlett

lib/util/dprintf.c
lib/util/util.h
lib/util/wscript_build
source3/Makefile.in
source3/lib/dprintf.c [deleted file]
source3/wscript_build
source4/param/loadparm.c

index c7c701bcfadfd1379f953f50b1bd04f0d4d3e8b9..c79989b51701888cf7a2bb61921c9e78d2c4349e 100644 (file)
 
 #include "includes.h"
 #include "system/locale.h"
-#include "param/param.h"
 
 static smb_iconv_t display_cd = (smb_iconv_t)-1;
 
-void d_set_iconv(smb_iconv_t cd)
-{
-       if (display_cd != (smb_iconv_t)-1)
-               talloc_free(display_cd);
-
-       display_cd = cd;
-}
-
 static int d_vfprintf(FILE *f, const char *format, va_list ap) 
 {
        char *p, *p2;
-       int ret, clen;
+       int ret;
+       size_t clen;
+       bool cret;
        va_list ap2;
 
        /* If there's nothing to convert, take a shortcut */
@@ -56,15 +49,14 @@ static int d_vfprintf(FILE *f, const char *format, va_list ap)
                return vfprintf(f, format, ap);
        }
 
-       /* do any message translations */
        va_copy(ap2, ap);
        ret = vasprintf(&p, format, ap2);
        va_end(ap2);
 
        if (ret <= 0) return ret;
 
-       clen = iconv_talloc(NULL, display_cd, p, ret, (void **)&p2);
-        if (clen == -1) {
+       cret = convert_string_talloc(NULL, CH_UTF8, CH_DISPLAY, p, ret, (void **)&p2, &clen);
+        if (!cret) {
                /* the string can't be converted - do the best we can,
                   filling in non-printing chars with '?' */
                int i;
@@ -100,15 +92,25 @@ _PUBLIC_ int d_fprintf(FILE *f, const char *format, ...)
        return ret;
 }
 
-_PUBLIC_ int d_printf(const char *format, ...)
+static FILE *outfile;
+
+_PUBLIC_  int d_printf(const char *format, ...)
 {
        int ret;
-       va_list ap;
-
-       va_start(ap, format);
-       ret = d_vfprintf(stdout, format, ap);
-       va_end(ap);
-
-       return ret;
+       va_list ap;
+       
+       if (!outfile) outfile = stdout;
+       
+       va_start(ap, format);
+       ret = d_vfprintf(outfile, format, ap);
+       va_end(ap);
+       
+       return ret;
 }
 
+/* interactive programs need a way of tell d_*() to write to stderr instead
+   of stdout */
+void display_set_stderr(void)
+{
+       outfile = stderr;
+}
index f4861a6fcfbaa70be42a8c9f36c2372f42b1e812..c71544018647ca826d07109052e6db27fd618b93 100644 (file)
@@ -211,13 +211,10 @@ _PUBLIC_ char** generate_unique_strs(TALLOC_CTX *mem_ctx, size_t len,
                                          uint32_t num);
 
 /* The following definitions come from lib/util/dprintf.c  */
-#if _SAMBA_BUILD_ == 4
 
-_PUBLIC_ void d_set_iconv(smb_iconv_t);
 _PUBLIC_ int d_fprintf(FILE *f, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
 _PUBLIC_ int d_printf(const char *format, ...) PRINTF_ATTRIBUTE(1,2);
 _PUBLIC_ void display_set_stderr(void);
-#endif
 
 /* The following definitions come from lib/util/util_str.c  */
 
index a094fa3b544a8ceb58b3f6f5beec4e1fe01a9d2b..8046a8ba07ef417c7db01a057c5c8a54ae4e7a13 100755 (executable)
@@ -6,11 +6,11 @@ common_util_sources = '''talloc_stack.c smb_threads.c xfile.c data_blob.c
                     signal.c system.c params.c util.c util_id.c util_net.c
                     util_strlist.c util_paths.c idtree.c debug.c fault.c base64.c
                     util_str.c util_str_common.c substitute.c ms_fnmatch.c
-                    server_id.c'''
+                    server_id.c dprintf.c'''
 
 common_util_headers = 'debug.h'
 common_util_public_deps = 'talloc pthread LIBCRYPTO CHARSET'
-s4_util_sources = '''dprintf.c parmlist.c'''
+s4_util_sources = '''parmlist.c'''
 s4_util_deps = 'DYNCONFIG'
 s4_util_public_deps = 'talloc execinfo uid_wrapper'
 s4_util_public_headers = 'attr.h byteorder.h data_blob.h memory.h safe_string.h time.h talloc_stack.h xfile.h dlinklist.h util.h string_wrappers.h'
index 5b36fe25332141e81a3257dcb48581fbeb3b5e4f..7a471dde4e488e680974b4852b209baed0904d9c 100644 (file)
@@ -455,7 +455,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) \
          lib/username.o \
          ../libds/common/flag_mapping.o \
          lib/access.o lib/smbrun.o \
-         lib/bitmap.o lib/dprintf.o $(UTIL_REG_OBJ) \
+         lib/bitmap.o ../lib/util/dprintf.o $(UTIL_REG_OBJ) \
          lib/wins_srv.o lib/string_init.o \
          lib/util_str.o ../lib/util/util_str_common.o \
          ../lib/util/util_str.o \
diff --git a/source3/lib/dprintf.c b/source3/lib/dprintf.c
deleted file mode 100644 (file)
index 55ea7f9..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-   display print functions
-   Copyright (C) Andrew Tridgell 2001
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-/*
-  this module provides functions for printing internal strings in the "display charset"
-  This charset may be quite different from the chosen unix charset
-
-  Eventually these functions will need to take care of column count constraints
-
-  The d_ prefix on print functions in Samba refers to the display character set
-  conversion
-*/
-
-#include "includes.h"
-#include "intl/lang_tdb.h"
-
-static int d_vfprintf(FILE *f, const char *format, va_list ap)
-{
-       char *p = NULL, *p2 = NULL;
-       int ret, maxlen, clen;
-       size_t size = 0;
-       const char *msgstr;
-       va_list ap2;
-
-       va_copy(ap2, ap);
-
-       /* do any message translations */
-       msgstr = lang_msg(format);
-       if (!msgstr) {
-               ret = -1;
-               goto out;
-       }
-
-       ret = vasprintf(&p, msgstr, ap2);
-
-       lang_msg_free(msgstr);
-
-       if (ret <= 0) {
-               ret = -1;
-               goto out;
-       }
-
-       /* now we have the string in unix format, convert it to the display
-          charset, but beware of it growing */
-       maxlen = ret*2;
-again:
-       p2 = (char *)SMB_MALLOC(maxlen);
-       if (!p2) {
-               ret = -1;
-               goto out;
-       }
-
-       if (!convert_string(CH_UNIX, CH_DISPLAY, p, ret, p2, maxlen, &size)) {
-               ret = -1;
-               goto out;
-       }
-       clen = size;
-
-       if (clen >= maxlen) {
-               /* it didn't fit - try a larger buffer */
-               maxlen *= 2;
-               SAFE_FREE(p2);
-               goto again;
-       }
-
-       /* good, its converted OK */
-       ret = fwrite(p2, 1, clen, f);
-out:
-
-       SAFE_FREE(p);
-       SAFE_FREE(p2);
-       va_end(ap2);
-
-       return ret;
-}
-
-
- int d_fprintf(FILE *f, const char *format, ...)
-{
-       int ret;
-       va_list ap;
-
-       va_start(ap, format);
-       ret = d_vfprintf(f, format, ap);
-       va_end(ap);
-
-       return ret;
-}
-
-static FILE *outfile;
-
- int d_printf(const char *format, ...)
-{
-       int ret;
-       va_list ap;
-
-       if (!outfile) outfile = stdout;
-       
-       va_start(ap, format);
-       ret = d_vfprintf(outfile, format, ap);
-       va_end(ap);
-
-       return ret;
-}
-
-/* interactive programs need a way of tell d_*() to write to stderr instead
-   of stdout */
-void display_set_stderr(void)
-{
-       outfile = stderr;
-}
index 0e76d1f7af03ee4ea58024bf32e1d0b095974fb5..2f430a90470611448444cc98ea659204916b820e 100755 (executable)
@@ -69,7 +69,6 @@ LIB_SRC = '''
           lib/system.c lib/sendfile.c lib/recvfile.c lib/time.c
           lib/username.c
           lib/access.c lib/smbrun.c
-          lib/dprintf.c
           lib/wins_srv.c
           lib/util_sid.c
           lib/util_file.c
index 0a616b5eb4bb1de2ff5ffef378da413199eeee0c..61cb9797a448e72388260dfd6f8c997f422b2a8a 100644 (file)
@@ -2668,12 +2668,6 @@ static bool lpcfg_update(struct loadparm_context *lp_ctx)
                unsetenv("SOCKET_TESTNONBLOCK");
        }
 
-       /* FIXME: Check locale in environment for this: */
-       if (strcmp(lpcfg_display_charset(lp_ctx), lpcfg_unix_charset(lp_ctx)) != 0)
-               d_set_iconv(smb_iconv_open(lpcfg_display_charset(lp_ctx), lpcfg_unix_charset(lp_ctx)));
-       else
-               d_set_iconv((smb_iconv_t)-1);
-
        return true;
 }