From 514302d9ee97d488444f0edfe6c6e6444bb1a997 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 3 May 2011 09:10:40 +0000 Subject: [PATCH] Replaced some large local variables by other means in xorriso/emulators.c --- xorriso/emulators.c | 63 +++++++++++++++++++++++-------------- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 17dc2520..8641cc53 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -89,7 +89,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv, int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0; int do_multi= 0, do_msinfo= 0, do_grow= 0, do_isosize= 0, do_xa1= 0; double write_start_address= -1.0, tsize= -1.0; - char track_source[SfileadrL], sfe[5*SfileadrL], dev_adr[SfileadrL], *cpt; + char *track_source= NULL, *dev_adr= NULL, *cpt; char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80]; char speed[80]; @@ -144,6 +144,9 @@ static char blank_help[][80]= { "@End_of_helptexT@" }; + Xorriso_alloc_meM(track_source, char, SfileadrL); + Xorriso_alloc_meM(dev_adr, char, SfileadrL); + strcpy(mem_report_about_text, xorriso->report_about_text); mem_do_close= xorriso->do_close; @@ -155,14 +158,14 @@ static char blank_help[][80]= { if(xorriso->in_drive_handle != NULL) { ret= Xorriso_option_dev(xorriso, "", 1|32); /* give up indev */ if(ret!=1) - return(ret); + goto ex; } /* Assess plan, make settings */ for(i= 0; iinfo_text, "-as %s: %s", - whom, Text_shellsafe(argv[i], sfe, 0)); + sprintf(xorriso->info_text, "-as %s: ", whom); + Text_shellsafe(argv[i], xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0); for(k=0;ignored_partial_options[k][0]!=0;k++) { @@ -179,8 +182,8 @@ static char blank_help[][80]= { goto no_volunteer; if(0) { no_volunteer:; - sprintf(xorriso->info_text, "-as %s: Ignored option %s", - whom, Text_shellsafe(argv[i], sfe, 0)); + sprintf(xorriso->info_text, "-as %s: Ignored option ", whom); + Text_shellsafe(argv[i], xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); continue; } @@ -211,9 +214,9 @@ no_volunteer:; } else if(strcmp(cpt,"as_needed")==0) { strcpy(blank_mode, "as_needed"); } else { - sprintf(xorriso->info_text, - "-as %s: blank=%s not supported. See blank=help .", - whom, Text_shellsafe(argv[i], sfe, 0)); + sprintf(xorriso->info_text, "-as %s: blank=", whom); + Text_shellsafe(argv[i], xorriso->info_text, 1); + strcat(xorriso->info_text, " not supported. See blank=help ."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; goto ex; } @@ -340,17 +343,17 @@ no_volunteer:; 0, "FATAL", 0); ret= 0; goto ex; } else if(argv[i][0]=='-' && argv[i][1]!=0) { - sprintf(xorriso->info_text, "-as %s: Unknown option %s", - whom, Text_shellsafe(argv[i], sfe, 0)); + sprintf(xorriso->info_text, "-as %s: Unknown option ", whom); + Text_shellsafe(argv[i], xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); ret= 0; goto ex; } else { if(track_source[0]) { - sprintf(xorriso->info_text, "-as %s: Surplus track source %s", - whom, Text_shellsafe(argv[i], sfe, 0)); + sprintf(xorriso->info_text, "-as %s: Surplus track source ", whom); + Text_shellsafe(argv[i], xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); - sprintf(xorriso->info_text, "First and only track source is %s", - Text_shellsafe(track_source, sfe, 0)); + sprintf(xorriso->info_text, "First and only track source is "); + Text_shellsafe(track_source, xorriso->info_text, 1); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); ret= 0; goto ex; } @@ -493,6 +496,8 @@ ex:; } Xorriso_option_report_about(xorriso, mem_report_about_text, 0); xorriso->do_close= mem_do_close; + Xorriso_free_meM(dev_adr); + Xorriso_free_meM(track_source); return(ret); } @@ -635,7 +640,6 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom, "" }; int k; - char sfe[5*SfileadrL]; for(k=0;ignored_arg0_options[k][0]!=0;k++) if(strcmp(argpt,ignored_arg0_options[k])==0) @@ -647,8 +651,8 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom, } return(0); no_volunteer:; - sprintf(xorriso->info_text, "-as %s: Ignored option %s", - whom, Text_shellsafe(argpt, sfe, 0)); + sprintf(xorriso->info_text, "-as %s: Ignored option ", whom); + Text_shellsafe(argpt, xorriso->info_text, 1); if(!(flag & 1)) Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0); return(1); @@ -925,9 +929,9 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1; int *weight_list= NULL, weight_count= 0; int *delay_opt_list= NULL, delay_opt_count= 0; - char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL]; - char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt; - char old_root[SfileadrL], *argpt, *hargv[1]; + char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL; + char *ept, *add_pt, *eff_path= NULL, *indev= NULL, msc[80], *cpt; + char *old_root= NULL, *argpt, *hargv[1]; char *boot_path, partno_text[8], *iso_rr_pt, *disk_pt, *rpt, *wpt; char *rm_merge_args[3]; @@ -936,18 +940,25 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, struct stat stbuf; + Xorriso_alloc_meM(sfe, char, 5*SfileadrL); + Xorriso_alloc_meM(adr, char, SfileadrL+8); + Xorriso_alloc_meM(pathspec, char, 2*SfileadrL); + Xorriso_alloc_meM(eff_path, char, SfileadrL); + Xorriso_alloc_meM(indev, char, SfileadrL+8); + Xorriso_alloc_meM(old_root, char, SfileadrL); + strcpy(ra_text, xorriso->report_about_text); weight_list= TSOB_FELD(int, (argc / 3) + 1); if(weight_list == NULL) { Xorriso_no_malloc_memory(xorriso, NULL, 0); - return(-1); + {ret= -1; goto ex;} } delay_opt_list= TSOB_FELD(int, argc + 1); if(delay_opt_list == NULL) { cpt= (char *) weight_list; Xorriso_no_malloc_memory(xorriso, &cpt, 0); - return(-1); + {ret= -1; goto ex;} } if(xorriso->boot_image_cat_path[0]) @@ -1936,6 +1947,12 @@ ex:; free(weight_list); if(delay_opt_list != NULL) free(delay_opt_list); + Xorriso_free_meM(sfe); + Xorriso_free_meM(adr); + Xorriso_free_meM(pathspec); + Xorriso_free_meM(eff_path); + Xorriso_free_meM(indev); + Xorriso_free_meM(old_root); return(ret); } diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index fc54d20c..2e215d2b 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.05.03.085459" +#define Xorriso_timestamP "2011.05.03.091059"