On Mon, Jan 23, 2006 at 03:29:53PM -0500, Jim Jagielski wrote:
> On Jan 22, 2006, at 10:42 PM, Colm MacCarthaigh wrote:
> >I'll have much time for coding in the next few weeks. If anyone  
> >wants to
> >work on execd stuff fire away, most of what I have uncommitted is a  
> >mash
> >of things I have to clean up.
> 
> Where is it?

There's an execd-dev branch, where there is very very little. The
attached mod_exec.h should give an idea of the API I'm aiming for, but
my environment died and I have a new datacentre to build, so it'll be a
while before I recover from the mess!

-- 
Colm MacCárthaigh                        Public Key: [EMAIL PROTECTED]
/* Copyright 1999-2006 The Apache Software Foundation or its licensors, as
 * applicable.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @file mod_exec.h
 * @brief Main include file for the Apache Execution Module
 *
 * @defgroup MOD_EXEC mod_exec
 * @ingroup  APACHE_MODS
 * @{
 */
#ifndef MOD_EXEC_H
#define MOD_EXEC_H

/* Create a set of EXEC_DECLARE(type), EXEC_DECLARE_NONSTD(type) and
 * EXEC_DECLARE_DATA with appropriate export and import tags for the platform
 */
#if !defined(WIN32)
#define EXEC_DECLARE(type)            type
#define EXEC_DECLARE_NONSTD(type)     type
#define EXEC_DECLARE_DATA
#elif defined(EXEC_DECLARE_STATIC)
#define EXEC_DECLARE(type)            type __stdcall
#define EXEC_DECLARE_NONSTD(type)     type
#define EXEC_DECLARE_DATA
#elif defined(EXEC_DECLARE_EXPORT)
#define EXEC_DECLARE(type)            __declspec(dllexport) type __stdcall
#define EXEC_DECLARE_NONSTD(type)     __declspec(dllexport) type
#define EXEC_DECLARE_DATA             __declspec(dllexport)
#else
#define EXEC_DECLARE(type)            __declspec(dllimport) type __stdcall
#define EXEC_DECLARE_NONSTD(type)     __declspec(dllimport) type
#define EXEC_DECLARE_DATA             __declspec(dllimport)
#endif

/* XXX: temporary hack
 */
typedef ap_exec_handle_t    apr_proc_t; 

/**
 * A near clone of apr_proc_create(). Create a new process and execute a new 
 * program within that process.
 * @param new_proc The resulting process handle.
 * @param progname The program to run
 * @param args the arguments to pass to the new program.  The first
 *             one should be the program name.
 * @param env The new environment table for the new process.  This
 *            should be a list of NULL-terminated strings. This argument
 *            is ignored for APR_PROGRAM_ENV, APR_PROGRAM_PATH, and
 *            APR_SHELLCMD_ENV types of commands.
 * @param attr the procattr we should use to determine how to create the new
 *         process
 * @note This function returns without waiting for the new process to terminate;
 * use apr_proc_wait for that.
 */
EXEC_DECLARE(apr_status_t) ap_exec_proc_create(apr_exec_handle_t *new_proc,
                                               const char *progname,
                                               const char * const *args,
                                               const char * const *env,
                                               apr_procattr_t *attr);


/**
 * A clone of apr_proc_kill(), Terminate a process.
 * @param proc The process to terminate.
 * @param sig How to kill the process.
 */
EXEC_DECLARE(apr_status_t) ap_exec_proc_kill(apr_exec_handle_t *proc, int sig);

#endif /* MOD_EXEC_H */
/** @} */

Reply via email to