diff --git a/libisoburn/trunk/xorriso/aux_objects.c b/libisoburn/trunk/xorriso/aux_objects.c index 37d99c3e..e35404f2 100644 --- a/libisoburn/trunk/xorriso/aux_objects.c +++ b/libisoburn/trunk/xorriso/aux_objects.c @@ -640,6 +640,16 @@ int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag) } +int Xorriso_lst_get_last(struct Xorriso_lsT *entry, struct Xorriso_lsT **last, + int flag) +{ + *last= NULL; + if(entry != NULL) + for((*last)= entry; (*last)->next != NULL; (*last)= (*last)->next); + return(1); +} + + /* --------------------------- End Xorriso_lsT ---------------------------- */ diff --git a/libisoburn/trunk/xorriso/aux_objects.h b/libisoburn/trunk/xorriso/aux_objects.h index ac3133cc..3a59a4af 100644 --- a/libisoburn/trunk/xorriso/aux_objects.h +++ b/libisoburn/trunk/xorriso/aux_objects.h @@ -130,6 +130,8 @@ char *Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag); int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag); +int Xorriso_lst_get_last(struct Xorriso_lsT *entry, struct Xorriso_lsT **last, + int flag); int Exclusions_new(struct ExclusionS **o, int flag); diff --git a/libisoburn/trunk/xorriso/base_obj.c b/libisoburn/trunk/xorriso/base_obj.c index 8920c05f..c7ac1e3b 100644 --- a/libisoburn/trunk/xorriso/base_obj.c +++ b/libisoburn/trunk/xorriso/base_obj.c @@ -223,6 +223,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag) #ifdef Xorriso_with_libjtE m->libjte_handle= NULL; + m->jigdo_params= NULL; + m->jigdo_values= NULL; #endif m->loaded_boot_bin_lba= 0; @@ -430,6 +432,8 @@ int Xorriso_destroy(struct XorrisO **xorriso, int flag) #ifdef Xorriso_with_libjtE if(m->libjte_handle) libjte_destroy(&(m->libjte_handle)); + Xorriso_lst_destroy_all(&(m->jigdo_params), 0); + Xorriso_lst_destroy_all(&(m->jigdo_values), 0); #endif Xorriso_detach_libraries(m, flag&1); diff --git a/libisoburn/trunk/xorriso/lib_mgt.c b/libisoburn/trunk/xorriso/lib_mgt.c index b464cb12..cfae4873 100644 --- a/libisoburn/trunk/xorriso/lib_mgt.c +++ b/libisoburn/trunk/xorriso/lib_mgt.c @@ -555,6 +555,8 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg, if(strcmp(aspect, "clear") == 0) { if(xorriso->libjte_handle != NULL) libjte_destroy(&(xorriso->libjte_handle)); + Xorriso_lst_destroy_all(&(xorriso->jigdo_params), 0); + Xorriso_lst_destroy_all(&(xorriso->jigdo_values), 0); return(1); } ret= Xorriso_assert_jte_handle(xorriso, 0); @@ -622,6 +624,17 @@ int Xorriso_jigdo_interpreter(struct XorrisO *xorriso, char *aspect, char *arg, Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); return(0); } + + ret= Xorriso_lst_new(&(xorriso->jigdo_params), aspect, xorriso->jigdo_params, + 1); + if(ret > 0) + ret= Xorriso_lst_new(&(xorriso->jigdo_values), arg, xorriso->jigdo_values, + 1); + if(ret <= 0) { + Xorriso_no_malloc_memory(xorriso, NULL, 0); + return(-1); + } + return(1); bad_arg: diff --git a/libisoburn/trunk/xorriso/text_io.c b/libisoburn/trunk/xorriso/text_io.c index 890e53db..c5e8382f 100644 --- a/libisoburn/trunk/xorriso/text_io.c +++ b/libisoburn/trunk/xorriso/text_io.c @@ -1091,7 +1091,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) static char channel_prefixes[4][4]= {".","R","I","M"}; static char load_names[][20]= {"auto", "session", "track", "lba", "volid"}; static int max_load_mode= 4; - struct Xorriso_lsT *paths, *leafs, *s; + struct Xorriso_lsT *paths, *leafs, *s, *plst, *vlst; no_defaults= flag&1; line= xorriso->result_line; @@ -1484,6 +1484,22 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) if(!(is_default && no_defaults)) Xorriso_status_result(xorriso,filter,fp,flag&2); + Xorriso_lst_get_last(xorriso->jigdo_params, &plst, 0); + Xorriso_lst_get_last(xorriso->jigdo_values, &vlst, 0); + if(plst == NULL || vlst == NULL) { + is_default= 1; + sprintf(line,"-jigdo clear 'all'\n"); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso, filter, fp, flag & 2); + } + while(plst != NULL && vlst != NULL) { + sprintf(line,"-jigdo %s %s\n", Xorriso_lst_get_text(plst, 0), + Text_shellsafe(Xorriso_lst_get_text(vlst, 0), sfe, 0)); + Xorriso_status_result(xorriso, filter, fp, flag & 2); + plst= Xorriso_lst_get_prev(plst, 0); + vlst= Xorriso_lst_get_prev(vlst, 0); + } + if(xorriso->do_global_uid) { sprintf(line,"-uid %lu\n", (unsigned long) xorriso->global_uid); Xorriso_status_result(xorriso,filter,fp,flag&2); diff --git a/libisoburn/trunk/xorriso/xorriso_private.h b/libisoburn/trunk/xorriso/xorriso_private.h index 4a68a4d6..8aa76c9a 100644 --- a/libisoburn/trunk/xorriso/xorriso_private.h +++ b/libisoburn/trunk/xorriso/xorriso_private.h @@ -329,6 +329,11 @@ struct XorrisO { /* the global context of xorriso */ #ifdef Xorriso_with_libjtE /* Parameters and state of Jigdo Template Export environment */ struct libjte_env *libjte_handle; + + /* List of -jigdo parameters since the most recent -jigdo clear */ + struct Xorriso_lsT *jigdo_params; + struct Xorriso_lsT *jigdo_values; + #endif /* LBA of boot image after image loading */ diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index ec45e547..ba10a2bb 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.09.29.152827" +#define Xorriso_timestamP "2010.09.29.164121"