diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/include/service.h | 6 | ||||
| -rw-r--r-- | lib/util/rdsvc.c | 8 | 
2 files changed, 14 insertions, 0 deletions
| diff --git a/lib/include/service.h b/lib/include/service.h index 49c5432..03d768e 100644 --- a/lib/include/service.h +++ b/lib/include/service.h @@ -51,6 +51,11 @@ enum {  	RDSVC_NO_DEPS = 0x08,	/* do not store dependencies */  }; +enum { +	/* truncate stdout */ +	SVC_FLAG_TRUNCATE_OUT = 0x01, +}; +  typedef struct exec_t {  	struct exec_t *next;  	int argc;		/* number of elements in argument vector */ @@ -67,6 +72,7 @@ typedef struct service_t {  	char *desc;		/* description string */  	char *ctty;		/* controlling tty or log file */  	int rspwn_limit;	/* maximum respawn count */ +	unsigned int flags;	/* SVC_FLAG_* bit field */  	/* linked list of command lines to execute */  	exec_t *exec; diff --git a/lib/util/rdsvc.c b/lib/util/rdsvc.c index 6a964f7..37c7ba0 100644 --- a/lib/util/rdsvc.c +++ b/lib/util/rdsvc.c @@ -70,8 +70,16 @@ static int svc_desc(service_t *svc, char *arg, rdline_t *rd)  static int svc_tty(service_t *svc, char *arg, rdline_t *rd)  { +	if (strncmp(arg, "truncate", 8) == 0 && isspace(arg[8])) { +		svc->flags |= SVC_FLAG_TRUNCATE_OUT; +		arg += 8; +		while (isspace(*arg)) +			++arg; +	} +  	if (try_unescape(arg, rd))  		return -1; +  	svc->ctty = try_strdup(arg, rd);  	return svc->ctty == NULL ? -1 : 0;  } | 
