- Add a patch to fix a bug on setproctitle support. [1]

- Pass the maintainership to python@.

PR:		108085
Submitted by:	Martin Kammerhofer <dada@pluto.tugraz.at>
This commit is contained in:
Hye-Shik Chang 2007-03-29 07:20:09 +00:00
parent 52ab1dbc81
commit 61edb48911
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=188718
2 changed files with 54 additions and 1 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= freebsd
PORTVERSION= 0.9.3
PORTREVISION= 1
CATEGORIES= devel python
MASTER_SITES= ${MASTER_SITE_LOCAL} \
http://people.freebsd.org/~perky/distfiles/
@ -14,7 +15,7 @@ MASTER_SITE_SUBDIR= perky
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
DISTNAME= py-freebsd-${PORTVERSION}
MAINTAINER= perky@FreeBSD.org
MAINTAINER= python@FreeBSD.org
COMMENT= Python interface to FreeBSD-specific system libraries
USE_PYTHON= 2.3+

View File

@ -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;
}