Now option -auto_charset based on xattr "isofs.cs"
This commit is contained in:
@ -671,7 +671,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
|
||||
ext= isoburn_ropt_noiso1999;
|
||||
#ifdef isoburn_ropt_noaaip
|
||||
if(!(xorriso->do_aaip & (1 | 4 | 16)))
|
||||
if(!(xorriso->do_aaip & (1 | 4 | 32)))
|
||||
ext|= isoburn_ropt_noaaip;
|
||||
#endif
|
||||
#ifdef isoburn_ropt_noacl
|
||||
@ -681,11 +681,17 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
#ifdef isoburn_ropt_noea
|
||||
if(!(xorriso->do_aaip & 4))
|
||||
ext|= isoburn_ropt_noea;
|
||||
#endif
|
||||
#ifdef Libisofs_has_auto_input_charseT
|
||||
|
||||
/* >>> eventually allow iso_read_opts_auto_input_charset() */
|
||||
|
||||
#endif
|
||||
isoburn_ropt_set_extensions(ropts, ext);
|
||||
|
||||
isoburn_ropt_set_default_perms(ropts, (uid_t) 0, (gid_t) 0, (mode_t) 0555);
|
||||
isoburn_ropt_set_input_charset(ropts, xorriso->in_charset);
|
||||
isoburn_ropt_set_auto_incharset(ropts, !!(xorriso->do_aaip & 512));
|
||||
|
||||
Xorriso_set_image_severities(xorriso, 1); /* No DEBUG messages */
|
||||
Xorriso_pacifier_reset(xorriso, 0);
|
||||
@ -1088,7 +1094,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret, relax= 0, i, pacifier_speed= 0, data_lba;
|
||||
int major, minor, micro;
|
||||
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *cpt;
|
||||
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *cpt, *out_cs;
|
||||
struct isoburn_imgen_opts *sopts= NULL;
|
||||
struct burn_drive_info *dinfo, *source_dinfo;
|
||||
struct burn_drive *drive, *source_drive;
|
||||
@ -1106,6 +1112,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
int profile_number;
|
||||
char profile_name[80];
|
||||
|
||||
out_cs= xorriso->out_charset;
|
||||
if(out_cs == NULL)
|
||||
Xorriso_get_local_charset(xorriso, &out_cs, 0);
|
||||
|
||||
if(!(flag & 1)) {
|
||||
ret= Xorriso_auto_format(xorriso, 0);
|
||||
if(ret <=0 )
|
||||
@ -1159,6 +1169,17 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
iso_image_set_publisher_id(image, xorriso->publisher);
|
||||
}
|
||||
|
||||
if((xorriso->do_aaip & 256) && out_cs != NULL) {
|
||||
static char *names = "isofs.cs";
|
||||
size_t value_lengths[1];
|
||||
|
||||
value_lengths[0]= strlen(out_cs);
|
||||
ret= Xorriso_setfattr(xorriso, NULL, "/",
|
||||
(size_t) 1, &names, value_lengths, &out_cs, 2 | 8);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
/* Activate, adjust or discard boot image */
|
||||
/* >>> ??? move down to libisoburn ? */
|
||||
if(image!=NULL && !(flag&1)) {
|
||||
@ -1293,12 +1314,12 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
isoburn_igopt_set_level(sopts, 3);
|
||||
isoburn_igopt_set_extensions(sopts, 1 | ((!!xorriso->do_joliet)<<1) |
|
||||
((!!(xorriso->do_aaip & (2 | 8 | 16))) << 5));
|
||||
((!!(xorriso->do_aaip & (2 | 8 | 16 | 256))) << 5));
|
||||
isoburn_igopt_set_relaxed(sopts, relax);
|
||||
isoburn_igopt_set_sort_files(sopts, 1);
|
||||
isoburn_igopt_set_over_mode(sopts, 0, 0, (mode_t) 0, (mode_t) 0);
|
||||
isoburn_igopt_set_over_ugid(sopts, 0, 0, (uid_t) 0, (gid_t) 0);
|
||||
isoburn_igopt_set_out_charset(sopts, xorriso->out_charset);
|
||||
isoburn_igopt_set_out_charset(sopts, out_cs);
|
||||
isoburn_igopt_set_fifo_size(sopts, xorriso->fs * 2048);
|
||||
|
||||
if(image!=NULL &&
|
||||
@ -1677,6 +1698,7 @@ int Xorriso__read_pacifier(IsoImage *image, IsoFileSource *filesource)
|
||||
xorriso= (struct XorrisO *) iso_image_get_attached_data(image);
|
||||
if(xorriso==NULL)
|
||||
return(1);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
xorriso->pacifier_count++;
|
||||
if(xorriso->pacifier_count%10)
|
||||
return(1);
|
||||
|
Reference in New Issue
Block a user