New options -system_id , -volset_id

This commit is contained in:
Thomas Schmitt 2009-10-07 18:04:53 +00:00
parent 82978a1f09
commit 6dceaa1a1e
6 changed files with 135 additions and 30 deletions

View File

@ -1902,6 +1902,11 @@ Consider this when setting -volid "ISOIMAGE" before executing -dev, -indev,
or -rollback. or -rollback.
If you insist in -volid "ISOIMAGE", set it again after those commands. If you insist in -volid "ISOIMAGE", set it again after those commands.
.TP .TP
\fB\-volset_id\fR text
Set the volume set id string to be written with the next -commit.
Permissible are up to 128 characters. This setting gets overridden by
image loading.
.TP
\fB\-publisher\fR text \fB\-publisher\fR text
Set the publisher id string to be written with the next -commit. This may Set the publisher id string to be written with the next -commit. This may
identify the person or organisation who specified what shall be recorded. identify the person or organisation who specified what shall be recorded.
@ -1914,6 +1919,13 @@ identify the specification of how the data are recorded.
Permissible are up to 128 characters. This setting gets overridden by Permissible are up to 128 characters. This setting gets overridden by
image loading. image loading.
.TP .TP
\fB\-system_id\fR text
Set the system id string to be written with the next -commit. This may
identify the system which can recognize and act upon the content of the
System Area in image blocks 0 to 15.
Permissible are up to 32 characters. This setting gets overridden by
image loading.
.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

@ -4768,6 +4768,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->assert_volid_sev[0]= 0; m->assert_volid_sev[0]= 0;
m->publisher[0]= 0; m->publisher[0]= 0;
m->application_id[0]= 0; m->application_id[0]= 0;
m->system_id[0]= 0;
m->volset_id[0]= 0;
m->session_logfile[0]= 0; m->session_logfile[0]= 0;
m->session_lba= -1; m->session_lba= -1;
m->session_blocks= 0; m->session_blocks= 0;
@ -6983,6 +6985,16 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
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->system_id[0]==0);
sprintf(line,"-system_id %s\n", Text_shellsafe(xorriso->system_id,sfe,0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->volset_id[0]==0);
sprintf(line,"-volset_id %s\n", Text_shellsafe(xorriso->volset_id,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))
@ -10863,8 +10875,8 @@ int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
"" ""
}; };
static char ignored_arg1_options[][41]= { static char ignored_arg1_options[][41]= {
"-A", "-biblio", "-check-session", "-p", "-root", "-biblio", "-check-session", "-p", "-root",
"-old-root", "-sysid", "-table-name", "-old-root", "-table-name", "-volset-seqno", "-volset-size",
"" ""
}; };
int k, idx_offset= 0; int k, idx_offset= 0;
@ -10923,6 +10935,10 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag)
" --scdbackup_tag PATH NAME With --md5 record a scdbackup checksum tag", " --scdbackup_tag PATH NAME With --md5 record a scdbackup checksum tag",
" --for_backup Use all options which improve backup fidelity", " --for_backup Use all options which improve backup fidelity",
" -V ID, -volid ID Set Volume ID", " -V ID, -volid ID Set Volume ID",
" -volset ID Set Volume set ID",
" -publisher PUB Set Volume publisher",
" -A ID, -appid ID Set Application ID",
" -sysid ID Set System ID",
" -b FILE, -eltorito-boot FILE", " -b FILE, -eltorito-boot FILE",
" Set El Torito boot image name", " Set El Torito boot image name",
" -c FILE, -eltorito-catalog FILE", " -c FILE, -eltorito-catalog FILE",
@ -11262,6 +11278,13 @@ not_enough_args:;
ret= Xorriso_option_volid(xorriso, argv[i], 0); ret= Xorriso_option_volid(xorriso, argv[i], 0);
if(ret<=0) if(ret<=0)
goto problem_handler_2; goto problem_handler_2;
} else if(strcmp(argv[i], "-volset")==0) {
if(i+1>=argc)
goto not_enough_args;
i++;
ret= Xorriso_option_volid(xorriso, argv[i], 0);
if(ret<=0)
goto problem_handler_2;
} else if(strcmp(argv[i], "-P")==0 || strcmp(argv[i], "-publisher")==0) { } else if(strcmp(argv[i], "-P")==0 || strcmp(argv[i], "-publisher")==0) {
if(i+1>=argc) if(i+1>=argc)
goto not_enough_args; goto not_enough_args;
@ -11269,6 +11292,20 @@ not_enough_args:;
ret= Xorriso_option_publisher(xorriso, argv[i], 0); ret= Xorriso_option_publisher(xorriso, argv[i], 0);
if(ret<=0) if(ret<=0)
goto problem_handler_2; goto problem_handler_2;
} else if(strcmp(argv[i], "-A")==0 || strcmp(argv[i], "-appid")==0) {
if(i+1>=argc)
goto not_enough_args;
i++;
ret= Xorriso_option_application_id(xorriso, argv[i], 0);
if(ret<=0)
goto problem_handler_2;
} else if(strcmp(argv[i], "-sysid")==0) {
if(i+1>=argc)
goto not_enough_args;
i++;
ret= Xorriso_option_system_id(xorriso, argv[i], 0);
if(ret<=0)
goto problem_handler_2;
} else if(strcmp(argv[i], "-m")==0 || strcmp(argv[i], "-exclude")==0 || } else if(strcmp(argv[i], "-m")==0 || strcmp(argv[i], "-exclude")==0 ||
strcmp(argv[i], "-x")==0 || strcmp(argv[i], "-old-exclude")==0) { strcmp(argv[i], "-x")==0 || strcmp(argv[i], "-old-exclude")==0) {
if(i+1>=argc) if(i+1>=argc)
@ -12887,6 +12924,20 @@ int Xorriso_may_burn(struct XorrisO *xorriso, int flag)
} }
int Xorriso_check_name_len(struct XorrisO *xorriso, char *name, int size,
char *cmd, int flag)
{
if(strlen(name) >= size) {
sprintf(xorriso->info_text,
"Name too long with option %s (%d > %d)", cmd,
(int) strlen(name), size - 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
return(1);
}
/* ---------------------------- Options API ------------------------ */ /* ---------------------------- Options API ------------------------ */
@ -13102,15 +13153,11 @@ ex:;
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name, int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag) int flag)
{ {
if(strlen(name)>=sizeof(xorriso->application_id)) { if(Xorriso_check_name_len(xorriso, name,
sprintf(xorriso->info_text, (int) sizeof(xorriso->application_id),
"Name too long with option -application_id (%d > %d)", "-application_id", 0) <= 0)
(int) strlen(name), (int) sizeof(xorriso->application_id)-1); return(0);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); strcpy(xorriso->application_id,name);
return(0);
}
if(Sfile_str(xorriso->application_id,name,0)<=0)
return(-1);
return(1); return(1);
} }
@ -15872,10 +15919,14 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Format BD-RE, BD-R, DVD-RAM, DVD-RW, DVD+RW.", " Format BD-RE, BD-R, DVD-RAM, DVD-RW, DVD+RW.",
" -volid volume_id", " -volid volume_id",
" Specifies the volume ID text. (32 chars out of [A-Z0-9_])", " Specifies the volume ID text. (32 chars out of [A-Z0-9_])",
" -volset_id name",
" Specifies the volume set id. (128 chars)",
" -publisher name", " -publisher name",
" Specifies the publisher name. (128 chars)", " Specifies the publisher name. (128 chars)",
" -application_id name", " -application_id name",
" Specifies the application id. (128 chars)", " Specifies the application id. (128 chars)",
" -system_id name",
" Specifies the system id for the System Area. (32 chars)",
" -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...]",
@ -17761,15 +17812,10 @@ int Xorriso_option_prompt(struct XorrisO *xorriso, char *text, int flag)
/* Option -publisher */ /* Option -publisher */
int Xorriso_option_publisher(struct XorrisO *xorriso, char *name, int flag) int Xorriso_option_publisher(struct XorrisO *xorriso, char *name, int flag)
{ {
if(strlen(name)>=sizeof(xorriso->publisher)) { if(Xorriso_check_name_len(xorriso, name, (int) sizeof(xorriso->publisher),
sprintf(xorriso->info_text, "-publisher", 0) <= 0)
"Name too long with option -publisher (%d > %d)", return(0);
(int) strlen(name), (int) sizeof(xorriso->publisher)-1); strcpy(xorriso->publisher,name);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
if(Sfile_str(xorriso->publisher,name,0)<=0)
return(-1);
return(1); return(1);
} }
@ -18644,6 +18690,17 @@ int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
} }
/* Option -system_id */
int Xorriso_option_system_id(struct XorrisO *xorriso, char *name, int flag)
{
if(Xorriso_check_name_len(xorriso, name, (int) sizeof(xorriso->system_id),
"-system_id", 0) <= 0)
return(0);
strcpy(xorriso->system_id, name);
return(1);
}
/* Option -tell_media_space */ /* Option -tell_media_space */
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag) int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag)
{ {
@ -18981,6 +19038,17 @@ int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag)
} }
/* Option -volset_id */
int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, int flag)
{
if(Xorriso_check_name_len(xorriso, name, (int) sizeof(xorriso->volset_id),
"-volset_id", 0) <= 0)
return(0);
strcpy(xorriso->volset_id, name);
return(1);
}
/* 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)
{ {
@ -19147,8 +19215,9 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"prog","prog_help","publisher","quoted_not_list","quoted_path_list", "prog","prog_help","publisher","quoted_not_list","quoted_path_list",
"reassure","report_about","rom_toc_scan", "reassure","report_about","rom_toc_scan",
"session_log","speed","split_size","status","status_history_max", "session_log","speed","split_size","status","status_history_max",
"stream_recording","temp_mem_limit", "stream_recording","system_id","temp_mem_limit",
"uid","unregister_filter","use_readline","volid","xattr","zisofs", "uid","unregister_filter","use_readline","volid","volset_id",
"xattr","zisofs",
"" ""
}; };
static char arg2_commands[][40]= { static char arg2_commands[][40]= {
@ -19915,6 +19984,10 @@ next_command:;
(*idx)++; (*idx)++;
ret= Xorriso_option_stream_recording(xorriso, arg1, 0); ret= Xorriso_option_stream_recording(xorriso, arg1, 0);
} else if(strcmp(cmd,"system_id")==0) {
(*idx)++;
ret= Xorriso_option_system_id(xorriso, arg1, 0);
} else if(strcmp(cmd,"tell_media_space")==0) { } else if(strcmp(cmd,"tell_media_space")==0) {
Xorriso_option_tell_media_space(xorriso, 0); Xorriso_option_tell_media_space(xorriso, 0);
@ -19955,6 +20028,10 @@ next_command:;
} else if(strcmp(cmd,"version")==0){ } else if(strcmp(cmd,"version")==0){
ret= Xorriso_option_version(xorriso, 0); ret= Xorriso_option_version(xorriso, 0);
} else if(strcmp(cmd,"volset_id")==0) {
(*idx)++;
ret= Xorriso_option_volset_id(xorriso, arg1, 0);
} else if(strcmp(cmd,"volid")==0) { } else if(strcmp(cmd,"volid")==0) {
(*idx)++; (*idx)++;
ret= Xorriso_option_volid(xorriso,arg1,0); ret= Xorriso_option_volid(xorriso,arg1,0);

View File

@ -927,6 +927,9 @@ int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num1,
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode, int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
int flag); int flag);
/* Option -system_id */
int Xorriso_option_system_id(struct XorrisO *xorriso, char *name, int flag);
/* Option -tell_media_space */ /* Option -tell_media_space */
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag); int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);
@ -962,6 +965,9 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag);
/* Option -volid */ /* Option -volid */
int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag); int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
/* Option -volset_id */
int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, 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

@ -170,6 +170,8 @@ struct XorrisO { /* the global context of xorriso */
char publisher[129]; char publisher[129];
char application_id[129]; char application_id[129];
char system_id[33];
char volset_id[129];
char session_logfile[SfileadrL]; char session_logfile[SfileadrL];
int session_lba; int session_lba;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.10.07.140521" #define Xorriso_timestamP "2009.10.07.180552"

View File

@ -1229,11 +1229,17 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
xorriso->in_volset_handle= (void *) volset; xorriso->in_volset_handle= (void *) volset;
xorriso->in_sector_map= NULL; xorriso->in_sector_map= NULL;
Xorriso_set_image_severities(xorriso, 0); Xorriso_set_image_severities(xorriso, 0);
Xorriso_update_volid(xorriso, 0); Xorriso_update_volid(xorriso, 0);
Sfile_str(xorriso->application_id, strncpy(xorriso->application_id,
(char *) un0(iso_image_get_application_id(volset)), 0); un0(iso_image_get_application_id(volset)), 128);
Sfile_str(xorriso->publisher, xorriso->application_id[128]= 0;
(char *) un0(iso_image_get_publisher_id(volset)), 0); strncpy(xorriso->publisher, un0(iso_image_get_publisher_id(volset)), 128);
xorriso->publisher[128]= 0;
strncpy(xorriso->system_id, un0(iso_image_get_system_id(volset)), 32);
xorriso->system_id[32]= 0;
strncpy(xorriso->volset_id, un0(iso_image_get_volset_id(volset)), 128);
xorriso->volset_id[128]= 0;
/* <<< can be removed as soon as libisofs-0.6.24 is mandatory /* <<< can be removed as soon as libisofs-0.6.24 is mandatory
*/ */
@ -1722,6 +1728,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
if(image != NULL) { if(image != NULL) {
iso_image_set_application_id(image, xorriso->application_id); iso_image_set_application_id(image, xorriso->application_id);
iso_image_set_publisher_id(image, xorriso->publisher); iso_image_set_publisher_id(image, xorriso->publisher);
iso_image_set_system_id(image, xorriso->system_id);
iso_image_set_volset_id(image, xorriso->volset_id);
} }
if((xorriso->do_aaip & 256) && out_cs != NULL) { if((xorriso->do_aaip & 256) && out_cs != NULL) {
@ -12926,11 +12934,9 @@ int Xorriso_pvd_info(struct XorrisO *xorriso, int flag)
} }
} }
} }
sprintf(msg, "System Id : %s\n", un0(iso_image_get_system_id(image)));
Xorriso_result(xorriso,0);
sprintf(msg, "Volume Id : %s\n", un0(iso_image_get_volume_id(image))); sprintf(msg, "Volume Id : %s\n", un0(iso_image_get_volume_id(image)));
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);
sprintf(msg, "Volume Set Id: %s\n", un0(iso_image_get_volset_id(image))); sprintf(msg, "Volume Set Id: %s\n", xorriso->volset_id);
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);
sprintf(msg, "Publisher Id : %s\n", xorriso->publisher); sprintf(msg, "Publisher Id : %s\n", xorriso->publisher);
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);
@ -12939,6 +12945,8 @@ int Xorriso_pvd_info(struct XorrisO *xorriso, int flag)
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);
sprintf(msg, "App Id : %s\n", xorriso->application_id); sprintf(msg, "App Id : %s\n", xorriso->application_id);
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);
sprintf(msg, "System Id : %s\n", xorriso->system_id);
Xorriso_result(xorriso,0);
sprintf(msg, "Copyright Id : %s\n", sprintf(msg, "Copyright Id : %s\n",
un0(iso_image_get_copyright_file_id(image))); un0(iso_image_get_copyright_file_id(image)));
Xorriso_result(xorriso,0); Xorriso_result(xorriso,0);