New option -application_id

This commit is contained in:
Thomas Schmitt 2008-11-04 16:22:51 +00:00
parent 7b840adb90
commit 403bb74b9c
7 changed files with 123 additions and 13 deletions

View File

@ -1353,6 +1353,10 @@ If you insist in -volid "ISOIMAGE", set it again after those commands.
Set the publisher string to be written with the next -commit. Permissible Set the publisher string to be written with the next -commit. Permissible
are up to 128 characters. are up to 128 characters.
.TP .TP
\fB\-application_id\fR text
Set the application id string to be written with the next -commit. Permissible
are up to 128 characters.
.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

@ -3647,6 +3647,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
m->loaded_volid[0]= 0; m->loaded_volid[0]= 0;
m->volid_default= 1; m->volid_default= 1;
m->publisher[0]= 0; m->publisher[0]= 0;
m->application_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;
@ -5350,7 +5351,7 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
-options_from_file:${resume_state_file}_pos -options_from_file:${resume_state_file}_pos
*/ */
{ {
int is_default, no_defaults, i, ret, adr_mode, bin_path_in_use= 0; int is_default, no_defaults, i, ret, adr_mode, bin_path_in_use= 0, do_single;
char *line, sfe[5 * SfileadrL + 80], mode[80], *form, *treatment; char *line, sfe[5 * SfileadrL + 80], mode[80], *form, *treatment;
char *in_pt, *out_pt; char *in_pt, *out_pt;
static char channel_prefixes[4][4]= {".","R","I","M"}; static char channel_prefixes[4][4]= {".","R","I","M"};
@ -5662,6 +5663,12 @@ 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->application_id[0]==0);
sprintf(line,"-application_id %s\n",
Text_shellsafe(xorriso->application_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))
@ -5844,21 +5851,30 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
out_pt= ""; out_pt= "";
if(xorriso->out_charset != NULL) if(xorriso->out_charset != NULL)
out_pt= xorriso->out_charset; out_pt= xorriso->out_charset;
if(strcmp(in_pt, out_pt) == 0 && do_single= 0;
strncmp(filter, "-in_charset", 11) != 0 && if(filter != NULL)
strncmp(filter, "-out_charset", 12) != 0) { if(strncmp(filter, "-in_charset", 11) == 0 ||
strncmp(filter, "-out_charset", 12) == 0)
do_single= 1;
if(strcmp(in_pt, out_pt) == 0 && !do_single) {
sprintf(line, "-charset %s\n", Text_shellsafe(in_pt, sfe, 0)); sprintf(line, "-charset %s\n", Text_shellsafe(in_pt, sfe, 0));
Xorriso_status_result(xorriso, filter, fp, flag & 2); if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);
} else { } else {
sprintf(line, "-in_charset %s\n", Text_shellsafe(in_pt, sfe, 0)); sprintf(line, "-in_charset %s\n", Text_shellsafe(in_pt, sfe, 0));
Xorriso_status_result(xorriso, filter, fp, flag & 2); if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);
sprintf(line, "-out_charset %s\n", Text_shellsafe(out_pt, sfe, 0)); sprintf(line, "-out_charset %s\n", Text_shellsafe(out_pt, sfe, 0));
Xorriso_status_result(xorriso, filter, fp, flag & 2); if(!(is_default && no_defaults))
Xorriso_status_result(xorriso, filter, fp, flag & 2);
} }
if(strcmp(xorriso->indev, xorriso->outdev) == 0 && do_single= 0;
strncmp(filter, "-indev", 6) != 0 && if(filter != NULL)
strncmp(filter, "-outdev", 7) != 0) { if(strncmp(filter, "-indev", 6) == 0 ||
strncmp(filter, "-outdev", 7) == 0)
do_single= 1;
if(strcmp(xorriso->indev, xorriso->outdev) == 0 && !do_single) {
sprintf(line,"-dev %s\n", Text_shellsafe(xorriso->indev,sfe,0)); sprintf(line,"-dev %s\n", Text_shellsafe(xorriso->indev,sfe,0));
Xorriso_status_result(xorriso,filter,fp,flag&2); Xorriso_status_result(xorriso,filter,fp,flag&2);
} else { } else {
@ -10342,6 +10358,28 @@ ex:;
} }
/* Option -application_id */
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag)
{
if(strlen(name)>=sizeof(xorriso->application_id)) {
sprintf(xorriso->info_text,
"Name too long with option -application_id (%d > %d)",
(int) strlen(name), (int) sizeof(xorriso->application_id)-1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
#ifdef NIX
Xorriso_set_application_id(xorriso, name, 0);
#endif
if(Sfile_str(xorriso->application_id,name,0)<=0)
return(-1);
return(1);
}
/* Option -as */ /* Option -as */
/* @param flag bit0=do not report the added item /* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message bit1=do not reset pacifier, no final pacifier message
@ -12373,6 +12411,12 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" -rom_toc_scan \"on\"|\"off\"[:\"emul_on\"|\"emul_off\"]", " -rom_toc_scan \"on\"|\"off\"[:\"emul_on\"|\"emul_off\"]",
" Enable scanning for ISO sessions on read-only drives/media", " Enable scanning for ISO sessions on read-only drives/media",
" resp. on overwriteable media with emulated TOC.", " resp. on overwriteable media with emulated TOC.",
" -charset name Set the character set name to be use for file name",
" conversion from and to media.",
" -in_charset name",
" Like -charset but only for conversion from media.",
" -out_charset name",
" Like -charset but only for conversion to media.",
" -ban_stdio_write", " -ban_stdio_write",
" Allow for writing only the usage of optical drives.", " Allow for writing only the usage of optical drives.",
" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"", " -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
@ -12383,6 +12427,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Specifies the volume ID text. (32 chars out of [A-Z0-9_])", " Specifies the volume ID text. (32 chars out of [A-Z0-9_])",
" -publisher name", " -publisher name",
" Specifies the publisher name. (128 chars)", " Specifies the publisher name. (128 chars)",
" -application_id name",
" Specifies the application id. (128 chars)",
" -joliet \"on\"|\"off\"", " -joliet \"on\"|\"off\"",
" Generate Joliet info additional to Rock Ridge info.", " Generate Joliet info additional to Rock Ridge info.",
" -boot_image \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"|\"dir=\"", " -boot_image \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"|\"dir=\"",
@ -14037,7 +14083,9 @@ 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)
{ {
#ifdef NIX
int ret; int ret;
#endif
if(strlen(name)>=sizeof(xorriso->publisher)) { if(strlen(name)>=sizeof(xorriso->publisher)) {
sprintf(xorriso->info_text, sprintf(xorriso->info_text,
@ -14046,9 +14094,13 @@ int Xorriso_option_publisher(struct XorrisO *xorriso, char *name, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0); return(0);
} }
#ifdef NIX
ret= Xorriso_set_publisher(xorriso, name, 0); ret= Xorriso_set_publisher(xorriso, name, 0);
if(ret<=0) if(ret<=0)
return(ret); return(ret);
#endif /* NIX */
if(Sfile_str(xorriso->publisher,name,0)<=0) if(Sfile_str(xorriso->publisher,name,0)<=0)
return(-1); return(-1);
return(1); return(1);
@ -14759,7 +14811,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"" ""
}; };
static char arg1_commands[][40]= { static char arg1_commands[][40]= {
"abort_on","add_plainly","backslash_codes","blank", "abort_on","add_plainly","application_id","backslash_codes","blank",
"cd","cdi","cdx","charset","close","commit_eject", "cd","cdi","cdx","charset","close","commit_eject",
"dev", "dummy","dialog","disk_pattern","eject","iso_rr_pattern","follow", "dev", "dummy","dialog","disk_pattern","eject","iso_rr_pattern","follow",
"format","fs","gid","grow_blindly", "format","fs","gid","grow_blindly",
@ -14931,6 +14983,10 @@ next_command:;
ret= Xorriso_option_alter_date(xorriso, arg1, arg2, argc, argv, idx, ret= Xorriso_option_alter_date(xorriso, arg1, arg2, argc, argv, idx,
strlen(cmd)>10); strlen(cmd)>10);
} else if(strcmp(cmd,"application_id")==0) {
(*idx)++;
ret= Xorriso_option_application_id(xorriso, arg1, 0);
} else if(strcmp(cmd,"as")==0) { } else if(strcmp(cmd,"as")==0) {
ret= Xorriso_option_as(xorriso, argc, argv, idx, 0); ret= Xorriso_option_as(xorriso, argc, argv, idx, 0);

View File

@ -282,6 +282,10 @@ int Xorriso_option_alter_date(struct XorrisO *xorriso,
char *time_type, char *timestring, char *time_type, char *timestring,
int argc, char **argv, int *idx, int flag); int argc, char **argv, int *idx, int flag);
/* Option -application_id */
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag);
/* Option -as */ /* Option -as */
/* @param flag bit0=do not report the added item /* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message bit1=do not reset pacifier, no final pacifier message
@ -312,6 +316,12 @@ int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag);
/* Option -cdx */ /* Option -cdx */
int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag); int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag);
/* Option -charset */
/* @param flag bit0= set in_charset
bit1= set out_charset
*/
int Xorriso_option_charset(struct XorrisO *xorriso, char *name, int flag);
/* Option -check_media */ /* Option -check_media */
int Xorriso_option_check_media(struct XorrisO *xorriso, int Xorriso_option_check_media(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag); int argc, char **argv, int *idx, int flag);

View File

@ -125,6 +125,7 @@ struct XorrisO { /* the global context of xorriso */
char loaded_volid[33]; char loaded_volid[33];
char publisher[129]; char publisher[129];
char application_id[129];
char session_logfile[SfileadrL]; char session_logfile[SfileadrL];
int session_lba; int session_lba;

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.11.03.115721" #define Xorriso_timestamP "2008.11.04.162214"

View File

@ -1091,8 +1091,13 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
relax= isoburn_igopt_allow_deep_paths; relax= isoburn_igopt_allow_deep_paths;
xorriso->alignment= 0; xorriso->alignment= 0;
/* Activate, adjust or discard boot image */
image= isoburn_get_attached_image(source_drive); image= isoburn_get_attached_image(source_drive);
if(image != NULL) {
iso_image_set_application_id(image, xorriso->application_id);
iso_image_set_publisher_id(image, xorriso->publisher);
}
/* Activate, adjust or discard boot image */
/* >>> ??? move down to libisoburn ? */ /* >>> ??? move down to libisoburn ? */
if(image!=NULL && !(flag&1)) { if(image!=NULL && !(flag&1)) {
ret= iso_image_get_boot_image(image, &bootimg, NULL, NULL); ret= iso_image_get_boot_image(image, &bootimg, NULL, NULL);
@ -6645,6 +6650,8 @@ int Xorriso_get_volid(struct XorrisO *xorriso, char volid[33], int flag)
} }
#ifdef NIX
/* @param flag bit0= do not mark image as changed */ /* @param flag bit0= do not mark image as changed */
int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag) int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag)
{ {
@ -6657,6 +6664,7 @@ int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag)
if(ret<=0) if(ret<=0)
return(ret); return(ret);
iso_image_set_publisher_id(volume, name); iso_image_set_publisher_id(volume, name);
if(!(flag&1)) if(!(flag&1))
xorriso->volset_change_pending= 1; xorriso->volset_change_pending= 1;
Xorriso_process_msg_queues(xorriso,0); Xorriso_process_msg_queues(xorriso,0);
@ -6667,6 +6675,31 @@ int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag)
} }
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_application_id(struct XorrisO *xorriso, char *name, int flag)
{
int ret;
IsoImage *volume;
if(xorriso->in_volset_handle == NULL)
return(2);
ret= Xorriso_get_volume(xorriso, &volume, 0);
if(ret<=0)
return(ret);
iso_image_set_application_id(volume, name);
if(!(flag&1))
xorriso->volset_change_pending= 1;
Xorriso_process_msg_queues(xorriso,0);
sprintf(xorriso->info_text,"Application id: '%s'",
iso_image_get_application_id(volume));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
return(1);
}
#endif /* NIX */
/* @param flag bit0=prepare for a burn run */ /* @param flag bit0=prepare for a burn run */
int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag) int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag)
{ {

View File

@ -207,9 +207,15 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number, int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
char profile_name[80], int flag); char profile_name[80], int flag);
#ifdef NIX
/* @param flag bit0= do not mark image as changed */ /* @param flag bit0= do not mark image as changed */
int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag); int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag);
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_application_id(struct XorrisO *xorriso, char *name, int flag);
#endif /* NIX */
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname /* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
*/ */