118c2aff7Sartem /***************************************************************************
218c2aff7Sartem  * CVSID: $Id$
318c2aff7Sartem  *
418c2aff7Sartem  * runner.c - Process running code
518c2aff7Sartem  *
618c2aff7Sartem  * Copyright (C) 2006 Sjoerd Simons, <sjoerd@luon.net>
7*3ab06c27SMilan Jurik  * Copyright (C) 2007 Codethink Ltd. Author Rob Taylor <rob.taylor@codethink.co.uk>
818c2aff7Sartem  *
918c2aff7Sartem  * Licensed under the Academic Free License version 2.1
1018c2aff7Sartem  *
1118c2aff7Sartem  * This program is free software; you can redistribute it and/or modify
1218c2aff7Sartem  * it under the terms of the GNU General Public License as published by
1318c2aff7Sartem  * the Free Software Foundation; either version 2 of the License, or
1418c2aff7Sartem  * (at your option) any later version.
1518c2aff7Sartem  *
1618c2aff7Sartem  * This program is distributed in the hope that it will be useful,
1718c2aff7Sartem  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1818c2aff7Sartem  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1918c2aff7Sartem  * GNU General Public License for more details.
2018c2aff7Sartem  *
2118c2aff7Sartem  * You should have received a copy of the GNU General Public License
2218c2aff7Sartem  * along with this program; if not, write to the Free Software
2318c2aff7Sartem  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
2418c2aff7Sartem  *
2518c2aff7Sartem  **************************************************************************/
2618c2aff7Sartem #include <stdio.h>
2718c2aff7Sartem #include <unistd.h>
2818c2aff7Sartem #include <stdlib.h>
2918c2aff7Sartem #include <sys/types.h>
3018c2aff7Sartem #include <sys/stat.h>
3118c2aff7Sartem #include <sys/wait.h>
3218c2aff7Sartem #include <signal.h>
3318c2aff7Sartem #include <string.h>
3418c2aff7Sartem 
3518c2aff7Sartem #define DBUS_API_SUBJECT_TO_CHANGE
3618c2aff7Sartem #include <dbus/dbus-glib-lowlevel.h>
3718c2aff7Sartem 
3818c2aff7Sartem #include <glib.h>
3918c2aff7Sartem #include "utils.h"
4018c2aff7Sartem #include "runner.h"
4118c2aff7Sartem 
4218c2aff7Sartem /* Successful run of the program */
4318c2aff7Sartem #define HALD_RUN_SUCCESS 0x0
4418c2aff7Sartem /* Process was killed because of running too long */
4518c2aff7Sartem #define  HALD_RUN_TIMEOUT 0x1
4618c2aff7Sartem /* Failed to start for some reason */
4718c2aff7Sartem #define HALD_RUN_FAILED 0x2
48