Replaced some large local variables by other means in xorriso/iso_tree.c
This commit is contained in:
parent
5a07bedc5d
commit
2398b7d599
@ -59,19 +59,21 @@ int Xorriso_normalize_img_path(struct XorrisO *xorriso, char *wd,
|
||||
IsoImage *volume;
|
||||
IsoDir *dir= NULL;
|
||||
IsoNode *node= NULL;
|
||||
char path[SfileadrL], *apt, *npt, sfe[5*SfileadrL], *cpt;
|
||||
char *path= NULL, *apt, *npt, *cpt;
|
||||
|
||||
Xorriso_alloc_meM(path, char, SfileadrL);
|
||||
|
||||
if((flag&64) || !(flag&2)) {
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
goto ex;
|
||||
}
|
||||
|
||||
eff_path[0]= 0;
|
||||
if(img_path[0]==0) {
|
||||
if(flag&8)
|
||||
strcpy(eff_path, "/");
|
||||
return(2); /* root directory */
|
||||
{ret= 2; goto ex;} /* root directory */
|
||||
}
|
||||
|
||||
apt= npt= path;
|
||||
@ -82,18 +84,18 @@ int Xorriso_normalize_img_path(struct XorrisO *xorriso, char *wd,
|
||||
goto much_too_long;
|
||||
} else
|
||||
if(Sfile_str(path, img_path, 0)<=0)
|
||||
return(-1);
|
||||
{ret= -1; goto ex;}
|
||||
|
||||
if(path[0]!='/') {
|
||||
sprintf(xorriso->info_text,
|
||||
"Internal error: Unresolvable relative addressing in iso_rr_path '%s'",
|
||||
img_path);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FATAL", 0);
|
||||
return(-1);
|
||||
{ret= -1; goto ex;}
|
||||
} else if(path[1]==0) {
|
||||
if(flag&8)
|
||||
strcpy(eff_path, "/");
|
||||
return(2); /* root directory */
|
||||
{ret= 2; goto ex;} /* root directory */
|
||||
}
|
||||
|
||||
for(npt= apt; !done; apt= npt+1) {
|
||||
@ -120,10 +122,10 @@ int Xorriso_normalize_img_path(struct XorrisO *xorriso, char *wd,
|
||||
if(node==NULL) {
|
||||
bonked_root:;
|
||||
sprintf(xorriso->info_text,
|
||||
"Relative addressing in path exceeds root directory: %s",
|
||||
Text_shellsafe(img_path, sfe, 0));
|
||||
"Relative addressing in path exceeds root directory: ");
|
||||
Text_shellsafe(img_path, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(-1);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
dir= iso_node_get_parent(node);
|
||||
}
|
||||
@ -141,13 +143,13 @@ much_too_long:;
|
||||
sprintf(xorriso->info_text, "Effective path gets much too long (%d)",
|
||||
(int) (strlen(eff_path)+strlen(apt)+1));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(-1);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
if(!(flag&2)) {
|
||||
dir= (IsoDir *) node;
|
||||
ret= Xorriso_node_from_path(xorriso, volume, eff_path, &node, flag&1);
|
||||
if(ret<=0)
|
||||
return(0);
|
||||
{ret= 0; goto ex;}
|
||||
if(dir==NULL) /* could be false with "/dir/.." */
|
||||
dir= iso_node_get_parent(node);
|
||||
is_dir= LIBISO_ISDIR(node);
|
||||
@ -158,11 +160,14 @@ much_too_long:;
|
||||
1|(4*(xorriso->do_follow_links || (xorriso->do_follow_param && !(flag&32)))
|
||||
));
|
||||
if(ret<0)
|
||||
return(0);
|
||||
{ret= 0; goto ex;}
|
||||
if(ret==2)
|
||||
is_dir= 1;
|
||||
}
|
||||
return(1+!!is_dir);
|
||||
ret= 1+!!is_dir;
|
||||
ex:;
|
||||
Xorriso_free_meM(path);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@ -171,21 +176,26 @@ int Xorriso_get_node_by_path(struct XorrisO *xorriso,
|
||||
IsoNode **node, int flag)
|
||||
{
|
||||
int ret;
|
||||
char path[SfileadrL];
|
||||
char *path= NULL;
|
||||
IsoImage *volume;
|
||||
|
||||
Xorriso_alloc_meM(path, char, SfileadrL);
|
||||
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, in_path, path, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
goto ex;
|
||||
if(eff_path!=NULL)
|
||||
strcpy(eff_path, path);
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
goto ex;
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, node, 0);
|
||||
if(ret<=0)
|
||||
return(0);
|
||||
return(1);
|
||||
{ret= 0; goto ex;}
|
||||
ret= 1;
|
||||
ex:;
|
||||
Xorriso_free_meM(path);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@ -1345,17 +1355,19 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
int i, ret, was_error= 0, dfilec= 0, pass, passes, hidden_state= 0;
|
||||
IsoNode *node;
|
||||
IsoImage *volume;
|
||||
char sfe[5*SfileadrL], sfe2[5*SfileadrL], path[SfileadrL];
|
||||
char link_target[SfileadrL], *rpt, **dfilev= NULL;
|
||||
char *path= NULL, *link_target= NULL, *rpt, **dfilev= NULL;
|
||||
char *a_text= NULL, *d_text= NULL;
|
||||
off_t size;
|
||||
struct stat stbuf;
|
||||
|
||||
Xorriso_alloc_meM(path, char, SfileadrL);
|
||||
Xorriso_alloc_meM(link_target, char, SfileadrL);
|
||||
|
||||
rpt= xorriso->result_line;
|
||||
|
||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
goto ex;
|
||||
|
||||
Sort_argv(filec, filev, 0);
|
||||
|
||||
@ -1368,8 +1380,8 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
}
|
||||
ret= Xorriso_node_from_path(xorriso, volume, path, &node, 1);
|
||||
if(ret<=0) {
|
||||
sprintf(xorriso->info_text, "Not found in ISO image: %s",
|
||||
Text_shellsafe(path, sfe, 0));
|
||||
sprintf(xorriso->info_text, "Not found in ISO image: ");
|
||||
Text_shellsafe(path, xorriso->info_text, 1);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
was_error++;
|
||||
continue;
|
||||
@ -1380,7 +1392,7 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
sprintf(xorriso->info_text, "Valid ISO nodes found: %d\n", filec-was_error);
|
||||
Xorriso_info(xorriso,1);
|
||||
if(filec-was_error<=0)
|
||||
return(!was_error);
|
||||
{ret= !was_error; goto ex;}
|
||||
}
|
||||
|
||||
passes= 1+!(flag&(4|8));
|
||||
@ -1399,7 +1411,8 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
if(filec>1) {
|
||||
strcpy(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
sprintf(xorriso->result_line, "%s:\n", Text_shellsafe(filev[i], sfe,0));
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 0);
|
||||
strcat(xorriso->result_line, ":\n");
|
||||
Xorriso_result(xorriso,0);
|
||||
}
|
||||
ret= Xorriso_sorted_dir_i(xorriso,
|
||||
@ -1443,22 +1456,27 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
ret= Xorriso_show_du_subs(xorriso, (IsoDir *) node,
|
||||
path, filev[i], &size, boss_mem, flag&1);
|
||||
if(ret<0)
|
||||
return(-1);
|
||||
{ret= -1; goto ex;}
|
||||
if(ret==0)
|
||||
continue;
|
||||
}
|
||||
sprintf(rpt, "%7.f ",(double) (size/1024));
|
||||
}
|
||||
if(link_target[0] && (flag&5)==1)
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s -> %s\n",
|
||||
Text_shellsafe(filev[i], sfe, 0),
|
||||
Text_shellsafe(link_target, sfe2, 0));
|
||||
else
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s\n",
|
||||
Text_shellsafe(filev[i], sfe, 0));
|
||||
if(link_target[0] && (flag&5)==1) {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1),
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Text_shellsafe(link_target, xorriso->result_line, 1);
|
||||
} else {
|
||||
Text_shellsafe(filev[i], xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
return(!was_error);
|
||||
ret= !was_error;
|
||||
ex:;
|
||||
Xorriso_free_meM(path);
|
||||
Xorriso_free_meM(link_target);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
@ -1476,9 +1494,11 @@ int Xorriso_ls(struct XorrisO *xorriso, int flag)
|
||||
IsoNode *node, **node_array= NULL;
|
||||
IsoDir *dir_node;
|
||||
IsoDirIter *iter= NULL;
|
||||
char sfe[5*SfileadrL], sfe2[5*SfileadrL], link_target[SfileadrL], *npt, *rpt;
|
||||
char *link_target= NULL, *npt, *rpt;
|
||||
struct stat stbuf;
|
||||
|
||||
Xorriso_alloc_meM(link_target, char, SfileadrL);
|
||||
|
||||
rpt= xorriso->result_line;
|
||||
|
||||
ret= Xorriso_dir_from_path(xorriso, "Working directory", xorriso->wdi,
|
||||
@ -1552,13 +1572,14 @@ cannot_create_iter:;
|
||||
if(ret<=0)
|
||||
continue;
|
||||
}
|
||||
if(link_target[0] && (flag&1))
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s -> %s\n",
|
||||
Text_shellsafe(npt, sfe, 0),
|
||||
Text_shellsafe(link_target, sfe2, 0));
|
||||
else
|
||||
sprintf(xorriso->result_line+strlen(xorriso->result_line), "%s\n",
|
||||
Text_shellsafe(npt, sfe, 0));
|
||||
if(link_target[0] && (flag&1)) {
|
||||
Text_shellsafe(npt, xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, " -> ");
|
||||
Text_shellsafe(link_target, xorriso->result_line, 1);
|
||||
} else {
|
||||
Text_shellsafe(npt, xorriso->result_line, 1);
|
||||
}
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
|
||||
@ -1569,6 +1590,7 @@ ex:;
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(node_array!=NULL)
|
||||
free((char *) node_array);
|
||||
Xorriso_free_meM(link_target);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -1658,7 +1680,6 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso,
|
||||
{
|
||||
int ret, count= 0, abs_adr= 0, i, was_count, was_filec;
|
||||
int nonconst_mismatches= 0, dive_count= 0;
|
||||
char sfe[5*SfileadrL];
|
||||
IsoImage *volume;
|
||||
IsoDir *dir= NULL, *root_dir;
|
||||
IsoNode *iso_node;
|
||||
@ -1699,9 +1720,10 @@ int Xorriso_expand_pattern(struct XorrisO *xorriso,
|
||||
dir= (IsoDir *) iso_node;
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text,
|
||||
"While expanding pattern %s : Working directory does not exist in ISO image",
|
||||
Text_shellsafe(patterns[i], sfe, 0));
|
||||
sprintf(xorriso->info_text, "While expanding pattern ");
|
||||
Text_shellsafe(patterns[i], xorriso->info_text, 1);
|
||||
strcat(xorriso->info_text,
|
||||
" : Working directory does not exist in ISO image");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
@ -2002,7 +2024,6 @@ int Xorriso_report_lba(struct XorrisO *xorriso, char *show_path,
|
||||
{
|
||||
int ret, *start_lbas= NULL, *end_lbas= NULL, lba_count, i;
|
||||
off_t size;
|
||||
char sfe[5*SfileadrL];
|
||||
|
||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas,
|
||||
&size, 0);
|
||||
@ -2014,9 +2035,10 @@ int Xorriso_report_lba(struct XorrisO *xorriso, char *show_path,
|
||||
{ret= 1; goto ex;} /* it is ok to ignore other types */
|
||||
for(i= 0; i < lba_count; i++) {
|
||||
sprintf(xorriso->result_line,
|
||||
"File data lba: %2d , %8d , %8d , %8.f , %s\n",
|
||||
i, start_lbas[i], end_lbas[i] + 1 - start_lbas[i], (double) size,
|
||||
Text_shellsafe(show_path, sfe, 0));
|
||||
"File data lba: %2d , %8d , %8d , %8.f , ",
|
||||
i, start_lbas[i], end_lbas[i] + 1 - start_lbas[i], (double) size);
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
ret= 1;
|
||||
@ -2034,7 +2056,6 @@ int Xorriso_report_damage(struct XorrisO *xorriso, char *show_path,
|
||||
{
|
||||
int ret;
|
||||
off_t size= 0, damage_start, damage_end;
|
||||
char sfe[5*SfileadrL];
|
||||
|
||||
ret= Xorriso_file_eval_damage(xorriso, node, &damage_start, &damage_end, 0);
|
||||
if(ret < 0)
|
||||
@ -2043,15 +2064,16 @@ int Xorriso_report_damage(struct XorrisO *xorriso, char *show_path,
|
||||
if(LIBISO_ISREG(node))
|
||||
size= iso_file_get_size((IsoFile *) node);
|
||||
if(ret > 0) {
|
||||
sprintf(xorriso->result_line, "File damaged : %8.f , %8.f , %8.f , %s\n",
|
||||
sprintf(xorriso->result_line, "File damaged : %8.f , %8.f , %8.f , ",
|
||||
(double) damage_start, (double) (damage_end - damage_start) ,
|
||||
(double) size, Text_shellsafe(show_path, sfe, 0));
|
||||
Xorriso_result(xorriso, 0);
|
||||
(double) size);
|
||||
} else {
|
||||
sprintf(xorriso->result_line, "File seems ok: %8.f , %8.f , %8.f , %s\n",
|
||||
-1.0, -1.0, (double) size, Text_shellsafe(show_path, sfe, 0));
|
||||
Xorriso_result(xorriso, 0);
|
||||
sprintf(xorriso->result_line, "File seems ok: %8.f , %8.f , %8.f , ",
|
||||
-1.0, -1.0, (double) size);
|
||||
}
|
||||
Text_shellsafe(show_path, xorriso->result_line, 1);
|
||||
strcat(xorriso->result_line, "\n");
|
||||
Xorriso_result(xorriso, 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -2111,7 +2133,7 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
char *path, IsoNode **node, int flag)
|
||||
{
|
||||
int ret;
|
||||
char sfe[5*SfileadrL], *path_pt;
|
||||
char *path_pt;
|
||||
|
||||
path_pt= path;
|
||||
if(path[0]==0)
|
||||
@ -2126,8 +2148,9 @@ int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret<=0 || (*node)==NULL) {
|
||||
if(!(flag&1)) {
|
||||
sprintf(xorriso->info_text, "Cannot find path %s in loaded ISO image",
|
||||
Text_shellsafe(path_pt, sfe, 0));
|
||||
sprintf(xorriso->info_text, "Cannot find path ");
|
||||
Text_shellsafe(path_pt, xorriso->info_text, 1);
|
||||
strcat(xorriso->info_text, " in loaded ISO image");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
}
|
||||
return(0);
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2011.05.04.152314"
|
||||
#define Xorriso_timestamP "2011.05.04.165840"
|
||||
|
Loading…
Reference in New Issue
Block a user