]> git.pld-linux.org Git - packages/apache-mod_proctitle.git/blame - mod_proctitle.c
- release 6 (by relup.sh)
[packages/apache-mod_proctitle.git] / mod_proctitle.c
CommitLineData
61a0d838
AM
1/*
2 * set process name to currently served vhost
3 * 2008, Arkadiusz Miskiewicz <arekm/maven.pl>
4 * apache license
5 */
6
7#include "ap_config.h"
8#include "httpd.h"
9#include "http_config.h"
10#include "http_request.h"
11#include "http_log.h"
12#include "http_protocol.h"
13#include "util_filter.h"
14#include "apr.h"
15#include "apr_strings.h"
16#include "apr_lib.h"
17
e948219d
AM
18#include <dlfcn.h>
19
61a0d838
AM
20#define MAXTITLE 1024
21
22static char *title_progname_full;
23static char *proctitle_argv=NULL;
24
25module AP_MODULE_DECLARE_DATA proctitle_module;
26
27static void apache_setproctitle(char *arg) {
28 if (proctitle_argv) {
29 int name_len = strlen(title_progname_full);
30 memcpy(proctitle_argv, title_progname_full, name_len);
31 if (arg) {
32 int arg_len, sep_len;
33 char *sep;
34
35 sep = ": ";
36 sep_len = strlen(sep);
37
38 arg_len = strlen(arg);
39 if (arg_len>MAXTITLE)
40 arg_len=MAXTITLE;
41
42 memcpy(proctitle_argv+name_len,sep,sep_len);
43 memcpy(proctitle_argv+name_len+sep_len,arg,arg_len);
44 proctitle_argv[arg_len+name_len+sep_len]='\0';
45 } else {
46 proctitle_argv[name_len]='\0';
47 }
48 }
49}
50
51static int apache_proctitle_enter (request_rec *r) {
6dd338ec 52 /* We only change title for main request, not subrequests */
61a0d838
AM
53 if (r->main)
54 return OK;
55 apache_setproctitle(r->server->server_hostname);
56 return OK;
57}
58
59static int apache_proctitle_exit (request_rec *r) {
60 apache_setproctitle(NULL);
61 return OK;
62}
63
64static int apache_proctitle_init (apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) {
65 char **symbol=NULL;
66 if(!proctitle_argv) {
67 symbol=dlsym(NULL,"ap_server_argv0");
68 if (symbol)
69 proctitle_argv=*symbol;
70 title_progname_full = strdup(proctitle_argv);
71 if (!title_progname_full)
72 proctitle_argv = NULL;
73 }
74 return OK;
75}
76
77static void register_hooks (apr_pool_t *p) {
78 ap_hook_post_config (apache_proctitle_init, NULL, NULL, APR_HOOK_MIDDLE);
79 ap_hook_access_checker(apache_proctitle_enter, NULL, NULL, APR_HOOK_FIRST);
80 ap_hook_log_transaction(apache_proctitle_exit, NULL, NULL, APR_HOOK_LAST);
81}
82
83module AP_MODULE_DECLARE_DATA proctitle_module = {
84 STANDARD20_MODULE_STUFF,
85 NULL, /* dir config creater */
86 NULL, /* dir merger --- default is to override */
87 NULL, /* server config */
88 NULL, /* merge server config */
89 NULL, /* command table */
90 register_hooks /* register hooks */
91};
This page took 0.151314 seconds and 4 git commands to generate.