Python.h defines a typedef destructor, which conflicts with pthread.h.
So Python.h must be included after pthread.h. */
-#include <Python.h>
+#include "Python.h"
extern int Py_VerboseFlag;
ps(void)
{
char buffer[100];
- sprintf(buffer, "ps -l -p %d </dev/null | tail +2l\n", getpid());
+ PyOS_snprintf(buffer, sizeof(buffer),
+ "ps -l -p %d </dev/null | tail +2l\n", getpid());
system(buffer);
}
* This is the High Performance Python Profiler portion of HotShot.
*/
-#include <Python.h>
-#include <compile.h>
-#include <eval.h>
-#include <frameobject.h>
-#include <structmember.h>
+#include "Python.h"
+#include "compile.h"
+#include "eval.h"
+#include "frameobject.h"
+#include "structmember.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
pack_add_info(self, "executable-version", buffer);
#ifdef MS_WIN32
- sprintf(cwdbuffer, "%I64d", frequency.QuadPart);
+ PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%I64d", frequency.QuadPart);
pack_add_info(self, "reported-performance-frequency", cwdbuffer);
#else
- sprintf(cwdbuffer, "%lu", rusage_diff);
+ PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", rusage_diff);
pack_add_info(self, "observed-interval-getrusage", cwdbuffer);
- sprintf(cwdbuffer, "%lu", timeofday_diff);
+ PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", timeofday_diff);
pack_add_info(self, "observed-interval-gettimeofday", cwdbuffer);
#endif
if (!PyArg_NoArgs(args))
return NULL;
- sprintf(encoding, "cp%d", GetACP());
+ PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP());
if (GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SISO639LANGNAME,
if (strlen(test_name) + strlen(msg) > sizeof(buf) - 50)
PyErr_SetString(TestError, "internal error msg too large");
else {
- sprintf(buf, "%s: %s", test_name, msg);
+ PyOS_snprintf(buf, sizeof(buf), "%s: %s", test_name, msg);
PyErr_SetString(TestError, buf);
}
return NULL;
int expected, int got)
{
char buf[1024];
- sprintf(buf, "%.200s #define == %d but sizeof(%.200s) == %d",
+ PyOS_snprintf(buf, sizeof(buf),
+ "%.200s #define == %d but sizeof(%.200s) == %d",
fatname, expected, typename, got);
PyErr_SetString(TestError, buf);
return (PyObject*)NULL;
TkttObject *v = (TkttObject *)self;
char buf[100];
- sprintf(buf, "<tktimertoken at %p%s>", v,
- v->func == NULL ? ", handler deleted" : "");
+ PyOS_snprintf(buf, sizeof(buf), "<tktimertoken at %p%s>", v,
+ v->func == NULL ? ", handler deleted" : "");
return PyString_FromString(buf);
}
int i, len;
len = a->ob_size;
if (len == 0) {
- sprintf(buf, "array('%c')", a->ob_descr->typecode);
+ PyOS_snprintf(buf, sizeof(buf), "array('%c')",
+ a->ob_descr->typecode);
return PyString_FromString(buf);
}
if (a->ob_descr->typecode == 'c') {
PyObject *t_empty = PyTuple_New(0);
- sprintf(buf, "array('c', ");
+ PyOS_snprintf(buf, sizeof(buf), "array('c', ");
s = PyString_FromString(buf);
v = array_tostring(a, t_empty);
Py_DECREF(t_empty);
PyString_ConcatAndDel(&s, PyString_FromString(")"));
return s;
}
- sprintf(buf, "array('%c', [", a->ob_descr->typecode);
+ PyOS_snprintf(buf, sizeof(buf), "array('%c', [", a->ob_descr->typecode);
s = PyString_FromString(buf);
comma = PyString_FromString(", ");
for (i = 0; i < len && !PyErr_Occurred(); i++) {
generic_repr(genericobject *g)
{
char buf[100];
- sprintf(buf, "<FORMS_object at %p, objclass=%d>",
- g, g->ob_generic->objclass);
+ PyOS_snprintf(buf, sizeof(buf), "<FORMS_object at %p, objclass=%d>",
+ g, g->ob_generic->objclass);
return PyString_FromString(buf);
}
form_repr(formobject *f)
{
char buf[100];
- sprintf(buf, "<FORMS_form at %p, window=%ld>",
- f, f->ob_form->window);
+ PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>",
+ f, f->ob_form->window);
return PyString_FromString(buf);
}
break;
#endif
default:
- sprintf(buf, "Flag '%c' is not supported.", *flags);
+ PyOS_snprintf(buf, sizeof(buf), "Flag '%c' is not supported.",
+ *flags);
PyErr_SetString(DbmError, buf);
return NULL;
}
case('U'): case('l'): case('u'):
{
char message[50];
- sprintf(message, "\\%c is not allowed", c);
+ PyOS_snprintf(message, sizeof(message),
+ "\\%c is not allowed", c);
PyErr_SetString(ErrorObject, message);
return NULL;
}
if (result==Py_None)
{
char message[50];
- sprintf(message,
+ PyOS_snprintf(message, sizeof(message),
"group did not contribute to the match");
PyErr_SetString(ErrorObject,
message);
if (rc == NO_ERROR)
os2_formatmsg(msgbuf, msglen, reason);
else
- sprintf(msgbuf, "unknown OS error #%d", errorcode);
+ PyOS_snprintf(msgbuf, sizeof(msgbuf),
+ "unknown OS error #%d", errorcode);
return msgbuf;
}
case 40: ver = "4.00"; break;
case 50: ver = "5.00"; break;
default:
- sprintf(tmp, "%d-%d", values[QSV_VERSION_MAJOR],
- values[QSV_VERSION_MINOR]);
+ PyOS_snprintf(tmp, sizeof(tmp),
+ "%d-%d", values[QSV_VERSION_MAJOR],
+ values[QSV_VERSION_MINOR]);
ver = &tmp[0];
}
int column = XML_GetErrorColumnNumber(parser);
enum XML_Error code = XML_GetErrorCode(parser);
- sprintf(buffer, "%.200s: line %i, column %i",
+ PyOS_snprintf(buffer, sizeof(buffer), "%.200s: line %i, column %i",
XML_ErrorString(code), lineno, column);
err = PyObject_CallFunction(ErrorObject, "s", buffer);
if ( err != NULL
{
PyObject *function = Py_None;
char buf[80];
- sprintf(buf, "|O:set_%.50s", funcname);
+ PyOS_snprintf(buf, sizeof(buf), "|O:set_%.50s", funcname);
if (!PyArg_ParseTuple(args, buf, &function))
return NULL;
if (function == Py_None) {
*tstate = PyThreadState_Get();
}
else {
- sprintf(buf, "set_%.50s(func): argument not callable", funcname);
+ PyOS_snprintf(buf, sizeof(buf),
+ "set_%.50s(func): argument not callable",
+ funcname);
PyErr_SetString(PyExc_TypeError, buf);
return NULL;
}
return NULL;
}
#endif
- sprintf(buf,
- "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>",
- (long)s->sock_fd, s->sock_family, s->sock_type, s->sock_proto);
+ PyOS_snprintf(buf, sizeof(buf),
+ "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>",
+ (long)s->sock_fd, s->sock_family,
+ s->sock_type,
+ s->sock_proto);
return PyString_FromString(buf);
}
"WSAStartup failed: requested version not supported");
break;
default:
- sprintf(buf, "WSAStartup failed: error code %d", ret);
+ PyOS_snprintf(buf, sizeof(buf),
+ "WSAStartup failed: error code %d", ret);
PyErr_SetString(PyExc_ImportError, buf);
break;
}
end++;
if (*end != '\0') {
bad:
- sprintf(buffer, "invalid literal for atoi(): %.200s", s);
+ PyOS_snprintf(buffer, sizeof(buffer),
+ "invalid literal for atoi(): %.200s", s);
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
while (*end && isspace(Py_CHARMASK(*end)))
end++;
if (*end != '\0') {
- sprintf(buffer, "invalid literal for atof(): %.200s", s);
+ PyOS_snprintf(buffer, sizeof(buffer),
+ "invalid literal for atof(): %.200s", s);
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
else if (errno != 0) {
- sprintf(buffer, "atof() literal too large: %.200s", s);
+ PyOS_snprintf(buffer, sizeof(buffer),
+ "atof() literal too large: %.200s", s);
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
prec = 6;
if (type == 'f' && fabs(x)/1e25 >= 1e25)
type = 'g';
- sprintf(fmt, "%%%s.%d%c", (flags&F_ALT) ? "#" : "", prec, type);
+ PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%d%c",
+ (flags&F_ALT) ? "#" : "",
+ prec, type);
/* worst case length calc to ensure no buffer overrun:
fmt = %#.<prec>g
buf = '-' + [0-9]*prec + '.' + 'e+' + (longest exp
"formatted float is too long (precision too large?)");
return -1;
}
- sprintf(buf, fmt, x);
+ PyOS_snprintf(buf, buflen, fmt, x);
return strlen(buf);
}
return -1;
if (prec < 0)
prec = 1;
- sprintf(fmt, "%%%s.%dl%c", (flags&F_ALT) ? "#" : "", prec, type);
+ PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%dl%c",
+ (flags&F_ALT) ? "#" : "",
+ prec, type);
/* buf = '+'/'-'/'0'/'0x' + '[0-9]'*max(prec, len(x in octal))
worst case buf = '0x' + [0-9]*prec, where prec >= 11 */
if (buflen <= 13 || buflen <= (size_t)2 + (size_t)prec) {
"formatted integer is too long (precision too large?)");
return -1;
}
- sprintf(buf, fmt, x);
+ PyOS_snprintf(buf, buflen, fmt, x);
/* When converting 0 under %#x or %#X, C leaves off the base marker,
* but we want it (for consistency with other %#x conversions, and
* for consistency with Python's hex() function).