New option -volume_date, for grub-mkrescue: -as mkisofs --modification-date=

This commit is contained in:
Thomas Schmitt 2010-04-07 20:27:05 +00:00
parent a65aa4f804
commit cc0ddbeb10
8 changed files with 338 additions and 84 deletions

View File

@ -9,7 +9,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Apr 06, 2010" .TH XORRISO 1 "Apr 07, 2010"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
@ -1985,6 +1985,34 @@ System Area in image blocks 0 to 15.
Permissible are up to 32 characters. This setting gets overridden by Permissible are up to 32 characters. This setting gets overridden by
image loading. image loading.
.TP .TP
\fB\-volume_date\fR type timestring
Set one of the four overall timestamps for subsequent image writing.
Available types are:
.br
"c" time when the volume was created.
.br
"m" time when volume was last modified.
.br
"x" time when the information in the volume expires.
.br
"f" time since when the volume is effectively valid.
.br
"uuid" sets a timestring that overrides "m" time literally.
.br
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999.
It is supposed to match this GRUB line:
.br
search --fs-uuid --set YYYY-MM-DD-hh-mm-ss-cc
.br
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
.br
Timestrings for the other types may be given as with option -alter_date.
They are prone to timezone computations. The timestrings "default" or
"overridden" cause default settings: "c" and "m" will show the current time
of image creation. "x" and "f" will be marked as insignificant.
"uuid" will be deactivated.
.TP
\fB\-out_charset\fR character_set_name \fB\-out_charset\fR character_set_name
Set the character set to which file names get converted when writing an Set the character set to which file names get converted when writing an
image. See paragraph "Character sets" for more explanations. image. See paragraph "Character sets" for more explanations.

View File

@ -1456,6 +1456,45 @@ ex:
} }
int Decode_ecma119_format(struct tm *erg, char *text, int flag)
/* YYYYMMDDhhmmsscc */
/* 2010040711405800 */
{
int i, l, num;
memset(erg, 0, sizeof(*erg));
erg->tm_isdst= -1;
l= strlen(text);
if(l != 16)
return(0);
for(i= 0; i < l; i++)
if(text[i] < '0' || text[i] > '9')
return(0);
num= 0;
for(i= 0; i < 4; i++)
num= num * 10 + text[i] - '0';
if(num < 1970 || num > 3000)
return(0);
erg->tm_year = num - 1900;
erg->tm_mon= 10*(text[4]-'0')+text[5]-'0'-1;
if(erg->tm_mon > 12)
return(0);
erg->tm_mday= 10*(text[6]-'0')+text[7]-'0';
if(erg->tm_mday > 31)
return(0);
erg->tm_hour= 10*(text[8]-'0')+text[9]-'0';
if(erg->tm_hour > 23)
return(0);
erg->tm_min= 10*(text[10]-'0')+text[11]-'0';
if(erg->tm_min > 59)
return(0);
erg->tm_sec= 10*(text[12]-'0')+text[13]-'0';
if(erg->tm_sec > 59)
return(0);
return(1);
}
int Decode_xorriso_timestamp(struct tm *erg, char *code, int flag) int Decode_xorriso_timestamp(struct tm *erg, char *code, int flag)
/* 2007.11.07.225624 */ /* 2007.11.07.225624 */
{ {
@ -1589,6 +1628,12 @@ time_t Decode_timestring(char *code, time_t *date, int flag)
seconds= mktime(&result_tm); seconds= mktime(&result_tm);
seconds_valid= 1; seconds_valid= 1;
goto completed; goto completed;
} else if(Decode_ecma119_format(&result_tm, code, 0)>0) {
/* YYYYMMDDhhmmsscc */
/* 2010040711405800 */
seconds= mktime(&result_tm);
seconds_valid= 1;
goto completed;
} }
return(0); return(0);
completed:; completed:;
@ -4847,6 +4892,11 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->system_area_disk_path[0]= 0; m->system_area_disk_path[0]= 0;
m->system_area_options= 0; m->system_area_options= 0;
m->vol_creation_time= 0;
m->vol_modification_time= 0;
m->vol_expiration_time= 0;
m->vol_effective_time= 0;
m->vol_uuid[0]= 0;
m->loaded_boot_bin_lba= 0; m->loaded_boot_bin_lba= 0;
m->loaded_boot_cat_path[0]= 0; m->loaded_boot_cat_path[0]= 0;
m->allow_graft_points= 0; m->allow_graft_points= 0;
@ -7069,6 +7119,41 @@ bin_path:;
if(!(is_default && no_defaults)) if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2); Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->vol_creation_time == 0);
sprintf(line,"-volume_date c %s\n",
is_default ? "default" :
Ftimetxt(xorriso->vol_creation_time, sfe, 2));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->vol_modification_time == 0);
sprintf(line,"-volume_date m %s\n",
xorriso->vol_uuid[0] ? "overridden" :
is_default ? "default" :
Ftimetxt(xorriso->vol_modification_time, sfe, 2));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->vol_expiration_time == 0);
sprintf(line,"-volume_date x %s\n",
is_default ? "default" :
Ftimetxt(xorriso->vol_expiration_time, sfe, 2));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->vol_effective_time == 0);
sprintf(line,"-volume_date f %s\n",
is_default ? "default" :
Ftimetxt(xorriso->vol_effective_time, sfe, 2));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->vol_uuid[0] == 0);
sprintf(line,"-volume_date uuid %s\n",
Text_shellsafe(xorriso->vol_uuid,sfe,0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->do_joliet==0); is_default= (xorriso->do_joliet==0);
sprintf(line,"-joliet %s\n", (xorriso->do_joliet == 1 ? "on" : "off")); sprintf(line,"-joliet %s\n", (xorriso->do_joliet == 1 ? "on" : "off"));
if(!(is_default && no_defaults)) if(!(is_default && no_defaults))
@ -9195,6 +9280,7 @@ unrecognizable:;
} }
/* @param flag bit0= do not complain in case of error, but set info_text */
int Xorriso_convert_datestring(struct XorrisO *xorriso, char *cmd, int Xorriso_convert_datestring(struct XorrisO *xorriso, char *cmd,
char *time_type, char *timestring, char *time_type, char *timestring,
int *t_type, time_t *t, int flag) int *t_type, time_t *t, int flag)
@ -9209,14 +9295,16 @@ int Xorriso_convert_datestring(struct XorrisO *xorriso, char *cmd,
(*t_type)|= 5; (*t_type)|= 5;
else { else {
sprintf(xorriso->info_text, "%s: Unrecognized type '%s'", cmd, time_type); sprintf(xorriso->info_text, "%s: Unrecognized type '%s'", cmd, time_type);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); if(!(flag & 1))
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0); return(0);
} }
ret= Decode_timestring(timestring, t, 0); ret= Decode_timestring(timestring, t, 0);
if(ret<=0) { if(ret<=0) {
sprintf(xorriso->info_text, "%s: Cannot decode timestring '%s'", cmd, sprintf(xorriso->info_text, "%s: Cannot decode timestring '%s'", cmd,
timestring); timestring);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); if(!(flag & 1))
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0); return(0);
} }
sprintf(xorriso->info_text, "Understanding timestring '%s' as: %s", sprintf(xorriso->info_text, "Understanding timestring '%s' as: %s",
@ -11096,6 +11184,8 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" -boot-info-table Patch boot image with info table", " -boot-info-table Patch boot image with info table",
" -G FILE, -generic-boot FILE Set generic boot image name", " -G FILE, -generic-boot FILE Set generic boot image name",
" --protective-msdos-label Patch System Area by partition table", " --protective-msdos-label Patch System Area by partition table",
" --modification-date=YYYYMMDDhhmmsscc",
" Override modification date",
#ifdef Xorriso_with_isohybriD #ifdef Xorriso_with_isohybriD
" isolinux_mbr=on|auto|off Control eventual isohybrid MBR generation", " isolinux_mbr=on|auto|off Control eventual isohybrid MBR generation",
#endif #endif
@ -11253,6 +11343,10 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
goto ex; goto ex;
} else if(strcmp(argv[i], "--protective-msdos-label")==0) { } else if(strcmp(argv[i], "--protective-msdos-label")==0) {
xorriso->system_area_options|= 1; xorriso->system_area_options|= 1;
} else if(strncmp(argv[i], "--modification-date=", 20)==0) {
ret= Xorriso_option_volume_date(xorriso, "uuid", argv[i] + 20, 0);
if(ret <= 0)
goto problem_handler_1;
} else if(strcmp(argv[i], "-input-charset")==0) { } else if(strcmp(argv[i], "-input-charset")==0) {
if(i+1>=argc) if(i+1>=argc)
goto not_enough_args; goto not_enough_args;
@ -11523,6 +11617,8 @@ not_enough_args:;
/* was already handled in first argument scan */; /* was already handled in first argument scan */;
} else if(strcmp(argv[i], "--protective-msdos-label")==0) { } else if(strcmp(argv[i], "--protective-msdos-label")==0) {
/* was already handled in first argument scan */; /* was already handled in first argument scan */;
} else if(strncmp(argv[i], "--modification-date=", 20)==0) {
/* was already handled in first argument scan */;
} else if(strcmp(argv[i], "-boot-load-size") == 0) { } else if(strcmp(argv[i], "-boot-load-size") == 0) {
i++; i++;
/* was already handled in first argument scan */; /* was already handled in first argument scan */;
@ -16357,6 +16453,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Specifies the application id. (128 chars)", " Specifies the application id. (128 chars)",
" -system_id name", " -system_id name",
" Specifies the system id for the System Area. (32 chars)", " Specifies the system id for the System Area. (32 chars)",
" -volume_date type timestring",
" Specifies volume timestamps. [\"c\",\"m\",\"x\",\"f\",\"uuid\"]",
" -joliet \"on\"|\"off\"", " -joliet \"on\"|\"off\"",
" Generate Joliet info additional to Rock Ridge info.", " Generate Joliet info additional to Rock Ridge info.",
" -compliance rule[:rule...]", " -compliance rule[:rule...]",
@ -19595,6 +19693,62 @@ int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, int flag)
} }
/* Option -volume_date */
int Xorriso_option_volume_date(struct XorrisO *xorriso,
char *time_type, char *timestring, int flag)
{
int ret, t_type= 0;
time_t t;
struct tm erg;
if(timestring[0] == 0 || strcmp(timestring, "default") == 0 ||
strcmp(timestring, "overridden") == 0 ){
t= 0;
} else if(strcmp(time_type, "uuid") != 0) {
ret= Xorriso_convert_datestring(xorriso, "-volume_date",
"m", timestring, &t_type, &t, 0);
if(ret<=0)
goto ex;
}
if(strcmp(time_type, "uuid") == 0) {
if(t == 0) {
xorriso->vol_uuid[0]= 0;
ret= 1; goto ex;
}
ret= Decode_ecma119_format(&erg, timestring, 0);
if(ret <= 0) {
sprintf(xorriso->info_text, "-volume_date uuid : Not an ECMA-119 time string. (16 decimal digits, range 1970... to 2999...)");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
strcpy(xorriso->vol_uuid, timestring);
if(erg.tm_year < 138) {
sprintf(xorriso->info_text,
"Understanding ECMA-119 timestring '%s' as: %s",
timestring, asctime(&erg));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
}
} else if(strcmp(time_type, "c") == 0) {
xorriso->vol_creation_time= t;
} else if(strcmp(time_type, "m") == 0) {
xorriso->vol_modification_time= t;
} else if(strcmp(time_type, "x") == 0) {
xorriso->vol_expiration_time= t;
} else if(strcmp(time_type, "f") == 0) {
xorriso->vol_effective_time= t;
} else {
/* >>> unknown time type */;
ret= 0; goto ex;
}
ret= 1;
ex:;
return(ret);
}
/* Option -xattr "on"|"off" */ /* Option -xattr "on"|"off" */
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag) int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag)
{ {
@ -19771,7 +19925,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"errfile_log","error_behavior","extract","extract_single", "errfile_log","error_behavior","extract","extract_single",
"load","logfile", "load","logfile",
"map","map_single","page","return_with", "map","map_single","page","return_with",
"scdbackup_tag","update","update_r", "scdbackup_tag","update","update_r","volume_date",
"" ""
}; };
static char arg4_commands[][40]= { static char arg4_commands[][40]= {
@ -20598,6 +20752,10 @@ next_command:;
(*idx)++; (*idx)++;
ret= Xorriso_option_volid(xorriso,arg1,0); ret= Xorriso_option_volid(xorriso,arg1,0);
} else if(strcmp(cmd,"volume_date")==0) {
(*idx)+= 2;
ret= Xorriso_option_volume_date(xorriso, arg1, arg2, 0);
} else if(strcmp(cmd,"xattr")==0) { } else if(strcmp(cmd,"xattr")==0) {
(*idx)++; (*idx)++;
ret= Xorriso_option_xattr(xorriso, arg1, 0); ret= Xorriso_option_xattr(xorriso, arg1, 0);

View File

@ -1004,6 +1004,10 @@ int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
/* Option -volset_id */ /* Option -volset_id */
int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, int flag); int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, int flag);
/* Option -volume_date */
int Xorriso_option_volume_date(struct XorrisO *xorriso,
char *time_type, char *timestring, int flag);
/* Option -xattr "on"|"off" */ /* Option -xattr "on"|"off" */
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag); int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag);

View File

@ -1,5 +1,5 @@
This is xorriso/xorriso.info, produced by makeinfo version 4.8 from This is xorriso.info, produced by makeinfo version 4.8 from
./xorriso/xorriso.texi. ./xorriso.texi.
INFO-DIR-SECTION Archiving INFO-DIR-SECTION Archiving
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
@ -1786,6 +1786,25 @@ will be written according to the setting of option -acl.
are up to 32 characters. This setting gets overridden by image are up to 32 characters. This setting gets overridden by image
loading. loading.
-volume_date type timestring
Set one of the four overall timestamps for subsequent image
writing. Available types are:
"c" time when the volume was created.
"m" time when volume was last modified.
"x" time when the information in the volume expires.
"f" time since when the volume is effectively valid.
"uuid" sets a timestring that overrides "m" time literally.
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc,
with YYYY between 1970 and 2999. It is supposed to match this
GRUB line:
search -fs-uuid -set YYYY-MM-DD-hh-mm-ss-cc
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
Timestrings for the other types may be given as with option
-alter_date. They are prone to timezone computations. The
timestrings "default" or "overridden" cause default settings: "c"
and "m" will show the current time of image creation. "x" and "f"
will be marked as insignificant. "uuid" will be deactivated.
-out_charset character_set_name -out_charset character_set_name
Set the character set to which file names get converted when Set the character set to which file names get converted when
writing an image. See paragraph "Character sets" for more writing an image. See paragraph "Character sets" for more
@ -3557,7 +3576,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chmod_r sets permissions in ISO image: Manip. (line 70) * -chmod_r sets permissions in ISO image: Manip. (line 70)
* -chown sets ownership in ISO image: Manip. (line 42) * -chown sets ownership in ISO image: Manip. (line 42)
* -chown_r sets ownership in ISO image: Manip. (line 47) * -chown_r sets ownership in ISO image: Manip. (line 47)
* -close controls media closing: SetWrite. (line 172) * -close controls media closing: SetWrite. (line 191)
* -close_filter_list bans filter registration: Filter. (line 52) * -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 13) * -commit writes pending ISO image: Writing. (line 13)
* -commit_eject writes and ejects: Writing. (line 40) * -commit_eject writes and ejects: Writing. (line 40)
@ -3577,11 +3596,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -disk_pattern controls pattern expansion: Insert. (line 31) * -disk_pattern controls pattern expansion: Insert. (line 31)
* -drive_class controls drive accessability: Loading. (line 35) * -drive_class controls drive accessability: Loading. (line 35)
* -du show directory size in ISO image: Navigate. (line 84) * -du show directory size in ISO image: Navigate. (line 84)
* -dummy controls write simulation: SetWrite. (line 161) * -dummy controls write simulation: SetWrite. (line 180)
* -dus show directory size in ISO image: Navigate. (line 88) * -dus show directory size in ISO image: Navigate. (line 88)
* -dusx show directory size on disk: Navigate. (line 97) * -dusx show directory size on disk: Navigate. (line 97)
* -dux show directory size on disk: Navigate. (line 92) * -dux show directory size on disk: Navigate. (line 92)
* -dvd_obs set write block size: SetWrite. (line 148) * -dvd_obs set write block size: SetWrite. (line 167)
* -eject ejects drive tray: Writing. (line 36) * -eject ejects drive tray: Writing. (line 36)
* -end writes pending session and ends program: Scripting. (line 122) * -end writes pending session and ends program: Scripting. (line 122)
* -errfile_log logs problematic disk files: Scripting. (line 84) * -errfile_log logs problematic disk files: Scripting. (line 84)
@ -3598,12 +3617,12 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -follow softlinks and mount points: SetInsert. (line 76) * -follow softlinks and mount points: SetInsert. (line 76)
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 163) * -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 163)
* -format formats media: Writing. (line 69) * -format formats media: Writing. (line 69)
* -fs sets size of fifo: SetWrite. (line 165) * -fs sets size of fifo: SetWrite. (line 184)
* -getfacl shows ACL in ISO image: Navigate. (line 65) * -getfacl shows ACL in ISO image: Navigate. (line 65)
* -getfacl_r shows ACL in ISO image: Navigate. (line 72) * -getfacl_r shows ACL in ISO image: Navigate. (line 72)
* -getfattr shows xattr in ISO image: Navigate. (line 76) * -getfattr shows xattr in ISO image: Navigate. (line 76)
* -getfattr_r shows xattr in ISO image: Navigate. (line 80) * -getfattr_r shows xattr in ISO image: Navigate. (line 80)
* -gid sets global ownership: SetWrite. (line 105) * -gid sets global ownership: SetWrite. (line 124)
* -grow_blindly overides next writeable address: AqDrive. (line 44) * -grow_blindly overides next writeable address: AqDrive. (line 44)
* -hardlinks controls handling of hard links: Loading. (line 91) * -hardlinks controls handling of hard links: Loading. (line 91)
* -help prints help text: Scripting. (line 16) * -help prints help text: Scripting. (line 16)
@ -3643,11 +3662,11 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -not_paths sets absolute exclusion paths: SetInsert. (line 55) * -not_paths sets absolute exclusion paths: SetInsert. (line 55)
* -options_from_file reads commands from file: Scripting. (line 12) * -options_from_file reads commands from file: Scripting. (line 12)
* -osirrox enables ISO-to-disk copying: Restore. (line 18) * -osirrox enables ISO-to-disk copying: Restore. (line 18)
* -out_charset sets output character set: SetWrite. (line 95) * -out_charset sets output character set: SetWrite. (line 114)
* -outdev aquires a drive for output: AqDrive. (line 29) * -outdev aquires a drive for output: AqDrive. (line 29)
* -overwrite enables overwriting in ISO: SetInsert. (line 127) * -overwrite enables overwriting in ISO: SetInsert. (line 127)
* -pacifier controls pacifier text form: Emulation. (line 92) * -pacifier controls pacifier text form: Emulation. (line 92)
* -padding sets amount of image padding: SetWrite. (line 178) * -padding sets amount of image padding: SetWrite. (line 197)
* -page set terminal geometry: DialogCtl. (line 15) * -page set terminal geometry: DialogCtl. (line 15)
* -paste_in copies file into disk file: Restore. (line 117) * -paste_in copies file into disk file: Restore. (line 117)
* -path_list inserts paths from disk file: Insert. (line 75) * -path_list inserts paths from disk file: Insert. (line 75)
@ -3687,17 +3706,17 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -setfattr_r sets xattr in ISO image: Manip. (line 123) * -setfattr_r sets xattr in ISO image: Manip. (line 123)
* -show_stream shows data source and filters: Navigate. (line 153) * -show_stream shows data source and filters: Navigate. (line 153)
* -show_stream_r shows data source and filters: Navigate. (line 168) * -show_stream_r shows data source and filters: Navigate. (line 168)
* -speed set write speed: SetWrite. (line 121) * -speed set write speed: SetWrite. (line 140)
* -split_size enables large file splitting: SetInsert. (line 140) * -split_size enables large file splitting: SetInsert. (line 140)
* -status shows current settings: Scripting. (line 25) * -status shows current settings: Scripting. (line 25)
* -status_history_max curbs -status history: Scripting. (line 34) * -status_history_max curbs -status history: Scripting. (line 34)
* -stdio_sync controls stdio buffer: SetWrite. (line 155) * -stdio_sync controls stdio buffer: SetWrite. (line 174)
* -stream_recording controls defect management: SetWrite. (line 136) * -stream_recording controls defect management: SetWrite. (line 155)
* -system_id sets system id: SetWrite. (line 88) * -system_id sets system id: SetWrite. (line 88)
* -tell_media_space reports free space: Inquiry. (line 74) * -tell_media_space reports free space: Inquiry. (line 74)
* -temp_mem_limit curbs memory consumption: Scripting. (line 70) * -temp_mem_limit curbs memory consumption: Scripting. (line 70)
* -toc shows list of sessions: Inquiry. (line 18) * -toc shows list of sessions: Inquiry. (line 18)
* -uid sets global ownership: SetWrite. (line 101) * -uid sets global ownership: SetWrite. (line 120)
* -update inserts path if different: Insert. (line 99) * -update inserts path if different: Insert. (line 99)
* -update_l inserts paths if different: Insert. (line 121) * -update_l inserts paths if different: Insert. (line 121)
* -update_r inserts paths if different: Insert. (line 110) * -update_r inserts paths if different: Insert. (line 110)
@ -3705,8 +3724,9 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -version prints help text: Scripting. (line 19) * -version prints help text: Scripting. (line 19)
* -volid sets volume id: SetWrite. (line 52) * -volid sets volume id: SetWrite. (line 52)
* -volset_id sets volume set id: SetWrite. (line 71) * -volset_id sets volume set id: SetWrite. (line 71)
* -volume_date sets volume timestamp: SetWrite. (line 95)
* -xattr controls handling of xattr (EA): Loading. (line 136) * -xattr controls handling of xattr (EA): Loading. (line 136)
* -zisofs controls zisofs production: SetWrite. (line 109) * -zisofs controls zisofs production: SetWrite. (line 128)
 
File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -3736,7 +3756,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Character Set, _definition: Charset. (line 6) * Character Set, _definition: Charset. (line 6)
* Character Set, for input, -in_charset: Loading. (line 73) * Character Set, for input, -in_charset: Loading. (line 73)
* Character Set, for input/output, -charset: Charset. (line 43) * Character Set, for input/output, -charset: Charset. (line 43)
* Character Set, for output, -out_charset: SetWrite. (line 95) * Character Set, for output, -out_charset: SetWrite. (line 114)
* Character set, learn from image, -auto_charset: Loading. (line 80) * Character set, learn from image, -auto_charset: Loading. (line 80)
* Character Set, of terminal, -local_charset: Charset. (line 47) * Character Set, of terminal, -local_charset: Charset. (line 47)
* Closed media, _definition: Media. (line 39) * Closed media, _definition: Media. (line 39)
@ -3779,8 +3799,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Filter, show chain, -show_stream: Navigate. (line 153) * Filter, show chain, -show_stream: Navigate. (line 153)
* Filter, show chains of tree, -show_stream_r: Navigate. (line 168) * Filter, show chains of tree, -show_stream_r: Navigate. (line 168)
* Filter, unregister, -unregister_filter: Filter. (line 48) * Filter, unregister, -unregister_filter: Filter. (line 48)
* Filter, zisofs parameters, -zisofs: SetWrite. (line 109) * Filter, zisofs parameters, -zisofs: SetWrite. (line 128)
* Group, global in ISO image, -gid: SetWrite. (line 105) * Group, global in ISO image, -gid: SetWrite. (line 124)
* Group, in ISO image, -chgrp: Manip. (line 50) * Group, in ISO image, -chgrp: Manip. (line 50)
* Group, in ISO image, -chgrp_r: Manip. (line 55) * Group, in ISO image, -chgrp_r: Manip. (line 55)
* Growing, _definition: Methods. (line 19) * Growing, _definition: Methods. (line 19)
@ -3793,6 +3813,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Image, set system id, -system_id: SetWrite. (line 88) * Image, set system id, -system_id: SetWrite. (line 88)
* Image, set volume id, -volid: SetWrite. (line 52) * Image, set volume id, -volid: SetWrite. (line 52)
* Image, set volume set id, -volset_id: SetWrite. (line 71) * Image, set volume set id, -volset_id: SetWrite. (line 71)
* Image, set volume timestamp, -volume_date: SetWrite. (line 95)
* Image, show id strings, -pvd_info: Inquiry. (line 78) * Image, show id strings, -pvd_info: Inquiry. (line 78)
* Insert, enable overwriting, -overwrite: SetInsert. (line 127) * Insert, enable overwriting, -overwrite: SetInsert. (line 127)
* Insert, file exclusion absolute, -not_paths: SetInsert. (line 55) * Insert, file exclusion absolute, -not_paths: SetInsert. (line 55)
@ -3844,7 +3865,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Navigate, tell ISO working directory, -pwd: Navigate. (line 20) * Navigate, tell ISO working directory, -pwd: Navigate. (line 20)
* Next writeable address, -grow_blindly: AqDrive. (line 44) * Next writeable address, -grow_blindly: AqDrive. (line 44)
* Overwriteable media, _definition: Media. (line 10) * Overwriteable media, _definition: Media. (line 10)
* Ownership, global in ISO image, -uid: SetWrite. (line 101) * Ownership, global in ISO image, -uid: SetWrite. (line 120)
* Ownership, in ISO image, -chown: Manip. (line 42) * Ownership, in ISO image, -chown: Manip. (line 42)
* Ownership, in ISO image, -chown_r: Manip. (line 47) * Ownership, in ISO image, -chown_r: Manip. (line 47)
* Pathspec, _definition: SetInsert. (line 120) * Pathspec, _definition: SetInsert. (line 120)
@ -3910,22 +3931,22 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Verify, file checksum, -check_md5: Verify. (line 144) * Verify, file checksum, -check_md5: Verify. (line 144)
* Verify, file tree checksums, -check_md5_r: Verify. (line 160) * Verify, file tree checksums, -check_md5_r: Verify. (line 160)
* Verify, preset -check_media, -check_media_defaults: Verify. (line 40) * Verify, preset -check_media, -check_media_defaults: Verify. (line 40)
* Write, block size, -dvd_obs: SetWrite. (line 148) * Write, block size, -dvd_obs: SetWrite. (line 167)
* Write, bootability, -boot_image: Bootable. (line 20) * Write, bootability, -boot_image: Bootable. (line 20)
* Write, buffer syncing, -stdio_sync: SetWrite. (line 155) * Write, buffer syncing, -stdio_sync: SetWrite. (line 174)
* Write, close media, -close: SetWrite. (line 172) * Write, close media, -close: SetWrite. (line 191)
* Write, compliance to specs, -compliance: SetWrite. (line 14) * Write, compliance to specs, -compliance: SetWrite. (line 14)
* Write, defect management, -stream_recording: SetWrite. (line 136) * Write, defect management, -stream_recording: SetWrite. (line 155)
* Write, enable Joliet, -joliet: SetWrite. (line 10) * Write, enable Joliet, -joliet: SetWrite. (line 10)
* Write, fifo size, -fs: SetWrite. (line 165) * Write, fifo size, -fs: SetWrite. (line 184)
* Write, free space, -tell_media_space: Inquiry. (line 74) * Write, free space, -tell_media_space: Inquiry. (line 74)
* Write, log problematic disk files, -errfile_log: Scripting. (line 84) * Write, log problematic disk files, -errfile_log: Scripting. (line 84)
* Write, log written sessions, -session_log: Scripting. (line 104) * Write, log written sessions, -session_log: Scripting. (line 104)
* Write, padding image, -padding: SetWrite. (line 178) * Write, padding image, -padding: SetWrite. (line 197)
* Write, pending ISO image, -commit: Writing. (line 13) * Write, pending ISO image, -commit: Writing. (line 13)
* Write, predict image size, -print_size: Inquiry. (line 69) * Write, predict image size, -print_size: Inquiry. (line 69)
* Write, set speed, -speed: SetWrite. (line 121) * Write, set speed, -speed: SetWrite. (line 140)
* Write, simulation, -dummy: SetWrite. (line 161) * Write, simulation, -dummy: SetWrite. (line 180)
* xattr, _definiton: Extras. (line 46) * xattr, _definiton: Extras. (line 46)
* xattr, control handling, -xattr: Loading. (line 136) * xattr, control handling, -xattr: Loading. (line 136)
* xattr, set in ISO image, -setfattr: Manip. (line 110) * xattr, set in ISO image, -setfattr: Manip. (line 110)
@ -3937,57 +3958,57 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
 
Tag Table: Tag Table:
Node: Top436 Node: Top420
Node: Overview1340 Node: Overview1324
Node: Model3217 Node: Model3201
Node: Media6097 Node: Media6081
Node: Methods8527 Node: Methods8511
Node: Drives11074 Node: Drives11058
Node: Extras14340 Node: Extras14324
Node: Processing17471 Node: Processing17455
Node: Dialog20967 Node: Dialog20951
Node: Options22624 Node: Options22608
Node: AqDrive24192 Node: AqDrive24176
Node: Loading27098 Node: Loading27082
Node: Insert39533 Node: Insert39517
Node: SetInsert47890 Node: SetInsert47874
Node: Manip56457 Node: Manip56441
Node: CmdFind64333 Node: CmdFind64317
Node: Filter72891 Node: Filter72875
Node: Writing77240 Node: Writing77224
Node: SetWrite83529 Node: SetWrite83513
Node: Bootable92406 Node: Bootable93406
Node: Charset97533 Node: Charset98533
Node: Exception100287 Node: Exception101287
Node: DialogCtl104802 Node: DialogCtl105802
Node: Inquiry107147 Node: Inquiry108147
Node: Navigate111287 Node: Navigate112287
Node: Verify118641 Node: Verify119641
Node: Restore127061 Node: Restore128061
Node: Emulation133717 Node: Emulation134717
Node: Scripting139743 Node: Scripting140743
Node: Frontend145305 Node: Frontend146305
Node: Examples146506 Node: Examples147506
Node: ExDevices147675 Node: ExDevices148675
Node: ExCreate148157 Node: ExCreate149157
Node: ExDialog149431 Node: ExDialog150431
Node: ExGrowing150693 Node: ExGrowing151693
Node: ExModifying151495 Node: ExModifying152495
Node: ExBootable151996 Node: ExBootable152996
Node: ExCharset152543 Node: ExCharset153543
Node: ExPseudo153371 Node: ExPseudo154371
Node: ExCdrecord154265 Node: ExCdrecord155265
Node: ExMkisofs154580 Node: ExMkisofs155580
Node: ExGrowisofs155583 Node: ExGrowisofs156583
Node: ExException156707 Node: ExException157707
Node: ExTime157161 Node: ExTime158161
Node: ExIncBackup157620 Node: ExIncBackup158620
Node: ExRestore161092 Node: ExRestore162092
Node: ExRecovery162061 Node: ExRecovery163061
Node: Files162626 Node: Files163626
Node: Seealso163213 Node: Seealso164213
Node: Legal163737 Node: Legal164737
Node: CommandIdx164659 Node: CommandIdx165659
Node: ConceptIdx177887 Node: ConceptIdx178960
 
End Tag Table End Tag Table

View File

@ -44,7 +44,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1) @c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISO 1 "Apr 06, 2010" @c man .TH XORRISO 1 "Apr 07, 2010"
@c man .\" Please adjust this date whenever revising the manpage. @c man .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @c man .\" Some roff macros, for reference:
@ -2408,6 +2408,36 @@ System Area in image blocks 0 to 15.
Permissible are up to 32 characters. This setting gets overridden by Permissible are up to 32 characters. This setting gets overridden by
image loading. image loading.
@c man .TP @c man .TP
@item -volume_date type timestring
@kindex -volume_date sets volume timestamp
@cindex Image, set volume timestamp, -volume_date
Set one of the four overall timestamps for subsequent image writing.
Available types are:
@*
"c" time when the volume was created.
@*
"m" time when volume was last modified.
@*
"x" time when the information in the volume expires.
@*
"f" time since when the volume is effectively valid.
@*
"uuid" sets a timestring that overrides "m" time literally.
@*
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999.
It is supposed to match this GRUB line:
@*
search --fs-uuid --set YYYY-MM-DD-hh-mm-ss-cc
@*
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
@*
Timestrings for the other types may be given as with option -alter_date.
They are prone to timezone computations. The timestrings "default" or
"overridden" cause default settings: "c" and "m" will show the current time
of image creation. "x" and "f" will be marked as insignificant.
"uuid" will be deactivated.
@c man .TP
@item -out_charset character_set_name @item -out_charset character_set_name
@kindex -out_charset sets output character set @kindex -out_charset sets output character set
@cindex Character Set, for output, -out_charset @cindex Character Set, for output, -out_charset

View File

@ -274,6 +274,15 @@ struct XorrisO { /* the global context of xorriso */
(a simple partition table) (a simple partition table)
*/ */
/* User settable PVD time stamps */
time_t vol_creation_time;
time_t vol_modification_time;
time_t vol_expiration_time;
time_t vol_effective_time;
/* To eventually override vol_modification_time by unconverted string
and timezone 0 */
char vol_uuid[17];
/* LBA of boot image after image loading */ /* LBA of boot image after image loading */
int loaded_boot_bin_lba; int loaded_boot_bin_lba;
/* Path of the catalog node after image loading */ /* Path of the catalog node after image loading */

View File

@ -1 +1 @@
#define Xorriso_timestamP "2010.04.07.202148" #define Xorriso_timestamP "2010.04.07.202559"

View File

@ -2013,6 +2013,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
} }
iso_image_set_data_preparer_id(image, xorriso_id); iso_image_set_data_preparer_id(image, xorriso_id);
} }
isoburn_igopt_set_pvd_times(sopts,
xorriso->vol_creation_time, xorriso->vol_modification_time,
xorriso->vol_expiration_time, xorriso->vol_effective_time,
xorriso->vol_uuid);
/* Make final abort check before starting expensive activities */ /* Make final abort check before starting expensive activities */
ret= Xorriso_eval_problem_status(xorriso, 1, 0); ret= Xorriso_eval_problem_status(xorriso, 1, 0);