#include <libguile.h>
#include <pwd.h>
+#include "../../include/job.h"
#include "../../include/macros.h"
#include "../../include/scm_interface.h"
#define MANIFEST_LOC "/.config/tomd/init/manifest.scm"
-static void load_job(SCM job_list, int index)
-{
+#define MAX_JOBS 10
+
+static struct job jobs[MAX_JOBS];
+
+static struct job load_job(SCM job_list, int index)
+{
+ struct job ret = { NULL };
SCM scm_cur_job = SCM_ARR(job_list, index);
if(scm_is_false(job_predicate(scm_cur_job))){
tomd_p("job %d wasn't a real job type.", index);
- return;
+ return ret;
}
SCM scm_cmd = get_cmd(scm_cur_job);
scm_to_locale_string(SCM_ARR(scm_args, j));
}
- tomd_p("JOB <%d>:", index);
- tomd_p(" cmd:'%s'", job_cmd);
+ ret.cmd = job_cmd;
+
for(int j = 0;
j < jlen;
j++){
- tomd_p(" arg [%d]:'%s'", j, real_args[j]);
+ ret.args[j] = real_args[j];
}
+ ret.args[jlen] = NULL;
+
+ return ret;
}
static void *load_manifest(void *args)
int i;
int len = SCM_LIST_LEN(scm_job_list);
+ tomd_p("len=%d, max=%d", len, MAX_JOBS);
for(i = 0;
- i < len;
+ i < len && i < MAX_JOBS;
i++){
- load_job(scm_job_list, i);
+ jobs[i] = load_job(scm_job_list, i);
}
tomd_p("looked at %d jobs.", i);
+ jobs[i].cmd = NULL;
}
static char *lookup_user_folder(void)
(void *) manifest);
tomd_p("Finished loading.");
+
+ int i = 0;
+ while(1){
+ if(i >= MAX_JOBS ||
+ jobs[i].cmd == NULL) {
+ break;
+ }
+ tomd_p("JOB <%d>:", i);
+ tomd_p(" cmd:'%s'", jobs[i].cmd);
+ int j = 0;
+ while(1){
+ if(i >= 10 ||
+ jobs[i].args[j] == NULL){
+ break;
+ }
+ tomd_p(" arg [%d]:'%s'", j, jobs[i].args[j]);
+ j++;
+ }
+ i++;
+ }
}