Replaced some large local variables by other means in xorriso/text_io.c

This commit is contained in:
Thomas Schmitt 2011-05-07 18:50:02 +00:00
parent ec22b0bb30
commit 76bf672c86
2 changed files with 71 additions and 42 deletions

View File

@ -220,13 +220,16 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
*/ */
{ {
int ret; int ret;
char line[SfileadrL],*cpt,previous_line[SfileadrL]; char *line= NULL, *cpt, *previous_line= NULL;
char *abort_req_text,*abort_really_text; char *abort_req_text,*abort_really_text;
Xorriso_alloc_meM(line, char, SfileadrL);
Xorriso_alloc_meM(previous_line, char, SfileadrL);
if(!xorriso->dialog) { if(!xorriso->dialog) {
if(flag&16) if(flag&16)
return(6); {ret= 6; goto ex;}
return(1); {ret= 1; goto ex;}
} }
if(flag&8) { if(flag&8) {
abort_req_text= "request to end"; abort_req_text= "request to end";
@ -235,7 +238,7 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
abort_req_text= "request to abort"; abort_req_text= "request to abort";
abort_really_text= "abort this command"; abort_really_text= "abort this command";
} }
ret= Xorriso_dialog_input(xorriso,line,sizeof(line),1); ret= Xorriso_dialog_input(xorriso,line, SfileadrL, 1);
xorriso->result_line_counter= 0; xorriso->result_line_counter= 0;
xorriso->result_page_counter++; xorriso->result_page_counter++;
if(ret<=0) if(ret<=0)
@ -252,9 +255,9 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
"... [%s = %s registered. Really %s ? (y/n) ] ...\n", "... [%s = %s registered. Really %s ? (y/n) ] ...\n",
cpt,abort_req_text,abort_really_text); cpt,abort_req_text,abort_really_text);
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
ret= Xorriso_dialog_input(xorriso,line,sizeof(line),1); ret= Xorriso_dialog_input(xorriso,line, SfileadrL, 1);
if(ret<=0) if(ret<=0)
return(ret); goto ex;
cpt= line; cpt= line;
if(strcmp(cpt,previous_line)==0 || if(strcmp(cpt,previous_line)==0 ||
((*cpt=='Y' || *cpt=='y' || *cpt=='j' || *cpt=='J' || *cpt=='1') && ((*cpt=='Y' || *cpt=='y' || *cpt=='j' || *cpt=='J' || *cpt=='1') &&
@ -263,18 +266,18 @@ int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag)
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"------- ( %s confirmed )\n",abort_req_text); "------- ( %s confirmed )\n",abort_req_text);
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(2); {ret= 2; goto ex;}
} }
sprintf(xorriso->info_text, "....... ( %s revoked )\n",abort_req_text); sprintf(xorriso->info_text, "....... ( %s revoked )\n",abort_req_text);
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(3); {ret= 3; goto ex;}
} }
xorriso->request_to_abort= 1; xorriso->request_to_abort= 1;
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"----------- [%s = request to abort registered. Operation ends ] ------------\n", "----------- [%s = request to abort registered. Operation ends ] ------------\n",
cpt); cpt);
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(2); {ret= 2; goto ex;}
} else if(*cpt=='@') { } else if(*cpt=='@') {
if(strcmp(cpt,"@@")==0) { if(strcmp(cpt,"@@")==0) {
goto klammer_affe; goto klammer_affe;
@ -294,28 +297,28 @@ klammer_affe:;
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"--- Unrecognized input beginning with @. Please enter someting else.\n"); "--- Unrecognized input beginning with @. Please enter someting else.\n");
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(3); {ret= 3; goto ex;}
} }
if(flag&2) if(flag&2)
return(4); {ret= 4; goto ex;}
if(flag&1) if(flag&1)
return(3); {ret= 3; goto ex;}
return(1); {ret= 1; goto ex;}
} else if(flag&4) { } else if(flag&4) {
if(strcmp(cpt,"i")==0 || strcmp(cpt,"I")==0 || if(strcmp(cpt,"i")==0 || strcmp(cpt,"I")==0 ||
strcmp(cpt,"n")==0 || strcmp(cpt,"N")==0 || strcmp(cpt,"n")==0 || strcmp(cpt,"N")==0 ||
*cpt==0) { *cpt==0) {
return(1); {ret= 1; goto ex;}
} else if(strcmp(cpt,"r")==0 || strcmp(cpt,"R")==0 || } else if(strcmp(cpt,"r")==0 || strcmp(cpt,"R")==0 ||
strcmp(cpt,"y")==0 || strcmp(cpt,"Y")==0) { strcmp(cpt,"y")==0 || strcmp(cpt,"Y")==0) {
return(6); {ret= 6; goto ex;}
} else { } else {
/* >>> unknown input */ /* >>> unknown input */
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"--- Please enter one of : empty line, i,n, r,y, q,x, @, @@@\n"); "--- Please enter one of : empty line, i,n, r,y, q,x, @, @@@\n");
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(3); {ret= 3; goto ex;}
} }
} else if(*cpt!=0 && !(flag&1)) { } else if(*cpt!=0 && !(flag&1)) {
@ -325,16 +328,20 @@ klammer_affe:;
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"-------------- [ Input of option registered. Operation ends ] ---------------\n"); "-------------- [ Input of option registered. Operation ends ] ---------------\n");
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(2); {ret= 2; goto ex;}
} else if(*cpt!=0) { } else if(*cpt!=0) {
Xorriso_dialog_input(xorriso,cpt,strlen(line)+1,2); /* write to history */ Xorriso_dialog_input(xorriso,cpt,strlen(line)+1,2); /* write to history */
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
"--- Please enter one of : empty line, @, @@@\n"); "--- Please enter one of : empty line, @, @@@\n");
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
return(3); {ret= 3; goto ex;}
} }
return(1); ret= 1;
ex:;
Xorriso_free_meM(line);
Xorriso_free_meM(previous_line);
return(ret);
} }
@ -348,12 +355,14 @@ klammer_affe:;
int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount, int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
int *argc, char ***argv, int flag) int *argc, char ***argv, int flag)
{ {
char line[5 * SfileadrL + 2], *linept, *fgot; char *line= NULL, *linept, *fgot;
int l, base_length, append_line, ret, mem_linecount, i; int l, base_length, append_line, ret, mem_linecount, i;
Sfile_make_argv("", line, argc, argv, 2); Sfile_make_argv("", line, argc, argv, 2);
if(flag & 2) if(flag & 2)
return(1); {ret= 1; goto ex;}
Xorriso_alloc_meM(line, char, 5 * SfileadrL + 2);
mem_linecount= *linecount; mem_linecount= *linecount;
linept= line; linept= line;
@ -363,13 +372,13 @@ int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
!!(flag & (1 | 8))); !!(flag & (1 | 8)));
if(fgot == NULL) { if(fgot == NULL) {
if(ferror(fp)) if(ferror(fp))
return(0); {ret= 0; goto ex;}
if(linept != line) { if(linept != line) {
sprintf(xorriso->info_text,"Open quotation mark at end of input"); sprintf(xorriso->info_text,"Open quotation mark at end of input");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0); {ret= 0; goto ex;}
} }
return(2); {ret= 2; goto ex;}
} }
l= strlen(line); l= strlen(line);
(*linecount)++; (*linecount)++;
@ -377,7 +386,7 @@ int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
if(flag & 1) { /* check whether the line is incomplete yet */ if(flag & 1) { /* check whether the line is incomplete yet */
ret= Sfile_make_argv("", line, argc, argv, 16); ret= Sfile_make_argv("", line, argc, argv, 16);
if(ret < 0) if(ret < 0)
return(ret); goto ex;
if(ret == 0 && !append_line) { if(ret == 0 && !append_line) {
line[l]= '\n'; line[l]= '\n';
line[l + 1]= 0; line[l + 1]= 0;
@ -392,7 +401,7 @@ int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
if(l >= SfileadrL) { if(l >= SfileadrL) {
sprintf(xorriso->info_text,"Input line too long !"); sprintf(xorriso->info_text,"Input line too long !");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0); {ret= 0; goto ex;}
} }
if(!append_line) if(!append_line)
break; break;
@ -403,7 +412,7 @@ int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
ret= Sfile_make_argv("", line, argc, argv, ret= Sfile_make_argv("", line, argc, argv,
1 | ((xorriso->bsl_interpretation & 3) << 5)); 1 | ((xorriso->bsl_interpretation & 3) << 5));
if(ret < 0) if(ret < 0)
return(ret); goto ex;
if(flag & 4) if(flag & 4)
for(i= 0; i < *argc; i++) { for(i= 0; i < *argc; i++) {
if((*argv)[i][0] == 0) { if((*argv)[i][0] == 0) {
@ -425,13 +434,16 @@ int Xorriso_read_lines(struct XorrisO *xorriso, FILE *fp, int *linecount,
} else { } else {
(*argv)= Smem_malloC(sizeof(char *)); (*argv)= Smem_malloC(sizeof(char *));
if(argv == NULL) if(argv == NULL)
return(-1); {ret= -1; goto ex;}
(*argv)[0]= strdup(line); (*argv)[0]= strdup(line);
if((*argv)[0] == NULL) if((*argv)[0] == NULL)
return(-1); {ret= -1; goto ex;}
*argc= 1; *argc= 1;
} }
return(1); ret= 1;
ex:;
Xorriso_free_meM(line);
return(ret);
} }
@ -475,14 +487,16 @@ int Xorriso_pager(struct XorrisO *xorriso, char *line, int flag)
/* return: <=0 error , 1=go on , 2=abort , 4=see flag bit1*/ /* return: <=0 error , 1=go on , 2=abort , 4=see flag bit1*/
{ {
int ret,linecount; int ret,linecount;
char info_text[10*SfileadrL]; char *info_text= NULL;
if(xorriso->result_page_length<=0 || xorriso->request_not_to_ask || if(xorriso->result_page_length<=0 || xorriso->request_not_to_ask ||
xorriso->dialog == 0) xorriso->dialog == 0)
return(1); {ret= 1; goto ex;}
Xorriso_predict_linecount(xorriso,line,&linecount,0); Xorriso_predict_linecount(xorriso,line,&linecount,0);
if(xorriso->result_line_counter+linecount>xorriso->result_page_length) { if(xorriso->result_line_counter+linecount>xorriso->result_page_length) {
ask_for_page:; ask_for_page:;
if(info_text == NULL)
Xorriso_alloc_meM(info_text, char, 10*SfileadrL);
strcpy(info_text,xorriso->info_text); strcpy(info_text,xorriso->info_text);
sprintf(xorriso->info_text,"\n"); sprintf(xorriso->info_text,"\n");
Xorriso_info(xorriso,0); Xorriso_info(xorriso,0);
@ -492,14 +506,17 @@ ask_for_page:;
ret= Xorriso_request_confirmation(xorriso,flag&2); ret= Xorriso_request_confirmation(xorriso,flag&2);
strcpy(xorriso->info_text,info_text); strcpy(xorriso->info_text,info_text);
if(ret<=0) if(ret<=0)
return(ret); goto ex;
if(ret==2) if(ret==2)
return(2); {ret= 2; goto ex;}
if(ret==3) if(ret==3)
goto ask_for_page; goto ask_for_page;
} }
xorriso->result_line_counter+= linecount; xorriso->result_line_counter+= linecount;
return(1); ret= 1;
ex:;
Xorriso_free_meM(info_text);
return(ret);
} }
@ -1011,16 +1028,20 @@ int Xorriso_reassure(struct XorrisO *xorriso, char *cmd, char *which_will,
int Xorriso_write_session_log(struct XorrisO *xorriso, int flag) int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
{ {
FILE *fp= NULL; FILE *fp= NULL;
char sfe[5*SfileadrL], timetext[40], *rpt, *wpt; char *sfe= NULL, timetext[40], *rpt, *wpt;
int ret;
if(xorriso->session_logfile[0]==0) if(xorriso->session_logfile[0]==0)
return(2); {ret= 2; goto ex;}
Xorriso_alloc_meM(sfe, char, 5 * SfileadrL);
fp= fopen(xorriso->session_logfile, "a"); fp= fopen(xorriso->session_logfile, "a");
if(fp==0) { if(fp==0) {
sprintf(xorriso->info_text, "-session_log: Cannot open file %s", sprintf(xorriso->info_text, "-session_log: Cannot open file %s",
Text_shellsafe(xorriso->session_logfile, sfe, 0)); Text_shellsafe(xorriso->session_logfile, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0); {ret= 0; goto ex;}
} }
wpt= sfe; wpt= sfe;
for(rpt= xorriso->volid; *rpt!=0; rpt++) { for(rpt= xorriso->volid; *rpt!=0; rpt++) {
@ -1035,7 +1056,10 @@ int Xorriso_write_session_log(struct XorrisO *xorriso, int flag)
Ftimetxt(time(0), timetext, 2), xorriso->session_lba, Ftimetxt(time(0), timetext, 2), xorriso->session_lba,
xorriso->session_blocks, sfe); xorriso->session_blocks, sfe);
fclose(fp); fclose(fp);
return(1); ret= 1;
ex:;
Xorriso_free_meM(sfe);
return(ret);
} }
@ -1085,7 +1109,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
int is_default, no_defaults, i, ret, adr_mode, do_single, behavior; int is_default, no_defaults, i, ret, adr_mode, do_single, behavior;
int show_indev= 1, show_outdev= 1, show_dev= 0; int show_indev= 1, show_outdev= 1, show_dev= 0;
int part_table_implicit= 0; int part_table_implicit= 0;
char *line, sfe[5 * SfileadrL + 80], mode[80], *form, *treatment; char *line, *sfe= NULL, mode[80], *form, *treatment;
char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt; char *in_pt, *out_pt, *nl_charset, *local_charset, *mode_pt;
char *dev_filter= NULL, xorriso_id[129]; char *dev_filter= NULL, xorriso_id[129];
static char channel_prefixes[4][4]= {".","R","I","M"}; static char channel_prefixes[4][4]= {".","R","I","M"};
@ -1093,6 +1117,8 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
static int max_load_mode= 4; static int max_load_mode= 4;
struct Xorriso_lsT *paths, *leafs, *s, *plst, *vlst; struct Xorriso_lsT *paths, *leafs, *s, *plst, *vlst;
Xorriso_alloc_meM(sfe, char, 5 * SfileadrL + 80);
no_defaults= flag&1; no_defaults= flag&1;
line= xorriso->result_line; line= xorriso->result_line;
@ -1945,7 +1971,10 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
} }
} }
return(1); ret= 1;
ex:;
Xorriso_free_meM(sfe);
return(ret);
} }

View File

@ -1 +1 @@
#define Xorriso_timestamP "2011.05.07.165758" #define Xorriso_timestamP "2011.05.07.184625"