blob: 2a518fb83eb5e8ea8ece1ecfad703a32aa027133 [file] [log] [blame]
/* upstart
*
* process.c - process definition handling
*
* Copyright © 2009 Canonical Ltd.
* Author: Scott James Remnant <scott@netsplit.com>.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif /* HAVE_CONFIG_H */
#include <string.h>
#include <nih/macros.h>
#include <nih/alloc.h>
#include <nih/logging.h>
#include "process.h"
/**
* process_new:
* @parent: parent of new process.
*
* Allocates and returns a new empty Process structure.
*
* If @parent is not NULL, it should be a pointer to another allocated
* block which will be used as the parent for this block. When @parent
* is freed, the returned block will be freed too.
*
* Returns: newly allocated Process structure or NULL if insufficient memory.
**/
Process *
process_new (const void *parent)
{
Process *process;
process = nih_new (parent, Process);
if (! process)
return NULL;
process->script = FALSE;
process->command = NULL;
return process;
}
/**
* process_name:
* @process: process type to convert.
*
* Converts an enumerated process type into the string used for the status
* and for logging purposes.
*
* Returns: static string or NULL if action not known.
**/
const char *
process_name (ProcessType process)
{
switch (process) {
case PROCESS_MAIN:
return N_("main");
case PROCESS_PRE_START:
return N_("pre-start");
case PROCESS_POST_START:
return N_("post-start");
case PROCESS_PRE_STOP:
return N_("pre-stop");
case PROCESS_POST_STOP:
return N_("post-stop");
default:
return NULL;
}
}
/**
* process_from_name:
* @process: process string to convert.
*
* Converts a process type string into the enumeration.
*
* Returns: enumerated action or -1 if not known.
**/
ProcessType
process_from_name (const char *process)
{
nih_assert (process != NULL);
if (! strcmp (process, "main")) {
return PROCESS_MAIN;
} else if (! strcmp (process, "pre-start")) {
return PROCESS_PRE_START;
} else if (! strcmp (process, "post-start")) {
return PROCESS_POST_START;
} else if (! strcmp (process, "pre-stop")) {
return PROCESS_PRE_STOP;
} else if (! strcmp (process, "post-stop")) {
return PROCESS_POST_STOP;
} else {
return -1;
}
}