aboutsummaryrefslogtreecommitdiff
path: root/devel/py-freebsd/files/patch-src-process.c
diff options
context:
space:
mode:
Diffstat (limited to 'devel/py-freebsd/files/patch-src-process.c')
-rw-r--r--devel/py-freebsd/files/patch-src-process.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/devel/py-freebsd/files/patch-src-process.c b/devel/py-freebsd/files/patch-src-process.c
new file mode 100644
index 000000000000..910492080eb0
--- /dev/null
+++ b/devel/py-freebsd/files/patch-src-process.c
@@ -0,0 +1,52 @@
+--- src/process.c.orig Sun May 8 08:55:00 2005
++++ src/process.c Sat Nov 25 18:12:52 2006
+@@ -51,10 +51,19 @@
+ static PyObject *
+ PyFB_setprogname(PyObject *self, PyObject *args)
+ {
+- char *progname;
++ const char *progname;
++ static PyObject *namestr = NULL;
+
+ if (!PyArg_ParseTuple(args, "s:setprogname", &progname))
+ return NULL;
++ /*
++ * Setprogname(3) does not copy the string, it only stores the
++ * string pointer. Make sure that the string object does not
++ * get garbage collected and its memory reused!
++ */
++ Py_XDECREF(namestr); /* maybe free old progname */
++ PyArg_ParseTuple(args, "O", &namestr);
++ Py_INCREF(namestr); /* keep new progname object */
+
+ setprogname(progname);
+ Py_RETURN_NONE;
+@@ -64,16 +73,24 @@
+ static char PyFB_setproctitle__doc__[] =
+ "setproctitle(title):\n"
+ "The setproctitle() library routine sets the process title that\n"
+-"appears on the ps(1) command.";
++"appears on the ps(1) command. The progname and a colon are\n"
++"prepended automatically. This behaviour is suppressed when the\n"
++"title starts with a dash (-) character. Calling with a None\n"
++"argument restores a default process title.";
+
+ static PyObject *
+ PyFB_setproctitle(PyObject *self, PyObject *args)
+ {
+- char *newtitle;
++ const char *newtitle;
+
+- if (!PyArg_ParseTuple(args, "s:setproctitle", &newtitle))
++ if (!PyArg_ParseTuple(args, "z:setproctitle", &newtitle))
+ return NULL;
+
+- setproctitle(newtitle);
++ if (newtitle == NULL)
++ setproctitle(NULL);
++ else if (*newtitle == '-')
++ setproctitle("-%s", newtitle+1);
++ else
++ setproctitle("%s", newtitle);
+ Py_RETURN_NONE;
+ }