MCPcopy Create free account
hub / github.com/apache/httpd / rewritemap_program_child

Function rewritemap_program_child

modules/mappers/mod_rewrite.c:1309–1349  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1307}
1308
1309static apr_status_t rewritemap_program_child(apr_pool_t *p,
1310 const char *progname, char **argv,
1311 const char *user, const char *group,
1312 apr_file_t **fpout,
1313 apr_file_t **fpin)
1314{
1315 apr_status_t rc;
1316 apr_procattr_t *procattr;
1317 apr_proc_t *procnew;
1318
1319 if ( APR_SUCCESS == (rc=apr_procattr_create(&procattr, p))
1320 && APR_SUCCESS == (rc=apr_procattr_io_set(procattr, APR_FULL_BLOCK,
1321 APR_FULL_BLOCK, APR_NO_PIPE))
1322 && APR_SUCCESS == (rc=apr_procattr_dir_set(procattr,
1323 ap_make_dirstr_parent(p, argv[0])))
1324 && (!user || APR_SUCCESS == (rc=apr_procattr_user_set(procattr, user, "")))
1325 && (!group || APR_SUCCESS == (rc=apr_procattr_group_set(procattr, group)))
1326 && APR_SUCCESS == (rc=apr_procattr_cmdtype_set(procattr, APR_PROGRAM))
1327 && APR_SUCCESS == (rc=apr_procattr_child_errfn_set(procattr,
1328 rewrite_child_errfn))
1329 && APR_SUCCESS == (rc=apr_procattr_error_check_set(procattr, 1))) {
1330
1331 procnew = apr_pcalloc(p, sizeof(*procnew));
1332 rc = apr_proc_create(procnew, argv[0], (const char **)argv, NULL,
1333 procattr, p);
1334
1335 if (rc == APR_SUCCESS) {
1336 apr_pool_note_subprocess(p, procnew, APR_KILL_AFTER_TIMEOUT);
1337
1338 if (fpin) {
1339 (*fpin) = procnew->in;
1340 }
1341
1342 if (fpout) {
1343 (*fpout) = procnew->out;
1344 }
1345 }
1346 }
1347
1348 return (rc);
1349}
1350
1351static apr_status_t run_rewritemap_programs(server_rec *s, apr_pool_t *p)
1352{

Callers 1

run_rewritemap_programsFunction · 0.85

Calls 1

ap_make_dirstr_parentFunction · 0.85

Tested by

no test coverage detected