12 #include "../config.h"
16 #include <sys/types.h>
41 #ifdef Xorriso_with_readlinE
42 #ifdef Xorriso_with_old_readlinE
46 #include <readline/readline.h>
47 #include <readline/history.h>
49 #define Xorriso_with_line_editoR yes
52 #ifdef Xorriso_with_editlinE
54 #define Xorriso_with_line_editoR yes
73 #ifdef Xorriso_with_editlinE
77 static EditLine *editline_handle= NULL;
78 static History *editline_history= NULL;
79 static int editline_is_initialized= 0;
82 char *Xorriso__editline_prompt(EditLine *el_handle)
88 void Xorriso_init_editline(
struct XorrisO *xorriso,
int flag)
94 if(editline_is_initialized != 0)
96 editline_is_initialized= -1;
98 editline_handle= el_init(xorriso->
progname, stdin, stdout, stderr);
99 if(editline_handle == NULL)
101 el_set(editline_handle, EL_EDITOR,
"emacs");
102 el_set(editline_handle, EL_PROMPT, &Xorriso__editline_prompt);
104 editline_history= history_init();
105 if(editline_history == NULL)
107 history(editline_history, &ev, H_SETSIZE, 1000);
108 el_set(editline_handle, EL_HIST, history, editline_history);
110 editline_is_initialized= 1;
115 int Xorriso__shutdown_editline(
int flag)
117 if(editline_history != NULL)
118 history_end(editline_history);
119 editline_history= NULL;
120 if(editline_handle != NULL)
121 el_end(editline_handle);
122 editline_handle= NULL;
123 editline_is_initialized= 0;
129 #ifdef Xorriso_with_readlinE
132 const char *Xorriso__readline_license(
int flag)
134 #ifdef RL_VERSION_MAJOR
135 #if RL_VERSION_MAJOR > 5
147 #ifdef Xorriso_with_line_editoR
149 char *Xorriso_emul_readline(
struct XorrisO *xorriso,
int flag)
152 #ifdef Xorriso_with_editlinE
160 Xorriso_init_editline(xorriso, 0);
161 if(editline_is_initialized < 0) {
167 cpt= el_gets(editline_handle, &count);
168 if(count == -1 || cpt == NULL)
170 retpt= calloc(1, count + 1);
173 memcpy(retpt, cpt, count);
179 #ifdef Xorriso_with_readlinE
195 void Xorriso_emul_add_history(
struct XorrisO *xorriso,
char *line,
int flag)
197 #ifdef Xorriso_with_editlinE
203 Xorriso_init_editline(xorriso, 0);
204 if(editline_is_initialized < 0)
207 history(editline_history, &ev, H_ENTER, line);
211 #ifdef Xorriso_with_readlinE
226 int Xorriso_status_history(
struct XorrisO *xorriso,
char *filter, FILE *fp,
230 #ifdef Xorriso_with_editlinE
234 int hc, i, was_end= 0;
240 Xorriso_init_editline(xorriso, 0);
241 if(editline_is_initialized < 0)
246 ret= history(editline_history, &ev, H_LAST);
247 for(hc= 0; ret != -1; hc++) {
248 ret= history(editline_history, &ev, H_PREV);
249 was_end = (strcmp(ev.str,
"-end") == 0);
258 ret= history(editline_history, &ev, H_LAST);
259 for(; i < hc && ret != -1; i++) {
265 if(str[l - 1] ==
'\n')
272 ret= history(editline_history, &ev, H_PREV);
280 #ifdef Xorriso_with_readlinE
287 for(hc= 0; hl[hc] != NULL; hc++);
289 if(strcmp(hl[hc-1]->line,
"-end") == 0)
327 char **argv= NULL, *linept, *why_append=
"";
328 int ret, argc= 0, base_length= 0, l, append_line;
329 #ifdef Xorriso_with_line_editoR
338 gettimeofday(&tv, NULL);
339 tdiff= tv.tv_sec+(1.e-6*(double) tv.tv_usec);
344 #ifdef Xorriso_with_line_editoR
345 no_history= (flag & 1) || xorriso->
use_stdin;
359 #ifdef Xorriso_with_line_editoR
365 goto put_into_history;
369 (xorriso->
dialog == 2)) == NULL) {
373 kill(getpid(),SIGHUP);
381 cpt= Xorriso_emul_readline(xorriso, 0);
384 kill(getpid(),SIGHUP);
388 if(l >= linesize - base_length - 1) {
389 strncpy(linept, cpt, linesize - 1);
390 line[linesize - 1]= 0;
391 sprintf(xorriso->
info_text,
"Input line too long !");
403 (xorriso->
dialog == 2)) == NULL) {
407 kill(getpid(),SIGHUP);
415 if(xorriso->
dialog == 2 && !(flag & 8)) {
417 if(linept != line && strcmp(linept,
"@@@") == 0) {
418 sprintf(xorriso->
info_text,
"Incomplete input line cleared by %s",
424 sprintf(xorriso->
info_text,
"-------------------------------------\n");
426 sprintf(xorriso->
info_text,
"Enter new text for empty input line :\n");
434 if(ret == 0 && !append_line) {
436 if(l >= linesize - 1) {
437 sprintf(xorriso->
info_text,
"Input line too long !");
444 why_append=
"Quoted newline char";
446 if(l > 0 && !append_line)
447 if(line[l - 1] ==
'\\') {
450 why_append=
"Trailing backslash ";
453 base_length= strlen(line);
454 linept= line + base_length;
456 "---------------------------------------------------------------\n");
459 "%s : Enter rest of line (or @@@ to clear it) :\n", why_append);
465 #ifdef Xorriso_with_line_editoR
468 if((flag & 32) || (line[0]!=0 && strcmp(last_input,line)!=0 && !no_history)) {
470 (strncmp(line,
"-history:",9)==0 || strncmp(line,
"-history ",9)==0))) {
471 Xorriso_emul_add_history(xorriso, line, 0);
472 strncpy(last_input,line,
sizeof(last_input)-1);
473 last_input[
sizeof(last_input)-1]= 0;
482 #ifdef Xorriso_with_line_editoR
487 gettimeofday(&tv, NULL);
488 xorriso->
idle_time+= tv.tv_sec+(1.e-6*(double) tv.tv_usec)-tdiff;
512 char *line= NULL, *cpt, *previous_line= NULL;
513 char *abort_req_text,*abort_really_text;
524 abort_req_text=
"request to end";
525 abort_really_text=
"done reading";
527 abort_req_text=
"request to abort";
528 abort_really_text=
"abort this command";
538 if(strcmp(cpt,
"@@@")==0 ||
539 strcmp(cpt,
"x")==0 || strcmp(cpt,
"X")==0 ||
540 strcmp(cpt,
"q")==0 || strcmp(cpt,
"Q")==0) {
542 strcpy(previous_line,cpt);
544 "... [%s = %s registered. Really %s ? (y/n) ] ...\n",
545 cpt,abort_req_text,abort_really_text);
551 if(strcmp(cpt,previous_line)==0 ||
552 ((*cpt==
'Y' || *cpt==
'y' || *cpt==
'j' || *cpt==
'J' || *cpt==
'1') &&
556 "------- ( %s confirmed )\n",abort_req_text);
560 sprintf(xorriso->
info_text,
"....... ( %s revoked )\n",abort_req_text);
566 "----------- [%s = request to abort registered. Operation ends ] ------------\n",
570 }
else if(*cpt==
'@') {
571 if(strcmp(cpt,
"@@")==0) {
574 }
else if(strcmp(cpt,
"@")==0) {
580 "... [@ = prompt suppression registered. Prompting disabled temporarily ] ...\n");
587 "--- Unrecognized input beginning with @. Please enter something else.\n");
598 if(strcmp(cpt,
"i")==0 || strcmp(cpt,
"I")==0 ||
599 strcmp(cpt,
"n")==0 || strcmp(cpt,
"N")==0 ||
602 }
else if(strcmp(cpt,
"r")==0 || strcmp(cpt,
"R")==0 ||
603 strcmp(cpt,
"y")==0 || strcmp(cpt,
"Y")==0) {
608 "--- Please enter one of : empty line, i,n, r,y, q,x, @, @@@\n");
613 }
else if(*cpt!=0 && !(flag&1)) {
618 "-------------- [ Input of option registered. Operation ends ] ---------------\n");
625 "--- Please enter one of : empty line, @, @@@\n");
645 int *argc,
char ***argv,
int flag)
647 char *line= NULL, *linept, *fgot;
648 int l, base_length, append_line, ret, mem_linecount, i;
656 mem_linecount= *linecount;
666 sprintf(xorriso->
info_text,
"Open quotation mark at end of input");
679 if(ret == 0 && !append_line) {
684 if(l > 0 && !append_line)
685 if(line[l - 1] ==
'\\') {
691 sprintf(xorriso->
info_text,
"Input line too long !");
697 base_length= strlen(line);
698 linept= line + base_length;
700 if((flag & 1) && !(flag & 8)) {
706 for(i= 0; i < *argc; i++) {
707 if((*argv)[i][0] == 0) {
708 sprintf(xorriso->
info_text,
"Empty text as quoted argument in ");
709 }
else if(strlen((*argv)[i]) >=
SfileadrL) {
712 "Input text too long and now truncated in");
715 if(mem_linecount + 1 < *linecount)
717 "lines %d to %d", mem_linecount + 1, *linecount);
720 "line %d", mem_linecount + 1);
727 (*argv)[0]= strdup(line);
728 if((*argv)[0] == NULL) {
743 int *linecount,
int flag)
752 ept= strchr(spt,
'\n');
758 if(ept!=NULL && l==0)
761 (*linecount)+= l/width;
766 (*linecount)+= !!(l%width);
782 char *info_text= NULL;
790 if(info_text == NULL)
796 ".... [Press Enter to continue. @,Enter avoids further stops. @@@ aborts] ....\n");
818 pthread_mutex_t *lock_handle,
819 char *purpose,
int flag)
822 static int complaints= 0, complaint_limit= 5;
824 ret= pthread_mutex_lock(lock_handle);
830 if(complaints <= complaint_limit)
832 "xorriso : pthread_mutex_lock() for %s returns %d\n",
843 pthread_mutex_t *lock_handle,
844 char *purpose,
int flag)
847 static int complaints= 0, complaint_limit= 5;
849 ret= pthread_mutex_unlock(lock_handle);
855 if(complaints <= complaint_limit)
857 "xorriso : pthread_mutex_unlock() for %s returns %d\n",
887 char *
text,
int flag)
896 msglist= *xorriso_msglist;
901 if(*xorriso_msglist == NULL)
902 *xorriso_msglist= msglist;
912 char *in_text,
int channel_no,
int flag)
921 char *rpt, *npt, *
text= NULL, *line= NULL;
922 int ret= 1, info_redirected= 0, result_redirected= 0, l;
924 FILE *logfile_fp, *pktlog_fp;
925 static int num_channels= 4;
926 static char channel_prefixes[4][4]= {
".",
"R",
"I",
"M"};
929 #ifdef Xorriso_fetch_with_msg_queueS
930 static int complaints= 0, complaint_limit= 5;
936 if(channel_no<0 || channel_no>=num_channels)
939 #ifdef Xorriso_fetch_with_msg_queueS
944 if(complaints <= complaint_limit)
946 "xorriso : pthread_mutex_lock() for write_to_channel returns %d\n",
956 if((flag&2) && logfile_fp!=NULL) {
958 "! end ! end ! end ! end ! end ! end ! end ! end xorriso log : %s : %s\n",
959 channel_prefixes[channel_no],
Sfile_datestr(time(0),1|2|256));
961 xorriso->
logfile_fp[channel_no]= logfile_fp= NULL;
963 if((flag&4) && pktlog_fp!=NULL) {
965 "I:1:! end ! end ! end ! end ! end ! end ! end ! end xorriso log : %s : %s\n",
966 channel_prefixes[channel_no],
Sfile_datestr(time(0),1|2|256));
970 if((flag & 8) && xorriso->
stderr_fp != NULL) {
981 "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : %s : %s\n",
982 channel_prefixes[channel_no],
Sfile_datestr(time(0),1|2|256));
990 "I:1:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! xorriso log : . : %s\n",
995 ret= truncate(
text, (off_t) 0);
996 if(ret == -1 && errno != ENOENT)
1002 if(flag & (2 | 4 | 8))
1015 (channel_no > 0 ? channel_no - 1 : 0));
1020 result_redirected= 1;
1027 if(channel_no==1 || channel_no==3) {
1028 if(result_redirected) {
1033 { ret= -1;
goto ex; }
1039 if(channel_no==2 || channel_no==3) {
1040 if(info_redirected) {
1045 { ret= -1;
goto ex; }
1051 fprintf(stderr,
"%s",
text);
1054 if(logfile_fp!=NULL) {
1055 fprintf(logfile_fp,
"%s",
text);
1062 sprintf(prefix,
"%s:x: ",channel_prefixes[channel_no]);
1064 npt= strchr(rpt,
'\n');
1069 if(!result_redirected) {
1071 ret= fwrite(prefix,5,1,stdout);
1076 if(pktlog_fp!=NULL) {
1077 ret= fwrite(prefix,5,1,pktlog_fp);
1083 if(result_redirected) {
1086 memcpy(line, prefix, 5);
1087 memcpy(line + 5, rpt, l);
1089 line[5 + l + 1] = 0;
1096 { ret= -1;
goto ex; }
1098 ret= fwrite(rpt,strlen(rpt),1,stdout);
1101 ret= fwrite(
"\n",1,1,stdout);
1106 if(pktlog_fp!=NULL) {
1107 ret= fwrite(rpt,strlen(rpt),1,pktlog_fp);
1110 ret= fwrite(
"\n",1,1,pktlog_fp);
1117 if(result_redirected) {
1120 memcpy(line, prefix, 5);
1121 memcpy(line + 5, rpt, l);
1129 { ret= -1;
goto ex; }
1131 ret= fwrite(rpt,npt+1-rpt,1,stdout);
1136 if(pktlog_fp!=NULL) {
1137 ret= fwrite(rpt,npt+1-rpt,1,pktlog_fp);
1150 if(
text != in_text &&
text != NULL)
1154 #ifdef Xorriso_fetch_with_msg_queueS
1161 if(complaints <= complaint_limit)
1163 "xorriso : pthread_mutex_unlock() for write_to_channel returns %d\n",
1187 "Overflow of message output redirection stack", 0,
"FATAL", 0);
1212 #ifdef Xorriso_fetch_with_msg_queueS
1228 if(stack_handle == -1)
1234 "Program error: Wrong message output redirection stack handle",
1257 int timeout,
int flag)
1259 int ret, locked= 0, yes= 0;
1260 static int u_wait= 19000;
1265 if(stack_handle == -1)
1267 start_time= time(NULL);
1271 "message watcher fetch operation", 0);
1287 "message watcher fetch operation", 0);
1292 if(yes && (flag & 4)) {
1294 if(time(NULL) <= start_time + timeout)
1301 "message watcher fetch operation", 0);
1302 if(ret <= 0 && yes >= 0)
1313 int i, ret, locked= 0;
1320 if(stack_handle == -1)
1326 "Program error: Wrong message output redirection stack handle",
1335 if(*result_list == NULL)
1339 if(*info_list == NULL)
1358 xorriso= (
struct XorrisO *) handle;
1360 fprintf(xorriso->
stderr_fp,
"%s", text);
1363 fprintf(stderr,
"%s", text);
1383 xorriso= (
struct XorrisO *) handle;
1391 if(strchr(
"RIM", text[0]) != NULL && text[1] ==
':' &&
1392 strchr(
"01", text[2]) != NULL && text[3] ==
':' && text[4] ==
' ')
1393 nl= (text[2] ==
'1');
1400 if(text[l - 1] ==
'\n')
1404 if(text[0] ==
'R') {
1405 ret= fwrite(text + 5, l - 5, 1, stdout);
1407 ret= fwrite(text + 5, l - 5, 1,
1419 int *line_count,
int flag)
1423 int (*handler)(
void *handle,
char *
text);
1428 if(handler == NULL) {
1432 for(lpt= result_list; lpt != NULL; lpt= lpt->
next) {
1440 if(handler == NULL) {
1444 for(lpt= info_list; lpt != NULL; lpt= lpt->
next) {
1457 int ret, u_wait= 25000, line_count, sleep_thresh= 20, lock_failure= 0;
1458 struct Xorriso_lsT *result_list= NULL, *info_list= NULL;
1459 static int debug_sev= 0;
1461 xorriso= (
struct XorrisO *) state_pt;
1471 "xorriso : DEBUG : Concurrent message watcher started\n");
1480 "message watcher fetch operation", 1);
1491 "message watcher fetch operation", 1);
1502 "message watcher fetch operation", 1);
1509 if(line_count < sleep_thresh)
1517 "xorriso : DEBUG : Concurrent message watcher ended\n");
1524 int (*result_handler)(
void *handle,
char *text),
1525 void *result_handle,
1526 int (*info_handler)(
void *handle,
char *text),
1530 int ret, u_wait= 1000, locked= 0, pushed= 0, uret, line_count= 0;
1531 struct Xorriso_lsT *result_list= NULL, *info_list= NULL;
1532 pthread_attr_t attr;
1533 pthread_attr_t *attr_pt = NULL;
1539 "Cannot acquire mutex lock for managing concurrent message watcher",
1548 "There is already a concurrent message watcher running");
1566 pthread_attr_init(&attr);
1567 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
1572 "Cannot create thread for concurrent message watcher");
1587 if(ret <= 0 && pushed) {
1589 &result_list, &info_list, 0);
1603 "Cannot release mutex lock for managing concurrent message watcher",
1616 int ret, u_wait= 1000, locked= 0, uret, line_count= 0;
1617 struct Xorriso_lsT *result_list= NULL, *info_list= NULL;
1626 "Cannot acquire mutex lock for managing concurrent message watcher",
1635 "There is no concurrent message watcher running");
1652 "message watcher fetch operation", 1);
1655 "Cannot obtain mutex lock for managing concurrent message watcher",
1662 &result_list, &info_list, 0);
1666 "message watcher fetch operation", 1);
1675 "message watcher fetch operation", 1);
1687 "Cannot release mutex lock for managing concurrent message watcher",
1926 int *argc,
char ***argv,
int *available,
int flag)
1947 for(i= 0; i < *argc; i++)
1951 (*argv)[*argc - i - 1]= strdup(f->
name);
1952 if((*argv)[*argc - i - 1] == NULL)
1961 if(strcmp(f->
name, name) != 0)
1981 goto unexpected_null;
1986 *argv= calloc(f->
num_words,
sizeof(
char *));
1990 for(i= 0; i < *argc; i++)
1994 for(i= 0; i < *argc; i++) {
1997 if((*argv)[i] == NULL)
2003 "Program error: Unexpected NULL pointer in message sieve.",
2028 struct Xorriso_sieve_big_filteR {
2038 static struct Xorriso_sieve_big_filteR filters[] = {
2039 {
"-changes_pending", 3,
"-changes_pending",
"", 1,
2040 { 0, -1, -1, -1, -1, -1}, 1, 0},
2041 {
"? -dev", 3,
"? -dev",
"", 4, { 0, 1, 3, 4, -1, -1},
2043 {
"?? -dev", 3,
"?? -dev",
"", 4, { 0, 1, 3, 4, -1, -1},
2045 {
"Abstract File:", 3,
"Abstract File: ",
"", 1, { 0, -1, -1, -1, -1, -1},
2047 {
"After commit :", 3,
"After commit :",
"", 1, { 0, -1, -1, -1, -1, -1},
2049 {
"App Id :", 3,
"App Id : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2051 {
"Biblio File :", 3,
"Biblio File : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2053 {
"Build timestamp :", 3,
"Build timestamp : ",
"", 1,
2054 { 0, -1, -1, -1, -1, -1}, 1, 1},
2055 {
"CopyrightFile:", 3,
"CopyrightFile: ",
"", 1, { 0, -1, -1, -1, -1, -1},
2057 {
"Creation Time:", 3,
"Creation Time: ",
"", 1, { 0, -1, -1, -1, -1, -1},
2059 {
"DVD obs 64 kB:", 3,
"DVD obs 64 kB:",
"", 1, { 0, -1, -1, -1, -1, -1},
2061 {
"Drive access :", 3,
"Drive access : ",
": ", 2, { 0, 1, -1, -1, -1, -1},
2063 {
"Drive current:", 3,
"Drive current:",
"", 2, { 0, 1, -1, -1, -1, -1},
2065 {
"Drive id :", 3,
"Drive id :",
"", 1, { 0, -1, -1, -1, -1, -1},
2067 {
"Drive type :", 3,
"Drive type :",
"", 3, { 1, 3, 5, -1, -1, -1},
2069 {
"Eff. Time :", 3,
"Eff. Time : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2071 {
"Expir. Time :", 3,
"Expir. Time : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2073 {
"Ext. filters :", 3,
"Ext. filters : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2075 {
"File damaged :", 3,
"File damaged :",
"", 4, { 0, 2, 4, 6, -1, -1},
2077 {
"File data lba:", 3,
"File data lba:",
"", 5, { 0, 2, 4, 6, 8, -1},
2079 {
"Format idx :", 3,
"Format idx ",
",: ", 4, { 0, 1, 2, 3, -1, -1},
2081 {
"Format status:", 3,
"Format status:",
", ", 2, { 0, 1, -1, -1, -1, -1},
2083 {
"ISO session :", 3,
"ISO session :",
"", 4, { 0, 2, 4, 6, -1, -1},
2085 {
"Image size :", 3,
"Image size :",
"", 1, { 0, -1, -1, -1, -1, -1},
2087 {
"Jigdo files :", 3,
"Jigdo files :",
"", 1, { 0, -1, -1, -1, -1, -1},
2089 {
"Local ACL :", 3,
"Local ACL :",
"", 1, { 0, -1, -1, -1, -1, -1},
2091 {
"Local xattr :", 3,
"Local xattr :",
"", 1, { 0, -1, -1, -1, -1, -1},
2093 {
"MD5 MISMATCH:", 3,
"MD5 MISMATCH:",
"", 1, { 0, -1, -1, -1, -1, -1},
2095 {
"MD5 tag range:", 3,
"MD5 tag range:",
"", 3, { 0, 2, 4, -1, -1, -1},
2097 {
"Media blocks :", 3,
"Media blocks :",
"", 3, { 0, 3, 6, -1, -1, -1},
2099 {
"Media current:", 3,
"Media current: ",
"", 1, { 0, -1, -1, -1, -1, -1},
2101 {
"Media id :", 3,
"Media id :",
"", 1, { 0, -1, -1, -1, -1, -1},
2103 {
"Media nwa :", 3,
"Media nwa :",
"", 1, { 0, -1, -1, -1, -1, -1},
2105 {
"Media product:", 3,
"Media product:",
"", 2, { 0, 2, -1, -1, -1, -1},
2107 {
"Media region :", 3,
"Media region :",
"", 3, { 0, 2, 4, -1, -1, -1},
2109 {
"Media space :", 3,
"Media space :",
"", 1, { 0, -1, -1, -1, -1, -1},
2111 {
"Media status :", 3,
"Media status : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2113 {
"Media summary:", 3,
"Media summary:",
"", 4, { 0, 2, 5, 7, -1, -1},
2115 {
"Modif. Time :", 3,
"Modif. Time : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2117 {
"PVD address :", 3,
"PVD address :",
"", 1, { 0, -1, -1, -1, -1, -1},
2119 {
"Preparer Id :", 3,
"Preparer Id : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2121 {
"Profile :", 3,
"Profile :",
"", 2, { 0, 1, -1, -1, -1, -1},
2123 {
"Publisher Id :", 3,
"Publisher Id : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2125 {
"Readline :", 3,
"Readline :",
"", 1, { 0, -1, -1, -1, -1, -1},
2127 {
"Size lower :", 3,
"Size lower :",
"", 1, { 0, -1, -1, -1, -1, -1},
2129 {
"Size upper :", 3,
"Size upper :",
"", 1, { 0, -1, -1, -1, -1, -1},
2131 {
"System Id :", 3,
"System Id : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2133 {
"Version timestamp :", 3,
"Version timestamp :",
"", 1,
2134 { 0, -1, -1, -1, -1, -1}, 1, 0},
2135 {
"Volume Id :", 3,
"Volume Id : ",
"", 1, { 0, -1, -1, -1, -1, -1},
2137 {
"Volume Set Id:", 3,
"Volume Set Id: ",
"", 1, { 0, -1, -1, -1, -1, -1},
2139 {
"Volume id :", 3,
"Volume id :",
"", 1, { 0, -1, -1, -1, -1, -1},
2141 {
"Write speed :", 3,
"Write speed :",
"", 2, { 0, 2, -1, -1, -1, -1},
2143 {
"Write speed H:", 3,
"Write speed H:",
"", 2, { 0, 2, -1, -1, -1, -1},
2145 {
"Write speed L:", 3,
"Write speed L:",
"", 2, { 0, 2, -1, -1, -1, -1},
2147 {
"Write speed h:", 3,
"Write speed h:",
"", 2, { 0, 2, -1, -1, -1, -1},
2149 {
"Write speed l:", 3,
"Write speed l:",
"", 2, { 0, 2, -1, -1, -1, -1},
2151 {
"libburn in use :", 3,
"libburn in use :",
"", 2,
2152 { 0, 1, -1, -1, -1, -1}, 1, 1},
2153 {
"libburn OS adapter:", 3,
"libburn OS adapter: ",
"", 1,
2154 { 0, -1, -1, -1, -1, -1}, 1, 1},
2155 {
"libisoburn in use :", 3,
"libisoburn in use :",
"", 2,
2156 { 0, 1, -1, -1, -1, -1}, 1, 1},
2157 {
"libisofs in use :", 3,
"libisofs in use :",
"", 2,
2158 { 0, 1, -1, -1, -1, -1}, 1, 1},
2159 {
"libjte in use :", 3,
"libjte in use :",
"", 2,
2160 { 0, 1, -1, -1, -1, -1}, 1, 1},
2161 {
"xorriso version :", 3,
"xorriso version :",
"", 1,
2162 { 0, -1, -1, -1, -1, -1}, 1, 0},
2163 {
"zisofs :", 3,
"zisofs :",
"", 1, { 0, -1, -1, -1, -1, -1},
2165 {
"@", 0,
"@",
"", 0, {-1, -1, -1, -1, -1, -1}, 0, 0}
2168 struct Xorriso_sieve_big_filteR *f;
2173 if(strcmp(f->name,
"@") == 0)
2176 f->separators, f->num_words, f->word_idx,
2177 f->max_results, f->flag);
2199 int channel, ret, argc= 0, i, max_words, l, widx, skip;
2200 char **argv= NULL, *prefix_storage= NULL, *prefix, *cpt, *to_parse= NULL;
2210 if(!(f->
channels & (1 << channel)))
2214 if(prefix[0] ==
'?') {
2216 for(cpt= prefix; *cpt; cpt++)
2222 if(strlen(msg) >= (
unsigned int) l) {
2223 if(l - skip == 0 || strncmp(prefix + skip, msg + skip, l - skip) == 0) {
2225 prefix_storage= NULL;
2227 strncpy(prefix_storage, msg, l);
2228 prefix_storage[l]= 0;
2229 prefix= prefix_storage;
2234 if(strncmp(prefix, msg, strlen(prefix)) != 0)
2237 if (to_parse != NULL)
2239 to_parse= strdup(msg);
2240 if(to_parse == NULL)
2242 l= strlen(to_parse);
2244 if(to_parse[l - 1] ==
'\n')
2251 if(max_words <= 0 && f->last_word_line_end) {
2257 argv= calloc(1,
sizeof(
char *));
2261 argv[0]= strdup(to_parse + strlen(prefix));
2267 max_words, &argc, &argv, 0);
2275 l= strlen(argv[max_words]);
2277 if(argv[max_words][l - 1] ==
'\n')
2278 argv[max_words][l - 1]= 0;
2301 prev_lst= prev_lst->
next);
2305 if(widx >= argc || widx < 0)
2307 else if(argv[widx] == NULL)
2313 if(prev_lst == NULL)
2322 if(to_parse != NULL)
2342 int ret, redirected= 0;
2375 static int note_sev= 0;
2383 if(note_sev<xorriso->report_about_severity &&
2384 note_sev<xorriso->abort_on_severity && !(flag&4))
2405 int ret= 1,r_ret,i_ret;
2416 if(r_ret==0 || i_ret==0)
2439 int error_code,
char msg_text[],
int os_errno,
2453 fprintf(xorriso->
errfile_fp,
"----------------- %s %s\n",
2454 msg_text,
Ftimetxt(time(0), ttx, 1));
2456 fprintf(xorriso->
errfile_fp,
"%s\n", msg_text);
2465 sprintf(xorriso->
result_line,
"----------------- %s %s\n",
2466 msg_text,
Ftimetxt(time(0), ttx, 1));
2475 sprintf(xorriso->
info_text,
"ERRFILE_MARK=%s %s\n",
2476 msg_text,
Ftimetxt(time(0), ttx, 1));
2478 sprintf(xorriso->
info_text,
"ERRFILE=%s\n", msg_text);
2486 #ifdef Xorriso_fetch_with_msg_queueS
2505 int error_code,
char msg_text[],
int os_errno,
2506 char severity[],
int flag)
2508 int ret, lt, li, sev, i;
2509 char *sev_text=
"FATAL", prefix[80], *
text= NULL;
2510 static char pfx_list[20][16]= {
2511 "xorriso : ",
"libisofs: ",
"libburn : ",
"libisoburn: ",
2512 "",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"" };
2517 if(strcmp(severity,
"ERRFILE")==0)
2530 if(sev<xorriso->report_about_severity && sev<xorriso->abort_on_severity)
2532 lt= strlen(msg_text);
2534 sprintf(prefix,
"%s%s : ", pfx_list[(flag>>2)&15], sev_text);
2540 if(lt > ((
int)
sizeof(xorriso->
info_text)) - li - 2)
2543 #ifdef Xorriso_fetch_with_msg_queueS
2553 if(msg_text ==
text) {
2555 for(i= lt; i>=0; i--)
2556 msg_text[i+li]= msg_text[i];
2558 msg_text[i]= prefix[i];
2562 strcpy(
text, prefix);
2563 strncpy(
text + li, msg_text, lt);
2565 if((flag&64) && os_errno<=0)
2571 sprintf(
text + strlen(
text) - 1,
" : %s\n", strerror(os_errno));
2573 #ifdef Xorriso_fetch_with_msg_queueS
2585 #ifdef Xorriso_fetch_with_msg_queueS
2596 int error_code,
char msg_text[],
int os_errno,
2597 char severity[],
int flag)
2602 os_errno, severity, flag);
2616 sprintf(xorriso->
info_text,
"Really perform %s which will %s ? (y/n)\n",
2622 if(ret==6 || ret==4) {
2623 sprintf(xorriso->
info_text,
"%s confirmed", cmd);
2628 sprintf(xorriso->
info_text,
"%s aborted", cmd);
2632 sprintf(xorriso->
info_text,
"%s revoked", cmd);
2641 char *sfe= NULL, timetext[40], *rpt, *wpt;
2651 sprintf(xorriso->
info_text,
"-session_log: Cannot open file %s",
2657 for(rpt= xorriso->
volid; *rpt!=0; rpt++) {
2665 fprintf(fp,
"%s %d %d %s\n",
2681 if(strncmp(filter, line, strlen(filter))!=0)
2716 char *line, *form=
"any", *spec=
"system_area=";
2737 sprintf(line,
"-boot_image %s %s", form, spec);
2747 static char name[64];
2750 sprintf(name,
"%dkB/s", speed);
2752 }
else if(speed == 0) {
2754 }
else if(speed == -1) {
2756 }
else if(speed == -2) {
2759 sprintf(name,
"%d", speed);
2774 int is_default, no_defaults, i, ret, adr_mode, do_single, behavior;
2775 int show_indev= 1, show_outdev= 1, show_dev= 0;
2776 int do_drive_access, did_drive_access;
2777 int part_table_implicit= 0;
2778 char *line, *sfe= NULL, mode[80], *form, *treatment;
2779 char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt;
2780 char *dev_filter= NULL, *xorriso_id= NULL;
2781 static char channel_prefixes[4][4]= {
".",
"R",
"I",
"M"};
2782 static char load_names[][20]= {
"auto",
"session",
"track",
"lba",
"volid"};
2783 static int max_load_mode= 4;
2784 static char scsi_family[8][8]=
2785 {
"default",
"sr",
"scd",
"st",
"sg",
"",
"",
""};
2786 struct Xorriso_lsT *paths, *leafs, *s, *plst, *vlst;
2791 no_defaults= flag&1;
2794 if(xorriso->
no_rc) {
2795 sprintf(line,
"-no_rc\n");
2801 if(!(is_default && no_defaults))
2806 sprintf(line,
"-dialog on\n");
2807 else if(xorriso->
dialog == 1)
2808 sprintf(line,
"-dialog single_line\n");
2810 sprintf(line,
"-dialog off\n");
2813 if(!(is_default && no_defaults))
2817 sprintf(line,
"-page %d %d\n",
2821 if(!(is_default && no_defaults))
2825 sprintf(line,
"-use_readline %s\n", (xorriso->
use_stdin?
"off":
"on"));
2826 if(!(is_default && no_defaults))
2830 sprintf(line,
"-sh_style_result %s\n",
2832 if(!(is_default && no_defaults))
2836 strcpy(line,
"-backslash_codes ");
2838 strcat(line,
"off");
2843 strcat(line,
"in_double_quotes");
2845 strcat(line,
"in_quotes");
2847 strcat(line,
"with_quoted_input");
2849 if(strlen(line) > 17)
2851 strcat(line,
"with_program_arguments");
2854 if(strlen(line) > 17)
2856 strcat(line,
"encode_output");
2859 if(strlen(line) > 17)
2861 strcat(line,
"encode_results");
2864 if(strlen(line) > 17)
2866 strcat(line,
"encode_infos");
2871 if(!(is_default && no_defaults))
2875 sprintf(line,
"-pkt_output %s\n",(xorriso->
packet_output?
"on":
"off"));
2876 if(!(is_default && no_defaults))
2880 is_default= (xorriso->
logfile[i][0] == 0);
2881 sprintf(line,
"-logfile %s %s\n",
2883 if(!(is_default && no_defaults))
2889 if(!(is_default && no_defaults))
2894 sprintf(line,
"-check_media_defaults reset=now %s\n",
2899 is_default= (ret == 2);
2902 if(!(is_default && no_defaults))
2906 is_default= (behavior == 1);
2910 else if(behavior == 2)
2911 treatment=
"sig_dfl";
2912 else if(behavior == 3)
2913 treatment=
"sig_ign";
2914 sprintf(line,
"-signal_handling %s\n", treatment);
2915 if(!(is_default && no_defaults))
2919 treatment=
"best_effort";
2921 treatment=
"failure";
2924 sprintf(line,
"-error_behavior image_loading %s\n", treatment);
2925 if(!(is_default && no_defaults))
2930 treatment=
"best_effort";
2932 treatment=
"delete";
2933 sprintf(line,
"-error_behavior file_extraction %s\n", treatment);
2934 if(!(is_default && no_defaults))
2939 if(!(is_default && no_defaults))
2944 sprintf(line,
"-temp_mem_limit %dm\n", xorriso->
temp_mem_limit/1024/1024);
2946 sprintf(line,
"-temp_mem_limit %dk\n", xorriso->
temp_mem_limit/1024);
2947 if(!(is_default && no_defaults))
2955 sprintf(line,
"-ban_stdio_write\n");
2960 sprintf(line,
"-early_stdio_test %s\n",
2962 "appendable_wo" :
"on" :
"off");
2963 if(!(is_default && no_defaults))
2967 sprintf(line,
"-data_cache_size ");
2969 sprintf(line + strlen(line),
"default ");
2973 sprintf(line + strlen(line),
"default\n");
2976 if(!(is_default && no_defaults))
2989 mode_pt=
"device_files";
2991 sprintf(line,
"-osirrox %s\n", mode_pt);
2993 sprintf(line,
"-osirrox %s:%s:%s:%s:%s\n", mode_pt,
2995 xorriso->
do_auto_chmod ?
"auto_chmod_on" :
"auto_chmod_off",
2998 if(!(is_default && no_defaults))
3002 (xorriso->
do_md5 & (64 | 128)) == 0 &&
3004 sprintf(line,
"-osirrox %s:%s:sparse=",
3005 (xorriso->
do_strict_acl & 1) ?
"strict_acl_on" :
"strict_acl_off",
3007 (xorriso->
do_md5 & 128) ?
"check_md5_force" :
"check_md5_on"
3010 strcat(line,
"off");
3014 if(!(is_default && no_defaults))
3018 sprintf(line,
"-mount_opts %s\n",
3020 if(!(is_default && no_defaults))
3028 sprintf(line,
"-boot_image any partition_offset=%lu\n",
3030 if(!(is_default && no_defaults))
3033 sprintf(line,
"-boot_image any partition_sec_hd=%lu\n",
3035 if(!(is_default && no_defaults))
3038 sprintf(line,
"-boot_image any partition_hd_cyl=%lu\n",
3040 if(!(is_default && no_defaults))
3044 is_default= (ret == 0);
3045 sprintf(line,
"-boot_image any partition_cyl_align=%s\n",
3046 ret == 0 ?
"auto" : ret == 1 ?
"on" : ret == 3 ?
"all" :
"off");
3047 if(!(is_default && no_defaults))
3053 sprintf(line,
"-boot_image %s partition_table=%s\n",
3056 if(!(is_default && no_defaults))
3061 sprintf(line,
"-boot_image any mbr_force_bootable=%s\n",
3063 if(!(is_default && no_defaults))
3068 sprintf(line,
"-boot_image any appended_part_as=mbr\n");
3073 sprintf(line,
"-boot_image any appended_part_as=gpt\n");
3077 sprintf(line,
"-boot_image any appended_part_as=apm\n");
3083 sprintf(line,
"-boot_image any part_like_isohybrid=%s\n",
3085 if(!(is_default && no_defaults))
3089 sprintf(line,
"-boot_image any iso_mbr_part_type=");
3094 sprintf(line + strlen(line),
"default\n");
3096 sprintf(line + strlen(line),
"0x%-2.2x\n",
3099 if(!(is_default && no_defaults))
3103 sprintf(line,
"-boot_image any gpt_disk_guid=%s",
3107 for(i= 0; i < 16; i++)
3108 sprintf(line + strlen(line),
"%-2.2x",
3109 (
unsigned int) xorriso->
gpt_guid[i]);
3111 if(!(is_default && no_defaults))
3115 is_default= (ret == 0);
3116 sprintf(line,
"-boot_image any chrp_boot_part=%s\n",
3117 ret == 1 ?
"on" :
"off");
3118 if(!(is_default && no_defaults))
3122 sprintf(line,
"-boot_image any prep_boot_part=%s\n",
3124 if(!(is_default && no_defaults))
3128 sprintf(line,
"-boot_image any efi_boot_part=%s\n",
3130 if(!(is_default && no_defaults))
3133 #ifdef Xorriso_with_isohybriD
3134 if(strcmp(form,
"isolinux") == 0) {
3135 static char modes[4][6]= {
"off",
"auto",
"on",
"force"};
3137 sprintf(line,
"-boot_image isolinux isohybrid=%s\n",
3139 if(!(is_default && no_defaults))
3145 for(i= 0; i < 8; i++)
3148 sprintf(line,
"-boot_image any hfsplus_serial=");
3149 for(i= 0; i < 8; i++)
3150 sprintf(line + strlen(line),
"%-2.2X",
3153 if(!(is_default && no_defaults))
3157 sprintf(line,
"-boot_image any hfsplus_block_size=%d\n",
3159 if(!(is_default && no_defaults))
3163 sprintf(line,
"-boot_image any apm_block_size=%d\n",
3165 if(!(is_default && no_defaults))
3168 sprintf(line,
"-cd ");
3170 if(strncmp(filter,
"-cdi", 4) == 0)
3171 sprintf(line,
"-cdi ");
3172 sprintf(line + strlen(line),
"%s\n",
3175 sprintf(line,
"-cdx %s\n",
3180 strcpy(line,
"-split_size ");
3188 if(!(is_default && no_defaults))
3192 sprintf(line,
"-add_plainly %s\n",
3196 if(!(is_default && no_defaults))
3201 for(; paths!=NULL; paths= paths->
next) {
3202 sprintf(line,
"-not_paths %s %s\n",
3206 for(; leafs!=NULL; leafs= leafs->
next) {
3214 if(!(is_default && no_defaults))
3220 sprintf(line,
"-file_size_limit off %s\n", xorriso->
list_delimiter);
3222 sprintf(line,
"-file_size_limit %.f %s\n",
3224 if(!(is_default && no_defaults))
3228 sprintf(line,
"-not_mgt %s:%s:%s:%s\n",
3233 if(!(is_default && no_defaults))
3240 sprintf(line,
"-iso_nowtime dynamic\n");
3241 if(!(is_default && no_defaults))
3245 sprintf(line,
"-iso_rr_pattern %s\n",
3248 if(!(is_default && no_defaults))
3252 sprintf(line,
"-disk_pattern %s\n",
3255 if(!(is_default && no_defaults))
3260 if(!(is_default && no_defaults))
3264 sprintf(line,
"# loaded image effective -volid %s\n",
3270 is_default= (strcmp(xorriso->
preparer_id, xorriso_id) == 0);
3272 if(!(is_default && no_defaults))
3277 if(!(is_default && no_defaults))
3281 sprintf(line,
"-application_id %s\n",
3283 if(!(is_default && no_defaults))
3288 if(!(is_default && no_defaults))
3293 if(!(is_default && no_defaults))
3297 sprintf(line,
"-volume_date c %s\n",
3298 is_default ?
"default" :
3300 if(!(is_default && no_defaults))
3304 sprintf(line,
"-volume_date m %s\n",
3305 xorriso->
vol_uuid[0] ?
"overridden" :
3306 is_default ?
"default" :
3308 if(!(is_default && no_defaults))
3312 sprintf(line,
"-volume_date x %s\n",
3313 is_default ?
"default" :
3315 if(!(is_default && no_defaults))
3319 sprintf(line,
"-volume_date f %s\n",
3320 is_default ?
"default" :
3322 if(!(is_default && no_defaults))
3325 is_default= (xorriso->
vol_uuid[0] == 0);
3326 sprintf(line,
"-volume_date uuid %s\n",
3328 if(!(is_default && no_defaults))
3332 sprintf(line,
"-volume_date all_file_dates %s\n",
3334 if(!(is_default && no_defaults))
3338 sprintf(line,
"-copyright_file %s\n",
3340 if(!(is_default && no_defaults))
3345 if(!(is_default && no_defaults))
3349 sprintf(line,
"-abstract_file %s\n",
3351 if(!(is_default && no_defaults))
3355 sprintf(line,
"-application_use %s\n",
3357 if(!(is_default && no_defaults))
3361 sprintf(line,
"-joliet %s\n", (xorriso->
do_joliet == 1 ?
"on" :
"off"));
3362 if(!(is_default && no_defaults))
3366 sprintf(line,
"-rockridge %s\n", (xorriso->
do_rockridge == 1 ?
"on" :
"off"));
3367 if(!(is_default && no_defaults))
3371 sprintf(line,
"-hfsplus %s\n", (xorriso->
do_hfsplus == 1 ?
"on" :
"off"));
3372 if(!(is_default && no_defaults))
3377 if(plst == NULL || vlst == NULL) {
3379 sprintf(line,
"-jigdo clear 'all'\n");
3380 if(!(is_default && no_defaults))
3383 while(plst != NULL && vlst != NULL) {
3392 sprintf(line,
"-uid %lu\n", (
unsigned long) xorriso->
global_uid);
3397 sprintf(line,
"-gid %lu\n", (
unsigned long) xorriso->
global_gid);
3405 sprintf(line,
"-pathspecs %s\n",
3408 if(!(is_default && no_defaults))
3418 strcat(mode,
":pattern");
3420 strcat(mode,
":param");
3422 strcat(mode,
":link");
3424 strcat(mode,
":concat");
3426 strcat(mode,
":mount");
3428 strcpy(mode,
":off");
3430 sprintf(line,
"-follow %s\n", mode+1);
3431 if(!(is_default && no_defaults))
3435 sprintf(line,
"-overwrite %s\n",(xorriso->
do_overwrite == 1 ?
"on" :
3437 if(!(is_default && no_defaults))
3441 sprintf(line,
"-reassure %s\n",(xorriso->
do_reassure == 1 ?
"on" :
3443 if(!(is_default && no_defaults))
3448 if(!(is_default && no_defaults))
3451 sprintf(line,
"-read_speed soft_force:%s\n",
3454 if(!(is_default && no_defaults))
3458 if(!(is_default && no_defaults))
3462 sprintf(line,
"-close %s\n",xorriso->
auto_close ?
"as_needed" :
3464 if(!(is_default && no_defaults))
3467 is_default= (xorriso->
do_tao == 0);
3468 sprintf(line,
"-write_type %s\n",
3469 xorriso->
do_tao == 0 ?
"auto" : xorriso->
do_tao > 0 ?
"tao" :
"sao/dao");
3470 if(!(is_default && no_defaults))
3474 sprintf(line,
"-dummy %s\n",(xorriso->
do_dummy ?
"on" :
"off"));
3475 if(!(is_default && no_defaults))
3480 if(!(is_default && no_defaults))
3484 strcpy(mode,
"off");
3486 strcpy(mode,
"full");
3488 strcpy(mode,
"data");
3493 sprintf(line,
"-stream_recording %s\n", mode);
3494 if(!(is_default && no_defaults))
3504 strcpy(mode,
"off");
3514 sprintf(mode + strlen(mode),
":min_usec=%d", xorriso->
min_buffer_usec);
3516 sprintf(mode + strlen(mode),
":max_usec=%d", xorriso->
max_buffer_usec);
3517 sprintf(line,
"-modesty_on_drive %s\n", mode);
3518 if(!(is_default && no_defaults))
3521 is_default= (xorriso->
dvd_obs == 0);
3522 strcpy(mode,
"default");
3524 sprintf(mode,
"%dk", xorriso->
dvd_obs / 1024);
3525 sprintf(line,
"-dvd_obs %s\n", mode);
3526 if(!(is_default && no_defaults))
3530 strcpy(line,
"-use_immed_bit ");
3532 strcat(line,
"default");
3534 strcat(line,
"/on");
3536 strcat(line,
"/off");
3539 strcat(line,
"on\n");
3541 strcat(line,
"off\n");
3543 if(!(is_default && no_defaults))
3547 strcpy(line,
"-stdio_sync ");
3549 strcat(line,
"off");
3553 strcat(line,
"end");
3562 if(!(is_default && no_defaults))
3565 is_default= (xorriso->
fs==4*512);
3566 if((xorriso->
fs/512)*512==xorriso->
fs)
3567 sprintf(line,
"-fs %dm\n", xorriso->
fs/512);
3569 sprintf(line,
"-fs %dk\n", xorriso->
fs*2);
3570 if(!(is_default && no_defaults))
3573 is_default= (xorriso->
padding==300*1024);
3574 sprintf(line,
"-padding %dk\n", xorriso->
padding/1024);
3575 if(!(is_default && no_defaults))
3578 sprintf(line,
"-padding %s\n",
3580 if(!(is_default && no_defaults))
3585 if(!(is_default && no_defaults))
3588 is_default= (xorriso->
scsi_log == 0);
3589 sprintf(line,
"-scsi_log %s\n", xorriso->
scsi_log ?
"on" :
"off");
3590 if(!(is_default && no_defaults))
3594 sprintf(line,
"-session_log %s\n",
3596 if(!(is_default && no_defaults))
3600 sprintf(line,
"-pacifier '%s'\n",
3603 if(!(is_default && no_defaults))
3607 if(!(is_default && no_defaults))
3612 sprintf(line,
"-return_with %s %d\n",
3614 if(!(is_default && no_defaults))
3619 if(!(is_default && no_defaults))
3627 #ifdef Xorriso_with_line_editoR
3630 Xorriso_status_history(xorriso, filter, fp, flag & 2);
3635 sprintf(line,
"-rom_toc_scan %s:%s:%s\n",
3640 if(!(is_default && no_defaults))
3644 sprintf(line,
"-displacement %s%lu\n",
3647 if(!(is_default && no_defaults))
3651 if(adr_mode>=0 && adr_mode<=max_load_mode) {
3652 is_default= (adr_mode==0);
3653 sprintf(line,
"-load %s ", load_names[adr_mode]);
3655 sprintf(line+strlen(line),
"''\n");
3656 else if(adr_mode>=1 && adr_mode<=3)
3659 sprintf(line+strlen(line),
"%s\n",
3661 if(!(is_default && no_defaults))
3665 is_default= (xorriso->
read_fs == 0);
3666 sprintf(line,
"-read_fs %s\n",
3667 xorriso->
read_fs == 0 ?
"any" :
3668 xorriso->
read_fs == 1 ?
"norock" :
3669 xorriso->
read_fs == 2 ?
"nojoliet" :
"ecma119");
3670 if(!(is_default && no_defaults))
3674 sprintf(line,
"-calm_drive %s\n", xorriso->
do_calm_drive & 1 ?
"on" :
"off");
3675 if(!(is_default && no_defaults))
3680 sprintf(line,
"-grow_blindly %s\n",
3682 if(!(is_default && no_defaults))
3686 nl_charset= nl_langinfo(CODESET);
3687 is_default= (strcmp(local_charset, nl_charset) == 0);
3688 sprintf(line,
"-local_charset %s\n",
Text_shellsafe(local_charset, sfe, 0));
3689 if(!(is_default && no_defaults))
3705 if(strcmp(in_pt, out_pt) == 0 && !do_single) {
3707 if(!(is_default && no_defaults))
3710 sprintf(line,
"-in_charset %s\n",
Text_shellsafe(in_pt, sfe, 0));
3711 if(!(is_default && no_defaults))
3713 sprintf(line,
"-out_charset %s\n",
Text_shellsafe(out_pt, sfe, 0));
3714 if(!(is_default && no_defaults))
3717 is_default= ((xorriso->
do_aaip & (256 | 512)) == 0);
3718 sprintf(line,
"-auto_charset %s\n", (xorriso->
do_aaip & 256 ?
"on" :
"off"));
3719 if(!(is_default && no_defaults))
3725 break;
case 8: form=
"without_update";
3726 break;
default: form=
"off";
3728 sprintf(line,
"-hardlinks %s:%s:%s\n", form,
3730 "no_lsl_count" :
"lsl_count",
3732 "cheap_sorted_extract" :
"normal_extract");
3733 if(!(is_default && no_defaults))
3736 is_default= ((xorriso->
do_aaip & (1 | 4)) == 0);
3737 sprintf(line,
"-acl %s\n", (xorriso->
do_aaip & 1 ?
"on" :
"off"));
3738 if(!(is_default && no_defaults))
3740 is_default= ((xorriso->
do_aaip & (2 | 8)) == 0);
3741 sprintf(line,
"-xattr %s\n", (xorriso->
do_aaip & 4 ?
3742 xorriso->
do_aaip & 1024 ?
"any" :
"user"
3744 if(!(is_default && no_defaults))
3746 is_default= ((xorriso->
do_aaip & (16 | 32 | 64)) == 0);
3747 sprintf(line,
"-disk_dev_ino %s\n",
3748 (xorriso->
do_aaip & 16 ? (xorriso->
do_aaip & 128 ?
"ino_only" :
"on" )
3750 if(!(is_default && no_defaults))
3753 is_default= ((xorriso->
do_md5 & 31) == 0);
3754 sprintf(line,
"-md5 ");
3755 if(xorriso->
do_md5 & 1) {
3756 if((xorriso->
do_md5 & 8) == 8) {
3757 strcat(line,
"all");
3761 strcat(line,
":stability_check_on");
3764 strcat(line,
":load_check_off");
3767 strcat(line,
"off\n");
3768 if(!(is_default && no_defaults))
3772 sprintf(line,
"-ecma119_map ");
3774 strcat(line,
"unmapped\n");
3776 strcat(line,
"uppercase\n");
3778 strcat(line,
"lowercase\n");
3780 strcat(line,
"stripped\n");
3781 if(!(is_default && no_defaults))
3785 sprintf(line,
"-joliet_map ");
3787 strcat(line,
"unmapped\n");
3789 strcat(line,
"stripped\n");
3790 if(!(is_default && no_defaults))
3795 sprintf(line,
"-scdbackup_tag ");
3800 if(!(is_default && no_defaults))
3804 sprintf(line,
"-compliance %s\n", sfe);
3805 if(!(is_default && no_defaults))
3809 sprintf(line,
"-rr_reloc_dir ");
3812 if(!(is_default && no_defaults))
3816 sprintf(line,
"-assert_volid ");
3821 if(!(is_default && no_defaults))
3835 if(!(is_default && no_defaults)) {
3837 sprintf(line,
"-drive_class 'banned' %s\n",
3842 sprintf(line,
"-drive_class 'caution' %s\n",
3847 sprintf(line,
"-drive_class 'harmless' %s\n",
3854 sprintf(line,
"-drive_access %s:%s\n",
3857 if(!(is_default && no_defaults))
3861 sprintf(line,
"-scsi_dev_family %s\n",
3863 if(!(is_default && no_defaults))
3866 do_single= do_drive_access= 0;
3868 if(dev_filter != NULL) {
3873 if(dev_filter != NULL) {
3876 if(show_outdev > 0 || show_indev > 0)
3882 do_drive_access|= 1;
3888 do_drive_access|= 2;
3890 if(strcmp(xorriso->
indev, xorriso->
outdev) == 0 && !do_single) {
3894 did_drive_access= 0;
3895 if((do_drive_access & 1) && xorriso->
indev[0] && show_indev) {
3896 sprintf(line,
"-drive_access %s:%s\n",
3898 xorriso->
indev_access == 0 ?
"readonly" :
"unrestricted");
3900 did_drive_access= 1;
3904 if(did_drive_access) {
3905 sprintf(line,
"-drive_access %s:%s\n",
3911 did_drive_access= 0;
3912 if((do_drive_access & 2) && xorriso->
outdev[0] && show_outdev) {
3913 sprintf(line,
"-drive_access %s:%s\n",
3917 did_drive_access= 1;
3921 if(did_drive_access) {
3922 sprintf(line,
"-drive_access %s:%s\n",
3970 off_t count, off_t todo,
char *current_object,
3973 double current_time, since, interval_time, speed, speed_factor;
3974 char count_text[80], byte_text[80], profile_name[80], *speed_unit;
3975 int ret, profile_number, short_sec;
3980 if(interval_time < xorriso->pacifier_interval
3985 if((flag & 1) && since < 1.0 && xorriso->pacifier_interval >= 1.0)
3987 if((flag & 1) && since < 0.1)
3991 strcat(byte_text,
" (");
3993 byte_text+strlen(byte_text), 7, 1e5, 0);
3994 strcat(byte_text,
")");
3997 if(count<=0.0 && !(flag&2)) {
4001 "Thank you for being patient for");
4002 }
else if(todo<=0.0) {
4004 sprintf(count_text,
"%7.f", (
double) count);
4006 Sfile_scale((
double) count, count_text, 7, 1e5, 1);
4007 sprintf(xorriso->
info_text,
"%s %s%s in",
4008 count_text, what_done, byte_text);
4009 short_sec= (flag & 64);
4011 sprintf(xorriso->
info_text,
"%.f of %.f %s%s in",
4012 (
double) count, (
double) todo, what_done, byte_text);
4013 short_sec= (flag & (8 | 64));
4023 " %s", short_sec ?
"s" :
"seconds");
4033 speed= amount / since;
4035 if(interval_time > 0)
4044 speed_factor= 1385000;
4047 speed_factor= 150.0*1024;
4049 }
else if(ret == 3) {
4050 speed_factor= 4495625;
4054 (flag & 32 ?
"=" :
","), speed / speed_factor, speed_unit);
4057 if(current_object[0]!=0)
4059 ", now at %s", current_object);
4080 if(*to_free!=NULL) {
4085 sprintf(xorriso->
info_text,
"Out of virtual memory");
4087 fprintf(stderr,
"%s", xorriso->
info_text);
4101 "Path given for file in %s is much too long (%d)",
4102 ((flag&1) ?
"local filesystem" :
"ISO image"), len);
4112 sprintf(xorriso->
info_text,
"%s: cannot create find job object", cmd);
4126 "Mismatch detected between file contents and MD5 checksums.\n");
4129 "File contents and their MD5 checksums match.\n");
4132 "Not a single file with MD5 checksum was found.");
4135 " (There is no MD5 checksum array loaded.)\n");
4142 "Encountered errors other than non-match during MD5 checking.\n");
4147 "There were data files which have no MD5 and thus could not be checked.\n");
4151 sprintf(xorriso->
info_text,
"Event triggered by MD5 comparison mismatch");
4162 char *prefix,
char *separators,
4163 int max_words,
int pflag,
int input_lines,
4166 int ret, i, l, pargc= 0, bsl_mem;
4167 char *pline= NULL, **pargv= NULL, *
parse_line, *
text= NULL, *text_pt;
4173 sprintf(xorriso->
info_text,
"-msg_op parse: Enter %d lines of text\n",
4176 sprintf(xorriso->
info_text,
"-msg_op parse: Enter text line\n");
4184 for(i= 0; i < input_lines; i++) {
4189 if(i < input_lines - 1)
4190 strcat(pline,
"\n");
4195 &pargc, &pargv, pflag);
4207 for(i= 0; i < pargc; i++) {
4240 char *prefix,
char *separators,
4241 int max_words,
int pflag,
int bulk_lines,
4244 int ret, input_lines, i, j, l;
4246 struct Xorriso_lsT *input_list= NULL, *input_end= NULL, *new_lst, *lst;
4251 "Enter %d groups of lines. Each group begins by a line which tells the\n",
4255 "number of following lines in the group. Then come the announced lines\n");
4258 "Do this blindly. No further prompt will appear. Best be a computer.\n");
4264 for(i= 0; i < bulk_lines; i++) {
4269 sscanf(line,
"%d", &input_lines);
4271 for(j= 0; j < input_lines; j++) {
4276 if(j < input_lines - 1)
4277 strcat(pline,
"\n");
4282 if(input_list == NULL)
4283 input_list= new_lst;
4289 prefix, separators, max_words, pflag,
4290 input_lines, 1 | 2);
4304 char *cmd_pipe_adr,
char *reply_pipe_adr,
int flag)
4306 int command_pipe[2], reply_pipe[2], ret, i, cpid, is_banned= 0;
4307 char **exec_argv= NULL, *sfe= NULL, *adrpt;
4311 for(i= 0; i < 2; i++)
4312 command_pipe[i]= reply_pipe[i]= -1;
4314 #ifndef Xorriso_allow_launch_frontenD
4317 sprintf(xorriso->
info_text,
"-launch_frontend : Banned at compile time.");
4320 "This may be changed at compile time by ./configure option --enable-external-filters");
4326 #ifndef Xorriso_allow_launch_frontend_suiD
4330 if(getuid() != geteuid()) {
4332 "-set_filter: UID and EUID differ. Will not run external programs.");
4335 "This may be changed at compile time by ./configure option --enable-external-filters-setuid");
4346 if(strchr(argv[0],
'/') == NULL) {
4348 "-launch_frontend : Command path does not contain a '/'-character");
4355 for(i= 0; i < argc; i++)
4356 exec_argv[i]= argv[i];
4357 exec_argv[argc]= NULL;
4358 }
else if(cmd_pipe_adr[0] == 0 || reply_pipe_adr[0] == 0)
4361 if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
4363 for(i= 0; i < 2; i++) {
4365 adrpt= cmd_pipe_adr;
4367 adrpt= reply_pipe_adr;
4368 ret= stat(adrpt, &stbuf);
4370 ret= mknod(adrpt, S_IFIFO | S_IRWXU | S_IRWXG | S_IRWXO | S_IRWXO,
4374 "-launch_frontend: Cannot create named pipe %s",
4383 ret= pipe(command_pipe);
4387 "-launch_frontend: Failed to create a nameless pipe object");
4391 ret= pipe(reply_pipe);
4400 "-launch_frontend: Failed to create a child process");
4411 if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
4412 command_pipe[0]= open(cmd_pipe_adr, O_RDONLY |
O_BINARY);
4413 if(command_pipe[0] == -1) {
4415 "-launch_frontend: Failed to open named command pipe %s",
4421 reply_pipe[1]= open(reply_pipe_adr, O_WRONLY | O_APPEND |
O_BINARY);
4422 if(reply_pipe[1] == -1) {
4424 "-launch_frontend: Failed to open named reply pipe %s",
4432 close(command_pipe[1]);
4433 close(reply_pipe[0]);
4438 ret= dup2(command_pipe[0], 0);
4442 "-launch_frontend: Failed to connect pipe to xorriso standard i/o channels");
4446 ret= dup2(reply_pipe[1], 1);
4449 ret= dup2(reply_pipe[1], 2);
4458 if(cmd_pipe_adr[0] && reply_pipe_adr[0]) {
4459 command_pipe[1]= open(cmd_pipe_adr, O_WRONLY | O_APPEND |
O_BINARY);
4460 if(command_pipe[1] == -1) {
4462 "xorriso: -launch_frontend: Failed to open named command pipe '%s'\n",
4464 perror(
"xorriso: -launch_frontend");
4467 reply_pipe[0]= open(reply_pipe_adr, O_RDONLY |
O_BINARY);
4468 if(reply_pipe[0] == -1) {
4470 "xorriso: -launch_frontend: Failed to open named reply pipe '%s'\n",
4475 close(command_pipe[0]);
4476 close(reply_pipe[1]);
4480 ret= dup2(command_pipe[1], 1);
4482 perror(
"xorriso: -launch_frontend: Error on redirecting standard output for frontend");
4485 ret= dup2(reply_pipe[0], 0);
4487 perror(
"xorriso: -launch_frontend: Error on redirecting standard input for frontend");
4491 execv(exec_argv[0], exec_argv);
4492 fprintf(stderr,
"xorriso: -launch_frontend: Failure to start program '%s'\n",
4494 perror(
"xorriso: -launch_frontend");
4506 int mem_fds[],
char *pipe_paths[],
int pipe_fds[],
4509 if(mem_fds[i] == -1)
4511 pipe_fds[i]= open(pipe_paths[i], (i == 0 ? O_RDONLY : O_WRONLY) |
O_BINARY);
4512 if(pipe_fds[i] == -1) {
4514 "-named_pipe_loop: Failed to open %s pipe ", fd_names[i]);
4520 dup2(pipe_fds[i], i);
4552 char *pipe_paths[3],
int flag)
4555 int i, ret, mem_fds[3], pipe_fds[3], first_line, hret, pipes_are_valid= 0;
4556 int lst_ret, filling_buffer= 0;
4557 off_t mem_used= 0, mem_needed;
4560 static char fd_names[3][20] = {
4561 "standard input",
"standard output",
"standard error" };
4562 char mem_text[80], limit_text[80];
4564 for(i= 0; i < 3; i++ )
4565 mem_fds[i]= pipe_fds[i]= -1;
4569 "Already in -named_pipe_loop. Ignoring further -named_pipe_loop command.");
4577 for(i= 0; i < 3; i++ ) {
4578 if(pipe_paths[i][0] == 0 || strcmp(pipe_paths[i],
"-") == 0)
4580 if(stat(pipe_paths[i], &stbuf) == -1) {
4582 "-named_pipe_loop: Cannot determine properties of file ");
4587 if(!S_ISFIFO(stbuf.st_mode)) {
4589 "-named_pipe_loop: File is not a named pipe: ");
4595 if(mem_fds[i] == -1) {
4597 "-named_pipe_loop: Cannot duplicate original %s", fd_names[i]);
4615 filling_buffer= 8 | 16;
4621 if((flag & 2) && xorriso->
buffered_dialog == NULL && !filling_buffer) {
4626 if((flag & 2) && filling_buffer) {
4632 mem_needed= strlen(line) + 8 +
sizeof(
struct Xorriso_lsT);
4634 Sfile_scale((
double) (mem_used + mem_needed), mem_text, 5, 1e4, 0);
4636 limit_text, 5, 1e4, 0);
4638 "-named_pipe_loop: List of buffered input lines exceeds -temp_mem_limit (%s > %s)",
4639 mem_text, limit_text);
4644 mem_used+= mem_needed;
4649 "-named_pipe_loop: Cannot buffer all input lines", 0,
"FATAL", 0);
4669 for(i= 1; i < 3; i++) {
4672 if(hret <= 0 && ret > 0)
4673 {ret= hret;
goto ex;}
4684 if(strcmp(line,
"end_named_pipe_loop") == 0)
4697 for(i= 0; i < 3; i++) {
4698 if(mem_fds[i] != -1) {
4699 if(pipe_fds[i] != -1)
4703 dup2(mem_fds[i], i);
4714 for(i= 0; i < 3; i++) {
4715 if(pipe_fds[i] != -1) {
4716 if((flag & 1) && pipes_are_valid) {
4717 if(stat(pipe_paths[i], &stbuf) != -1) {
4718 if(S_ISFIFO(stbuf.st_mode)) {
4719 sprintf(xorriso->
info_text,
"Removing named pipe ");
4722 unlink(pipe_paths[i]);
4728 if(mem_fds[i] != -1) {
4730 dup2(mem_fds[i], i);
4743 char *in_text,
char *out_text,
int flag)
4753 w= strlen(out_text);
4757 if(w + l >= limit) {
4758 strcpy(out_text,
"'xorriso: TEXT MUCH TOO LONG ... ");
4761 strcpy(out_text + w, in_text);
4769 size_t trunc_len,
int flag)
4771 size_t offst= 0, maxl;
4779 if(maxl > trunc_len)
4782 if(strlen(
text) > maxl) {
4783 strcpy(xorriso->
info_text + offst + maxl - 12,
"#[truncated]");
int Exclusions_get_descrs(struct ExclusionS *o, struct Xorriso_lsT **not_paths_descr, struct Xorriso_lsT **not_leafs_descr, int flag)
struct Xorriso_lsT * Xorriso_lst_get_next(struct Xorriso_lsT *entry, int flag)
int Xorriso_lst_get_last(struct Xorriso_lsT *entry, struct Xorriso_lsT **last, int flag)
int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text, struct Xorriso_lsT *link, int flag)
char * Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag)
int Xorriso_lst_concat(struct Xorriso_lsT *first, struct Xorriso_lsT *second, int flag)
int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag)
int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag)
struct Xorriso_lsT * Xorriso_lst_get_prev(struct Xorriso_lsT *entry, int flag)
int Xorriso_lst_append_binary(struct Xorriso_lsT **entry, char *data, int data_len, int flag)
int Xorriso__get_signal_behavior(int flag)
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number, char profile_name[80], int flag)
int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int parse_line(char *progname, char *line, char *prefix, char *separators, int max_words, int *argc, char ***argv, int flag)
int Xorriso_boot_image_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int Xorriso_image_has_md5(struct XorrisO *xorriso, int flag)
int Xorriso__text_to_sev(char *severity_name, int *severity_number, int flag)
int Xorriso_get_local_charset(struct XorrisO *xorriso, char **name, int flag)
int Xorriso_preparer_string(struct XorrisO *xorriso, char xorriso_id[129], int flag)
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag)
char * Xorriso_get_pattern(struct XorrisO *xorriso, struct Xorriso_lsT *patternlist, int index, int flag)
char * Text_shellsafe(char *in_text, char *out_text, int flag)
char * Ftimetxt(time_t t, char timetext[40], int flag)
int Xorriso__format_guid(uint8_t guid[16], char *text, int flag)
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
int Xorriso_parse_line(struct XorrisO *xorriso, char *line, char *prefix, char *separators, int max_words, int *argc, char ***argv, int flag)
int Xorriso_set_problem_status(struct XorrisO *xorriso, char *severity, int flag)
void Xorriso__dispose_words(int *argc, char ***argv)
int Sfile_off_t_text(char text[80], off_t num, int flag)
int Sfile_bsl_encoder(char **result, char *text, size_t text_len, int flag)
int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv, int flag)
char * Sfile_fgets_n(char *line, int maxl, FILE *fp, int flag)
char * Sfile_datestr(time_t tim, short int flag)
double Sfile_microtime(int flag)
int Sfile_str(char target[4096], char *source, int flag)
int Sfile_count_char(char *text, char to_count)
int Sfile_scale(double value, char *result, int siz, double thresh, int flag)
#define TSOB_FELD(typ, count)
#define Xorriso_free_meM(pt)
#define Xorriso_alloc_meM(pt, typ, count)
pthread_mutex_t result_msglists_lock
pthread_mutex_t msg_watcher_lock
int linux_scsi_dev_family
struct Xorriso_msg_sievE * msg_sieve
struct ExclusionS * disk_exclusions
int do_padding_by_libisofs
int partition_heads_per_cyl
char efi_boot_partition[4096]
off_t pacifier_byte_count
time_t vol_effective_time
char scdbackup_tag_listname[4096]
int find_check_md5_result
char result_line[10 *4096]
uint8_t hfsp_serial_number[8]
char prep_partition[4096]
struct Xorriso_lsT * info_msglists[Xorriso_max_outlist_stacK]
char system_area_disk_path[4096]
uint32_t partition_offset
uint8_t iso_gpt_type_guid[16]
int(* msgw_result_handler)(void *handle, char *text)
char scdbackup_tag_name[81]
off_t pacifier_prev_count
struct Xorriso_lsT * buffered_dialog
int partition_secs_per_head
char image_start_value[81]
time_t vol_modification_time
char return_with_text[20]
struct Xorriso_lsT * drive_blacklist
char session_logfile[4096]
int report_about_severity
pthread_mutex_t write_to_channel_lock
struct Xorriso_lsT * result_msglists[Xorriso_max_outlist_stacK]
char application_use[4096]
char report_about_text[20]
char assert_volid_sev[80]
void * msgw_result_handle
int msglist_flags[Xorriso_max_outlist_stacK]
struct Xorriso_lsT * jigdo_values
int use_immed_bit_default
struct Xorriso_lsT * jigdo_params
int(* msgw_info_handler)(void *handle, char *text)
struct Xorriso_lsT * drive_whitelist
struct CheckmediajoB * check_media_default
time_t vol_expiration_time
struct Xorriso_lsT * drive_greylist
pthread_mutex_t msgw_fetch_lock
char pending_option[4096]
struct Xorriso_lsT * next
struct Xorriso_msg_filteR * next
struct Xorriso_lsT * next_to_deliver
struct Xorriso_msg_filteR * prev
struct Xorriso_lsT * results
struct Xorriso_msg_filteR * first_filter
int Xorriso_boot_status_sysarea(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int Xorriso_open_named_pipe(struct XorrisO *xorriso, char fd_names[3][20], int mem_fds[], char *pipe_paths[], int pipe_fds[], int i, int flag)
int Xorriso_stop_msg_watcher(struct XorrisO *xorriso, int flag)
int Xorriso_reset_counters(struct XorrisO *xorriso, int flag)
int Xorriso_msgs_submit(struct XorrisO *xorriso, int error_code, char msg_text[], int os_errno, char severity[], int flag)
int Xorriso_msg_filter_destroy(struct Xorriso_msg_filteR **o, int flag)
int Xorriso_predict_linecount(struct XorrisO *xorriso, char *line, int *linecount, int flag)
int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount, int *argc, char ***argv, int flag)
static int Xorriso_write_to_msglist(struct XorrisO *xorriso, struct Xorriso_lsT **xorriso_msglist, char *text, int flag)
int Xorriso_launch_frontend(struct XorrisO *xorriso, int argc, char **argv, char *cmd_pipe_adr, char *reply_pipe_adr, int flag)
int Xorriso_msg_sieve_new(struct Xorriso_msg_sievE **o, int flag)
int Xorriso_sieve_filter_msg(struct XorrisO *xorriso, char *msg, int flag)
int Xorriso_process_errfile(struct XorrisO *xorriso, int error_code, char msg_text[], int os_errno, int flag)
int Xorriso_start_msg_watcher(struct XorrisO *xorriso, int(*result_handler)(void *handle, char *text), void *result_handle, int(*info_handler)(void *handle, char *text), void *info_handle, int flag)
int Xorriso_no_findjob(struct XorrisO *xorriso, char *cmd, int flag)
static int Xorriso_obtain_lock(struct XorrisO *xorriso, pthread_mutex_t *lock_handle, char *purpose, int flag)
static int Xorriso_release_lock(struct XorrisO *xorriso, pthread_mutex_t *lock_handle, char *purpose, int flag)
int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
int Xorriso_sieve_big(struct XorrisO *xorriso, int flag)
int Xorriso_pager(struct XorrisO *xorriso, char *line, int flag)
int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done, off_t count, off_t todo, char *current_object, int flag)
int Xorriso_peek_outlists(struct XorrisO *xorriso, int stack_handle, int timeout, int flag)
int Xorriso_result_handler_stdout(void *handle, char *text)
int Xorriso_info_handler_stderr(void *handle, char *text)
int Xorriso_no_malloc_memory(struct XorrisO *xorriso, char **to_free, int flag)
int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
static char * Xorriso__speedname(int speed)
int Xorriso_push_outlists(struct XorrisO *xorriso, int *stack_handle, int flag)
int Xorriso_named_pipe_loop(struct XorrisO *xorriso, char *pipe_paths[3], int flag)
int Xorriso_info(struct XorrisO *xorriso, int flag)
int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
static int Xorriso_unlock_outlists(struct XorrisO *xorriso, int flag)
static int Xorriso_lock_outlists(struct XorrisO *xorriso, int flag)
int Xorriso_result_handler_pkt(void *handle, char *text)
int Xorriso_pull_outlists(struct XorrisO *xorriso, int stack_handle, struct Xorriso_lsT **result_list, struct Xorriso_lsT **info_list, int flag)
int Xorriso_write_to_channel(struct XorrisO *xorriso, char *in_text, int channel_no, int flag)
int Xorriso_msg_op_parse(struct XorrisO *xorriso, char *line, char *prefix, char *separators, int max_words, int pflag, int input_lines, int flag)
int Xorriso_protect_stdout(struct XorrisO *xorriso, int flag)
int Xorriso_msg_filter_new(struct Xorriso_msg_filteR **o, char *name, struct Xorriso_msg_filteR *prev, struct Xorriso_msg_filteR *next, int flag)
int Xorriso_sieve_get_result(struct XorrisO *xorriso, char *name, int *argc, char ***argv, int *available, int flag)
int Xorriso_msg_filter_set_words(struct Xorriso_msg_filteR *m, int num_words, int *word_idx, int flag)
int Xorriso_report_md5_outcome(struct XorrisO *xorriso, char *severity, int flag)
int Xorriso_msg_op_parse_bulk(struct XorrisO *xorriso, char *prefix, char *separators, int max_words, int pflag, int bulk_lines, int flag)
static void * Xorriso_msg_watcher(void *state_pt)
char * Xorriso_esc_filepath(struct XorrisO *xorriso, char *in_text, char *out_text, int flag)
int Xorriso_process_msg_lists(struct XorrisO *xorriso, struct Xorriso_lsT *result_list, struct Xorriso_lsT *info_list, int *line_count, int flag)
int Xorriso_pacifier_reset(struct XorrisO *xorriso, int flag)
int Xorriso_msgs_submit_void(void *xorriso, int error_code, char msg_text[], int os_errno, char severity[], int flag)
int Xorriso_set_info_text(struct XorrisO *xorriso, char *text, size_t trunc_len, int flag)
int Xorriso_msg_sieve_destroy(struct Xorriso_msg_sievE **o, int flag)
int Xorriso_sieve_add_filter(struct XorrisO *xorriso, char *name, int channels, char *prefix, char *separators, int num_words, int *word_idx, int max_results, int flag)
int Xorriso_sieve_clear_results(struct XorrisO *xorriso, int flag)
int Xorriso_sieve_dispose(struct XorrisO *xorriso, int flag)
int Xorriso_fetch_outlists(struct XorrisO *xorriso, int stack_handle, struct Xorriso_lsT **result_list, struct Xorriso_lsT **info_list, int flag)
int Xorriso_reassure(struct XorrisO *xorriso, char *cmd, char *which_will, int flag)
int Xorriso_status_filter(struct XorrisO *xorriso, char *filter, char *line, int flag)
int Xorriso_much_too_long(struct XorrisO *xorriso, int len, int flag)
int Xorriso_status_result(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int Xorriso_result(struct XorrisO *xorriso, int flag)
int Xorriso_mark(struct XorrisO *xorriso, int flag)
int Xorriso_restxt(struct XorrisO *xorriso, char *text)
int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize, int flag)
int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024], int flag)
#define Xorriso_max_outlist_stacK
#define Xorriso_default_file_size_limiT
#define Xorriso_status_history_maX