+ tomd_p("arg to load_manifest is NULL");
+ exit(EXIT_FAILURE);
+ }
+ manifest_loc = (char *)args;
+
+ /* tomd_p("load_manifest called with arg '%s'", args); */
+
+ scm_c_primitive_load(args);
+
+ /* now that we have the file in memory, lets grab the value of job-list */
+ SCM scm_job_list =
+ scm_c_public_ref("tomd manifest", "job-list");
+
+ if(scm_is_false(scm_job_list)){
+ tomd_p("no job-list found in manifest.scm");
+ return NULL;
+ }
+
+ if(scm_is_false(scm_list_p(scm_job_list))){
+ tomd_p("job-list found, but isn't a list.");
+ return NULL;
+ }
+
+ SCM scm_job_predicate =
+ scm_c_public_ref("tomd job", "c-check-job");
+
+ SCM scm_job_cmd =
+ scm_c_public_ref("tomd job", "c-job-cmd");
+
+ SCM scm_job_args =
+ scm_c_public_ref("tomd job", "c-job-args");
+
+ SCM scm_job_start_trigger =
+ scm_c_public_ref("tomd job", "c-job-start-trigger");
+
+ SCM scm_job_end_trigger =
+ scm_c_public_ref("tomd job", "c-job-end-trigger");
+
+
+ SCM scm_len = scm_length(scm_job_list);
+ int len = scm_to_int(scm_len);
+ int i;
+ for(i = 0;
+ i < len;
+ i++){
+ SCM scm_i =
+ scm_from_signed_integer(i);
+ SCM scm_cur_job =
+ scm_list_ref(scm_job_list, scm_i);
+
+ /* scm_cur_job should be a job */
+ if(scm_is_false(scm_call(scm_job_predicate, scm_cur_job, SCM_UNDEFINED))){
+ tomd_p("job %d wasn't a real job type.", i);
+ continue;
+ }
+
+ SCM scm_cmd =
+ scm_call(scm_job_cmd,
+ scm_cur_job,
+ SCM_UNDEFINED);
+ SCM scm_args =
+ scm_call(scm_job_args,
+ scm_cur_job,
+ SCM_UNDEFINED);
+ SCM scm_start_trigger =
+ scm_call(scm_job_start_trigger,
+ scm_cur_job,
+ SCM_UNDEFINED);
+ SCM scm_end_trigger =
+ scm_call(scm_job_end_trigger,
+ scm_cur_job,
+ SCM_UNDEFINED);
+
+ char *job_cmd =
+ scm_to_locale_string(scm_cmd);
+
+ char *real_args[10];
+ int jlen = scm_to_int(scm_length(scm_args));
+ for(int j = 0;
+ j < jlen;
+ j++){
+ real_args[j] =
+ scm_to_locale_string(scm_list_ref(scm_args, scm_from_int(j)));
+ }
+
+ tomd_p("JOB <%d>:", i);
+ tomd_p(" cmd:'%s'", job_cmd);
+ for(int j = 0;
+ j < jlen;
+ j++){
+ tomd_p(" arg [%d]:'%s'", j, real_args[j]);
+ }
+ }
+ tomd_p("looked at %d jobs.", i);
+}
+
+static char *lookup_user_folder(void)
+{
+ uid_t user = getuid();
+ struct passwd *userpasswd =
+ getpwuid(user);
+ /* tomd_p("pw_name='%s'", userpasswd->pw_name); */
+ /* tomd_p("pw_passwd='%s'", userpasswd->pw_passwd); */
+ /* tomd_p("pw_uid='%d'", userpasswd->pw_uid); */
+ /* tomd_p("pw_gid='%d'", userpasswd->pw_gid); */
+ /* tomd_p("pw_gecos='%s'", userpasswd->pw_gecos); */
+ /* tomd_p("pw_dir='%s'", userpasswd->pw_dir); */
+ /* tomd_p("pw_shell='%s'", userpasswd->pw_shell); */
+
+ /* take the manifest location and sub ~ for pw_dir */
+ char *buffer = (char *)malloc(sizeof(char) * 300);
+ strcpy(buffer, userpasswd->pw_dir);
+ int len = strlen(userpasswd->pw_dir);
+ strcpy(buffer + len, MANIFEST_LOC);
+ /* tomd_p("full config path:'%s'", buffer); */
+ return buffer;