Changed option -J to -joliet "on"|"off", implemented option -volid

This commit is contained in:
2007-12-26 16:01:59 +00:00
parent 4f759abb80
commit ecdf3ca83d
7 changed files with 93 additions and 49 deletions

View File

@ -3731,14 +3731,14 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->volid[0]==0);
sprintf(line,"-V %s\n",Text_shellsafe(xorriso->volid,sfe,0));
sprintf(line,"-volid %s\n",Text_shellsafe(xorriso->volid,sfe,0));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
if(xorriso->do_joliet) {
sprintf(line,"-J\n");
is_default= (xorriso->do_joliet==0);
sprintf(line,"-joliet %s\n", (xorriso->do_joliet == 1 ? "on" : "off"));
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
}
if(xorriso->do_global_uid) {
sprintf(line,"-uid %lu\n", (unsigned long) xorriso->global_uid);
@ -5417,7 +5417,7 @@ ex:;
/* @param flag bit0= a non-existing target of multiple sources is a directory
bit1= these are disk_paths
bit1= all paths except the last one are disk_paths
@return <=0 iis error, 1= leaf file object, 2= directory
*/
int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
@ -5425,8 +5425,8 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
int *optc, char ***optv, char eff_dest[SfileadrL],
int flag)
{
int destc= 0, is_dir=0, end_idx, nflag, ret;
char **destv= NULL, *wd;
int destc= 0, is_dir=0, end_idx, ret;
char **destv= NULL;
char sfe[5*SfileadrL];
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx,
@ -5438,7 +5438,7 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
}
ret= Xorriso_opt_args(xorriso, argc, argv, *idx, &end_idx, optc, optv,
16); /* ignore last argument */
(flag&2)|16); /* ignore last argument */
if(ret<=0)
goto ex;
ret= Xorriso_opt_args(xorriso, argc, argv, end_idx, &end_idx, &destc, &destv,
@ -5447,14 +5447,7 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
goto ex;
/* Evaluate target address */
if(flag&2) {
wd= xorriso->wdx;
nflag= 1|2|4;
} else {
wd= xorriso->wdi;
nflag= 1;
}
ret= Xorriso_normalize_img_path(xorriso, wd, destv[0], eff_dest, nflag);
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, destv[0], eff_dest, 1);
if(ret<0)
{ret= 0; goto ex;}
if(ret==2 || ((flag&1) && *optc > 1 && ret==0)) {
@ -6068,7 +6061,7 @@ int Xorriso_option_cpri(struct XorrisO *xorriso, int argc, char **argv,
char **optv= NULL;
ret= Xorriso_cpmv_args(xorriso, "-cpri", argc, argv, idx,
&optc, &optv, eff_dest, 1);
&optc, &optv, eff_dest, 1|2);
if(ret<=0)
goto ex;
if(ret==2) {
@ -6759,10 +6752,18 @@ int Xorriso_option_history(struct XorrisO *xorriso, char *line, int flag)
}
/* Option -J */
int Xorriso_option_j_capital(struct XorrisO *xorriso, int flag)
/* Option -joliet "on"|"off" */
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag)
{
xorriso->do_joliet= 1;
if(strcmp(mode, "off")==0)
xorriso->do_joliet= 0;
else if(strcmp(mode, "on")==0)
xorriso->do_joliet= 1;
else {
sprintf(xorriso->info_text, "-joliet: unknown mode '%s'", mode);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
return(1);
}
@ -7646,14 +7647,6 @@ int Xorriso_option_use_readline(struct XorrisO *xorriso, char *mode, int flag)
}
/* Option -V */
int Xorriso_option_v_capital(struct XorrisO *xorriso, char *volid, int flag)
{
fprintf(stderr, ">>> LIBISOFS : -V %s\n", volid);
return(1);
}
/* Option -version */
int Xorriso_option_version(struct XorrisO *xorriso, int flag)
{
@ -7670,6 +7663,34 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag)
}
/* Option -volid */
int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag)
{
int warn= 0, i, ret;
static char good_chars[]= {
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-+=:.,~@"};
for(i=0; volid[i]!=0; i++)
if(strchr(good_chars, volid[i])==NULL)
warn= 1;
if(i>32) {
sprintf(xorriso->info_text, "-volid: Text too long (%d > 32)", i);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
if(warn) {
sprintf(xorriso->info_text,
"-volid text problematic as automatic mount point name");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
}
strcpy(xorriso->volid, volid);
ret= Xorriso_set_volid(xorriso, volid, 0);
if(ret<=0)
return(ret);
return(1);
}
/* ---------------------------- End Options API ------------------------ */
@ -7769,7 +7790,7 @@ next_command:;
} else if(strcmp(cmd,"commit")==0) {
ret= Xorriso_option_commit(xorriso, 0);
} else if(strcmp(cmd,"cpr")==0 || strcmp(cmd,"-cpri")==0) {
} else if(strcmp(cmd,"cpr")==0 || strcmp(cmd,"cpri")==0) {
ret= Xorriso_option_cpri(xorriso, argc, argv, idx, 0);
} else if(strcmp(cmd,"cut_out")==0) {
@ -7860,8 +7881,9 @@ next_command:;
(*idx)++;
ret= Xorriso_option_dev(xorriso, arg1, 1);
} else if(strcmp(cmd,"J")==0) {
ret= Xorriso_option_j_capital(xorriso, 0);
} else if(strcmp(cmd,"joliet")==0) {
(*idx)++;
ret= Xorriso_option_joliet(xorriso, arg1, 0);
} else if(strcmp(cmd,"ls")==0 || strcmp(cmd,"lsi")==0 ||
strcmp(cmd,"lsl")==0 || strcmp(cmd,"lsli")==0) {
@ -8033,9 +8055,9 @@ next_command:;
(*idx)++;
ret= Xorriso_option_uid(xorriso,arg1,0);
} else if(strcmp(cmd,"V")==0) {
} else if(strcmp(cmd,"volid")==0) {
(*idx)++;
ret= Xorriso_option_v_capital(xorriso,arg1,0);
ret= Xorriso_option_volid(xorriso,arg1,0);
} else if(strcmp(cmd,"use_readline")==0) {
(*idx)++;