Added #:redirect option to manifest.scm
authorTom Balzer <niebieskitrociny@gmail.com>
Sun, 17 Mar 2019 08:28:26 +0000 (03:28 -0500)
committerTom Balzer <niebieskitrociny@gmail.com>
Sun, 17 Mar 2019 08:28:26 +0000 (03:28 -0500)
guile/tomd/job.scm
include/scm_interface.h
src/guile_helpers.c

index b46cfdd..336d767 100644 (file)
             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)
@@ -54,6 +56,9 @@
 (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)))
@@ -66,7 +71,8 @@
         (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)
@@ -87,5 +93,6 @@
               command-line
               args
               start-trigger
-              end-trigger)
+              end-trigger
+              redirect)
     ))
index c6e9296..8ab1eab 100644 (file)
@@ -23,6 +23,7 @@ WRAP_SCM_FUNCTION_1("tomd job", "c-check-job", job_predicate)
 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)
 
index b68a769..e8a80ac 100644 (file)
@@ -19,6 +19,7 @@
 #include <fcntl.h>
 #include <string.h>
 #include <stdio.h>
+#include <stdbool.h>
 #include <sys/wait.h>
 
 #include "../include/job.h"
@@ -68,6 +69,7 @@ static struct job load_job(SCM job_list, int index)
   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 */
@@ -76,6 +78,7 @@ static struct job load_job(SCM job_list, int index)
   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];
@@ -89,6 +92,7 @@ static struct job load_job(SCM job_list, int index)
 
   ret.name = job_name;
   ret.cmd = job_cmd;
+  ret.redirect = redirect;
 
   for(int j = 1;
       j <= jlen;
@@ -177,21 +181,20 @@ void load_jobs(void)
       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;