18 #ifdef HAVE_SYS_PSTAT_H
19 #include <sys/pstat.h>
21 #ifdef HAVE_PS_STRINGS
22 #include <machine/vmparam.h>
25 #if defined(__darwin__)
26 #include <crt_externs.h>
61 #if defined(HAVE_SETPROCTITLE)
62 #define PS_USE_SETPROCTITLE
63 #elif defined(HAVE_PSTAT) && defined(PSTAT_SETCMD)
65 #elif defined(HAVE_PS_STRINGS)
66 #define PS_USE_PS_STRINGS
67 #elif (defined(BSD) || defined(__hurd__)) && !defined(__darwin__)
68 #define PS_USE_CHANGE_ARGV
69 #elif defined(__linux__) || defined(_AIX) || defined(__sgi) || (defined(sun) && !defined(BSD)) || defined(ultrix) || defined(__ksr__) || defined(__osf__) || defined(__svr5__) || defined(__darwin__)
70 #define PS_USE_CLOBBER_ARGV
79 #if defined(_AIX) || defined(__linux__) || defined(__darwin__)
80 #define PS_PADDING '\0'
82 #define PS_PADDING ' '
86 #ifndef PS_USE_CLOBBER_ARGV
88 #define PS_BUFFER_SIZE 256
94 static size_t last_status_len;
122 #if defined(PS_USE_CLOBBER_ARGV)
129 char *end_of_area =
NULL;
136 for (i = 0; i < argc; i++)
138 if (i == 0 || end_of_area + 1 == argv[i])
139 end_of_area = argv[
i] + strlen(argv[i]);
142 if (end_of_area ==
NULL)
154 if (end_of_area + 1 ==
environ[i])
164 new_environ = (
char **)
malloc((i + 1) *
sizeof(
char *));
166 new_environ[i] = strdup(
environ[i]);
167 new_environ[
i] =
NULL;
172 #if defined(PS_USE_CHANGE_ARGV) || defined(PS_USE_CLOBBER_ARGV)
190 new_argv = (
char **)
malloc((argc + 1) *
sizeof(
char *));
191 for (i = 0; i < argc; i++)
192 new_argv[i] = strdup(argv[i]);
193 new_argv[argc] =
NULL;
195 #if defined(__darwin__)
201 *_NSGetArgv() = new_argv;
217 const char *host_info,
const char *initial_str)
232 #ifdef PS_USE_CLOBBER_ARGV
242 #ifdef PS_USE_CHANGE_ARGV
247 #ifdef PS_USE_CLOBBER_ARGV
261 #ifdef PS_USE_SETPROCTITLE
269 username, dbname, host_info);
272 "postgres: %s %s %s ",
273 username, dbname, host_info);
300 #ifdef PS_USE_CLOBBER_ARGV
313 #ifdef PS_USE_SETPROCTITLE
326 #ifdef PS_USE_PS_STRINGS
327 PS_STRINGS->ps_nargvstr = 1;
331 #ifdef PS_USE_CLOBBER_ARGV
346 static HANDLE ident_handle = INVALID_HANDLE_VALUE;
349 if (ident_handle != INVALID_HANDLE_VALUE)
350 CloseHandle(ident_handle);
370 #ifdef PS_USE_CLOBBER_ARGV