a function I think, especially with the fact that
the mapping of getpid() to APR_PID_T_FMT isn't
consistant in some areas.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@265506
13f79535-47bb-0310-9956-
ffa450edef68
*/
AP_DECLARE(char *) ap_escape_quotes(apr_pool_t *p, const char *instring);
+/**
+ * Given a string, append the PID deliminated by delim.
+ * Usually used to create a pid-appended filepath name
+ * (eg: /a/b/foo -> /a/b/foo.6726). A function, and not
+ * a macro, to avoid unistd.h dependency
+ * @param p The pool to allocate memory from
+ * @param string The string to append the PID to
+ * @param delim The string to use to deliminate the string from the PID
+ * @return A copy of the string with the PID appended
+ */
+AP_DECLARE(char *) ap_append_pid(apr_pool_t *p, const char *string,
+ const char *delim);
+
/* Misc system hackery */
/**
* Given the name of an object in the file system determine if it is a directory
static int cgid_pre_config(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp)
{
- sockname = apr_psprintf(pconf, "%s.%" APR_PID_T_FMT, DEFAULT_SOCKET,
- getpid());
+ sockname = ap_append_pid(pconf, DEFAULT_SOCKET, ".");
return OK;
}
}
/* Make sure the pid is appended to the sockname */
- sockname = apr_psprintf(cmd->pool, "%s.%" APR_PID_T_FMT, arg, getpid());
+ sockname = ap_append_pid(cmd->pool, arg, ".");
sockname = ap_server_root_relative(cmd->pool, sockname);
if (!sockname) {
static const char *log_pid_tid(request_rec *r, char *a)
{
if (*a == '\0' || !strcmp(a, "pid")) {
- return apr_psprintf(r->pool, "%" APR_PID_T_FMT, getpid());
+ return ap_append_pid(r->pool, "", "");
}
else if (!strcmp(a, "tid") || !strcmp(a, "hextid")) {
#if APR_HAS_THREADS
if(dir) {
apr_status_t res;
- char buf[512];
+ char *buf = NULL ;
int len = strlen(sconf->gprof_dir) - 1;
if(*(dir + len) == '%') {
dir[len] = '\0';
- apr_snprintf(buf, sizeof(buf), "%sgprof.%d", dir, (int)getpid());
+ buf = ap_append_pid(pconf, dir, "gprof.");
}
- else {
- buf[0] = '\0';
- }
- use_dir = ap_server_root_relative(pconf, buf[0] ? buf : dir);
+ use_dir = ap_server_root_relative(pconf, buf ? buf : dir);
res = apr_dir_make(use_dir,
APR_UREAD | APR_UWRITE | APR_UEXECUTE |
APR_GREAD | APR_GEXECUTE |
*outchr = '\0';
return outstring;
}
+
+/*
+ * Given a string, append the PID deliminated by delim.
+ * Usually used to create a pid-appended filepath name
+ * (eg: /a/b/foo -> /a/b/foo.6726). A function, and not
+ * a macro, to avoid unistd.h dependency
+ */
+AP_DECLARE(char *) ap_append_pid(apr_pool_t *p, const char *string,
+ const char *delim)
+{
+ return apr_psprintf(p, "%s%s%" APR_PID_T_FMT, string,
+ delim, getpid());
+
+}