job-start-trigger c-job-start-trigger
job-end-trigger c-job-end-trigger
job-name c-job-name
+ job-redirect c-job-redirect
c-check-job))
;;; records
(define-record-type <job>
- (make-job name command-line args start-trigger end-trigger)
+ (make-job name command-line args start-trigger end-trigger redirect)
job?
(name job-name)
(command-line job-command-line)
(args job-args)
(start-trigger job-start-trigger)
- (end-trigger job-end-trigger))
+ (end-trigger job-end-trigger)
+ (redirect job-redirect))
;;; this sillyness is because i'm not sure how to expand macros in scm_call
(define (c-check-job obj)
(define (c-job-name obj)
(job-name obj))
+(define (c-job-redirect obj)
+ (job-redirect obj))
+
;;; functions
(define (get-keyword-value args keyword default)
(let ((keyword-value (memq keyword args)))
(args (get-keyword-value rest #:args (list)))
(start-trigger (get-keyword-value rest #:start-trigger 'login))
(end-trigger (get-keyword-value rest #:end-trigger #f))
- (name (get-keyword-value rest #:name "default")))
+ (name (get-keyword-value rest #:name "default"))
+ (redirect (get-keyword-value rest #:redirect #f)))
;; do thing with keyword-ed variables
;; (display "settings:") (newline)
;; (format (current-output-port)
command-line
args
start-trigger
- end-trigger)
+ end-trigger
+ redirect)
))
WRAP_SCM_FUNCTION_1("tomd job", "c-job-name", get_name)
WRAP_SCM_FUNCTION_1("tomd job", "c-job-cmd", get_cmd)
WRAP_SCM_FUNCTION_1("tomd job", "c-job-args", get_args)
+WRAP_SCM_FUNCTION_1("tomd job", "c-job-redirect", get_redirect)
WRAP_SCM_FUNCTION_1("tomd job", "c-job-start-trigger", get_start_trigger)
WRAP_SCM_FUNCTION_1("tomd job", "c-job-end-trigger", get_end_trigger)
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
+#include <stdbool.h>
#include <sys/wait.h>
#include "../include/job.h"
SCM scm_name = get_name(scm_cur_job);
SCM scm_cmd = get_cmd(scm_cur_job);
SCM scm_args = get_args(scm_cur_job);
+ SCM scm_redirect = get_redirect(scm_cur_job);
/* TODO > Handle these. */
/* planned is to be able to run at different points, and at */
SCM scm_start_trigger = get_start_trigger(scm_cur_job);
SCM scm_end_trigger = get_end_trigger(scm_cur_job);
+ bool redirect = scm_to_bool(scm_redirect);
char *job_name = scm_to_locale_string(scm_name);
char *job_cmd = scm_to_locale_string(scm_cmd);
char *real_args[10];
ret.name = job_name;
ret.cmd = job_cmd;
+ ret.redirect = redirect;
for(int j = 1;
j <= jlen;
break;
}
tomd_p("JOB <%d>:", i);
- tomd_p(" cmd:'%s'", jobs[i].cmd);
+ tomd_p(" cmd:'%s'", jobs[i].cmd);
int j = 1;
while(1){
if(i >= 10 ||
jobs[i].args[j] == NULL){
break;
}
- tomd_p(" arg [%d]:'%s'", j, jobs[i].args[j]);
+ tomd_p("arg [%d]:'%s'", j, jobs[i].args[j]);
j++;
}
i++;
}
}
-
static int stdincache;
static int stdoutcache;
static int stderrcache;