Made use of new libisofs call iso_image_update_sizes()

This commit is contained in:
Thomas Schmitt 2008-09-08 09:48:43 +00:00
parent 7f40fbce00
commit 5f3f860800
3 changed files with 48 additions and 4 deletions

View File

@ -1877,6 +1877,7 @@ struct FindjoB {
int start_lba;
int end_lba;
int damage_filter; /* -1=only undamaged , 0=all , 1=only damaged */
int commit_filter; /* bit0= test -pending_data : uncommitted regular files */
/* 0= echo
1= rm (also rmdir)
@ -1928,6 +1929,7 @@ int Findjob_new(struct FindjoB **o, char *start_path, int flag)
m->start_lba= -1;
m->end_lba= -1;
m->damage_filter= 0;
m->commit_filter= 0;
m->action= 0; /* print */
m->target= NULL; /* a mere pointer, not managed memory */
m->user= 0;
@ -2052,6 +2054,22 @@ int Findjob_get_lba_damage_filter(struct FindjoB *o, int *start_lba,
}
int Findjob_set_commit_filter(struct FindjoB *o, int mask, int values,
int flag)
{
o->commit_filter&= ~mask;
o->commit_filter|= (mask & values);
return(1);
}
int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag)
{
*commit_filter= o->commit_filter;
return(1);
}
/* @return 0=no match , 1=match , <0 = error
*/
int Findjob_test(struct FindjoB *o, char *name,
@ -11069,6 +11087,8 @@ not_enough_arguments:;
sscanf(argv[i-1], "%d", &start_lba);
sscanf(argv[i], "%d", &count);
Findjob_set_lba_range(job, start_lba, count, 0);
} else if(strcmp(argv[i], "-pending_data")==0) {
Findjob_set_commit_filter(job, 1, 1, 0);
} else if(strcmp(argv[i], "-exec")==0) {
if(i+1>=end_idx)
goto not_enough_arguments;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.09.07.144714"
#define Xorriso_timestamP "2008.09.08.094748"

View File

@ -841,7 +841,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
struct burn_session **sessions;
struct burn_track **tracks;
enum burn_disc_status s;
IsoImage *image = NULL;
IsoImage *image= NULL;
ElToritoBootImage *bootimg;
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
@ -897,8 +897,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
}
ret= isoburn_igopt_new(&sopts, 0);
if(ret<=0)
if(ret<=0) {
Xorriso_process_msg_queues(xorriso, 0);
return(ret);
}
relax= isoburn_igopt_allow_deep_paths;
/* Adjust or discard boot image */
@ -969,6 +971,20 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
if(ret<0)
{ret= 0; goto ex;}
/* >>> omit iso_image_update_sizes if the image was filled up very quickly */;
ret= iso_image_update_sizes(image);
if(ret < 0) {
Xorriso_process_msg_queues(xorriso, 0);
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
if(ret<0)
{ret= 0; goto ex;}
}
Xorriso_set_abort_severity(xorriso, 1);
if (xorriso->grow_blindly_msc2 >= 0 &&
xorriso->out_drive_handle != xorriso->in_drive_handle) {
@ -5858,7 +5874,7 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
struct stat *boss_stbuf, struct stat *stbuf,
int depth, int flag)
{
int ret, start_lba, end_lba, damage_filter;
int ret, start_lba, end_lba, damage_filter, commit_filter, lba;
off_t damage_start, damage_end, size;
int lba_count, *file_end_lbas= NULL, *file_start_lbas= NULL, i;
@ -5886,6 +5902,14 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
{ret= 0; goto ex;}
}
}
Findjob_get_commit_filter(job, &commit_filter, 0);
if(commit_filter & 1) { /* -pending_data */
if(!LIBISO_ISREG(node))
{ret= 0; goto ex;}
ret= Xorriso__file_start_lba(node, &lba, 0);
if(ret > 0 && lba >= 0)
{ret= 0; goto ex;}
}
ret= 1;
ex:;
if(file_start_lbas != NULL)