OS/2 EMX port changes (Objects part of patch #450267):
Objects/ fileobject.c stringobject.c unicodeobject.c This commit doesn't include the cleanup patches for stringobject.c and unicodeobject.c which are shown separately in the patch manager. Those patches will be regenerated and applied in a subsequent commit, so as to preserve a fallback position (this commit to those files).
This commit is contained in:
parent
5e090fc985
commit
c487439aa7
|
@ -25,6 +25,10 @@
|
||||||
#define NO_FOPEN_ERRNO
|
#define NO_FOPEN_ERRNO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(PYOS_OS2) && defined(PYCC_GCC)
|
||||||
|
#include <io.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BUF(v) PyString_AS_STRING((PyStringObject *)v)
|
#define BUF(v) PyString_AS_STRING((PyStringObject *)v)
|
||||||
|
|
||||||
#ifndef DONT_HAVE_ERRNO_H
|
#ifndef DONT_HAVE_ERRNO_H
|
||||||
|
|
|
@ -3100,6 +3100,15 @@ formatint(char *buf, size_t buflen, int flags,
|
||||||
buf[0] = '0';
|
buf[0] = '0';
|
||||||
buf[1] = (char)type;
|
buf[1] = (char)type;
|
||||||
}
|
}
|
||||||
|
#if defined(PYOS_OS2) && defined(PYCC_GCC)
|
||||||
|
/* unfortunately, the EMX C runtime gives us '0x' as the base
|
||||||
|
* marker for %X when we expect/want '0X'
|
||||||
|
*/
|
||||||
|
else if ((flags & F_ALT) && (type == 'X')) {
|
||||||
|
assert(buf[1] == 'x');
|
||||||
|
buf[1] = (char)type;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return strlen(buf);
|
return strlen(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5162,6 +5162,15 @@ formatint(Py_UNICODE *buf,
|
||||||
* Compaq Tru64) violate the std by converting 0 w/ leading 0x anyway.
|
* Compaq Tru64) violate the std by converting 0 w/ leading 0x anyway.
|
||||||
* So add it only if the platform doesn't already.
|
* So add it only if the platform doesn't already.
|
||||||
*/
|
*/
|
||||||
|
#if defined(PYOS_OS2) && defined(PYCC_GCC)
|
||||||
|
if ((flags & F_ALT) && (type == 'x' || type == 'X')) {
|
||||||
|
/* the EMX runtime gives 0x as the base marker when we want 0X
|
||||||
|
* so we cover all bets by supplying our own for both cases.
|
||||||
|
*/
|
||||||
|
use_native_c_format = 0;
|
||||||
|
PyOS_snprintf(fmt, sizeof(fmt), "0%c%%.%dl%c", type, prec, type);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (x == 0 && (flags & F_ALT) && (type == 'x' || type == 'X')) {
|
if (x == 0 && (flags & F_ALT) && (type == 'x' || type == 'X')) {
|
||||||
/* Only way to know what the platform does is to try it. */
|
/* Only way to know what the platform does is to try it. */
|
||||||
PyOS_snprintf(fmt, sizeof(fmt), type == 'x' ? "%#x" : "%#X", 0);
|
PyOS_snprintf(fmt, sizeof(fmt), type == 'x' ? "%#x" : "%#X", 0);
|
||||||
|
@ -5171,6 +5180,7 @@ formatint(Py_UNICODE *buf,
|
||||||
PyOS_snprintf(fmt, sizeof(fmt), "0%c%%#.%dl%c", type, prec, type);
|
PyOS_snprintf(fmt, sizeof(fmt), "0%c%%#.%dl%c", type, prec, type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (use_native_c_format)
|
if (use_native_c_format)
|
||||||
PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%dl%c",
|
PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%dl%c",
|
||||||
(flags & F_ALT) ? "#" : "", prec, type);
|
(flags & F_ALT) ? "#" : "", prec, type);
|
||||||
|
|
Loading…
Reference in New Issue