]> granicus.if.org Git - python/commitdiff
Back out #479898.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 11 Oct 2002 05:37:59 +0000 (05:37 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 11 Oct 2002 05:37:59 +0000 (05:37 +0000)
Objects/stringobject.c
configure
configure.in
pyconfig.h.in

index 5c5b6aea9e37df35cba9d10fd8cf5ecd17c869af..35b4b47e986438ccf6f81919a3cd9e1f2ed5ded7 100644 (file)
@@ -26,20 +26,6 @@ static PyStringObject *nullstring;
 static PyObject *interned;
 
 
-#if defined(HAVE_MBTOWC) && defined(HAVE_WCHAR_H) && defined(HAVE_WCTYPE_H)
-#  define PRINT_MULTIBYTE_STRING
-#  include <locale.h>
-#  include <wchar.h>
-#  include <wctype.h>
-#  if defined(HAVE_ISWPRINT)
-#    define _isprint iswprint
-#  else
-#    define _isprint isprint
-#  endif
-#endif
-
-static const char *hexchars = "0123456789abcdef";
-
 /*
    For both PyString_FromString() and PyString_FromStringAndSize(), the
    parameter `size' denotes number of characters to allocate, not counting any
@@ -763,14 +749,8 @@ PyString_AsStringAndSize(register PyObject *obj,
 static int
 string_print(PyStringObject *op, FILE *fp, int flags)
 {
-#ifndef PRINT_MULTIBYTE_STRING
        int i;
        char c;
-#else
-        char *scur, *send;
-       wchar_t c;
-       int cr;
-#endif
        int quote;
 
        /* XXX Ought to check for interrupts when writing long strings */
@@ -796,36 +776,20 @@ string_print(PyStringObject *op, FILE *fp, int flags)
                quote = '"';
 
        fputc(quote, fp);
-#ifndef PRINT_MULTIBYTE_STRING
        for (i = 0; i < op->ob_size; i++) {
                c = op->ob_sval[i];
-#else
-       for (scur = op->ob_sval, send = op->ob_sval + op->ob_size;
-            scur < send; scur += cr) {
-               if ((cr = mbtowc(&c, scur, send - scur)) <= 0)
-                       goto non_printable;
-#endif
                if (c == quote || c == '\\')
-                       fputc('\\', fp), fputc(c, fp);
+                       fprintf(fp, "\\%c", c);
                 else if (c == '\t')
-                        fputs("\\t", fp);
+                        fprintf(fp, "\\t");
                 else if (c == '\n')
-                        fputs("\\n", fp);
+                        fprintf(fp, "\\n");
                 else if (c == '\r')
-                        fputs("\\r", fp);
-#ifndef PRINT_MULTIBYTE_STRING
-               else if (' ' <= c && c < 0x7f)
-                       fputc(c, fp);
+                        fprintf(fp, "\\r");
+               else if (c < ' ' || c >= 0x7f)
+                       fprintf(fp, "\\x%02x", c & 0xff);
                else
-                        fprintf(fp, "\\x%02x", c & 0xff);
-#else
-               else if (_isprint(c))
-                       fwrite(scur, cr, 1, fp);
-               else {
-non_printable:         cr = 1; /* unit to move cursor */
-                        fprintf(fp, "\\x%02x", *scur & 0xff);
-               }
-#endif
+                       fputc(c, fp);
        }
        fputc(quote, fp);
        return 0;
@@ -846,14 +810,8 @@ PyString_Repr(PyObject *obj, int smartquotes)
                return NULL;
        }
        else {
-#ifndef PRINT_MULTIBYTE_STRING
                register int i;
                register char c;
-#else
-               register char *scur, *send;
-               wchar_t c;
-               int cr;
-#endif
                register char *p;
                int quote;
 
@@ -866,18 +824,11 @@ PyString_Repr(PyObject *obj, int smartquotes)
 
                p = PyString_AS_STRING(v);
                *p++ = quote;
-#ifndef PRINT_MULTIBYTE_STRING
                for (i = 0; i < op->ob_size; i++) {
                        /* There's at least enough room for a hex escape
                           and a closing quote. */
                        assert(newsize - (p - PyString_AS_STRING(v)) >= 5);
                        c = op->ob_sval[i];
-#else
-               for (scur = op->ob_sval, send = op->ob_sval + op->ob_size;
-                    scur < send; scur += cr) {
-                       if ((cr = mbtowc(&c, scur, send - scur)) <= 0)
-                               goto non_printable;
-#endif
                        if (c == quote || c == '\\')
                                *p++ = '\\', *p++ = c;
                        else if (c == '\t')
@@ -886,20 +837,15 @@ PyString_Repr(PyObject *obj, int smartquotes)
                                *p++ = '\\', *p++ = 'n';
                        else if (c == '\r')
                                *p++ = '\\', *p++ = 'r';
-#ifndef PRINT_MULTIBYTE_STRING
-                       else if (' ' <= c && c < 0x7f)
-                               *p++ = c;
-                       else {
-#else
-                       else if (_isprint(c))
-                               memcpy(p, scur, cr), p += cr;
-                       else {
-non_printable:                 cr = 1; c = *scur;
-#endif
-                               *p++ = '\\'; *p++ = 'x';
-                               *p++ = hexchars[(c >> 4) & 0x0f];
-                               *p++ = hexchars[c & 0x0f];
+                       else if (c < ' ' || c >= 0x7f) {
+                               /* For performance, we don't want to call
+                                  PyOS_snprintf here (extra layers of
+                                  function call). */
+                               sprintf(p, "\\x%02x", c & 0xff);
+                                p += 4;
                        }
+                       else
+                               *p++ = c;
                }
                assert(newsize - (p - PyString_AS_STRING(v)) >= 1);
                *p++ = quote;
index 517caab30ec542c77d15bce69cfccf8f674333f5..d9e98e07caacc7f9318ba4ad0a77254d913e4a06 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.355 .
+# From configure.in Revision: 1.356 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.53.
 #
@@ -901,7 +901,7 @@ esac
 # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
 # absolute.
 ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
 ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
 ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
 
@@ -3888,7 +3888,6 @@ fi
 
 
 
-
 
 
 for ac_header in dlfcn.h fcntl.h grp.h limits.h langinfo.h \
@@ -3896,7 +3895,7 @@ libintl.h locale.h ncurses.h poll.h pthread.h \
 signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h termios.h \
 sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
 sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
-sys/un.h sys/utsname.h sys/wait.h pty.h term.h wctype.h libutil.h \
+sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
 sys/resource.h netpacket/packet.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -11931,16 +11930,14 @@ echo "${ECHO_T}MACHDEP_OBJS" >&6
 
 
 
-
-
 
 
 
 for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \
  fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
- hstrerror inet_pton iswprint kill killpg lchown link lstat mbtowc mkfifo \
- mknod mktime mremap nice pathconf pause plock poll pthread_init \
+ hstrerror inet_pton kill killpg lchown link lstat mkfifo mknod mktime \
+ mremap nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
@@ -17175,7 +17172,7 @@ esac
 # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
 # absolute.
 ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
 ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
 ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
 
index 94a0d1f59ab485e591a1c1b94f478e55c8f7bbd1..21fc77c65e10fc47e19381a9efe20c5274e95768 100644 (file)
@@ -618,7 +618,7 @@ libintl.h locale.h ncurses.h poll.h pthread.h \
 signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h termios.h \
 sys/audioio.h sys/file.h sys/lock.h sys/mkdev.h sys/modem.h \
 sys/param.h sys/poll.h sys/select.h sys/socket.h sys/time.h sys/times.h \
-sys/un.h sys/utsname.h sys/wait.h pty.h term.h wctype.h libutil.h \
+sys/un.h sys/utsname.h sys/wait.h pty.h term.h libutil.h \
 sys/resource.h netpacket/packet.h)
 AC_HEADER_DIRENT
 AC_HEADER_MAJOR
@@ -1680,8 +1680,8 @@ AC_MSG_RESULT(MACHDEP_OBJS)
 AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \
  fchdir flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpgid getpid getpwent getwd \
- hstrerror inet_pton iswprint kill killpg lchown link lstat mbtowc mkfifo \
- mknod mktime mremap nice pathconf pause plock poll pthread_init \
+ hstrerror inet_pton kill killpg lchown link lstat mkfifo mknod mktime \
+ mremap nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
  setlocale setregid setreuid setsid setpgid setuid setvbuf snprintf \
index 193a9caf341a62ca69a0a6c8b83ae281de8a7efb..01cced8084a31efa460441f76d967f22455380ea 100644 (file)
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
-/* Define to 1 if you have the `iswprint' function. */
-#undef HAVE_ISWPRINT
-
 /* Define to 1 if you have the `kill' function. */
 #undef HAVE_KILL
 
 /* Define this if you have the makedev macro. */
 #undef HAVE_MAKEDEV
 
-/* Define to 1 if you have the `mbtowc' function. */
-#undef HAVE_MBTOWC
-
 /* Define to 1 if you have the `memmove' function. */
 #undef HAVE_MEMMOVE
 
 /* Define if the compiler provides a wchar.h header file. */
 #undef HAVE_WCHAR_H
 
-/* Define to 1 if you have the <wctype.h> header file. */
-#undef HAVE_WCTYPE_H
-
 /* Define to 1 if you have the `_getpty' function. */
 #undef HAVE__GETPTY