Bug fix: -as mkisofs without -graft-points could noy handle names with "="

This commit is contained in:
Thomas Schmitt 2012-03-22 08:49:33 +00:00
parent 2029d364a4
commit 1ddd7df3e5
4 changed files with 36 additions and 5 deletions

View File

@ -1686,9 +1686,16 @@ is_pathspec_2:;
pathspec[0]= '/'; pathspec[0]= '/';
pathspec[1]= 0; pathspec[1]= 0;
ret= Sfile_leafname(eff_path, pathspec+1, 0); ret= Sfile_leafname(eff_path, pathspec+1, 0);
if(ret>0) if(ret>0) {
ret= Fileliste__escape_source_path(pathspec, SfileadrL, 0);
if(ret <= 0) {
Xorriso_msgs_submit(xorriso, 0,
"Escaped leaf name gets much too long",
0, "FAILURE", 0);
goto problem_handler_2;
}
strcat(pathspec, "="); strcat(pathspec, "=");
else } else
pathspec[0]= 0; pathspec[0]= 0;
} }
strcat(pathspec, eff_path); strcat(pathspec, eff_path);

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net> Copyright 2007-2012 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later. Provided under GPL version 2 or later.
@ -1110,6 +1110,28 @@ int Fileliste__target_source_limit(char *line, char sep, char **limit_pt,
} }
int Fileliste__escape_source_path(char *line, int size, int flag)
{
int l, count= 0, i;
char *wpt;
l= strlen(line);
for(i= 0; i < l; i++)
if(line[i] == '=' || line[i] == '\\')
count++;
if(l + count >= size)
return(0);
wpt= line + l + count;
for(i= l; i >= 0; i--) {
*(wpt--)= line[i];
if(line[i] == '=' || line[i] == '\\')
*(wpt--)= '\\';
}
return(1);
}
int Xorriso__bourne_to_reg(char bourne_expr[], char reg_expr[], int flag) int Xorriso__bourne_to_reg(char bourne_expr[], char reg_expr[], int flag)
/* reg_expr should be twice as large as bourne_expr ( + 2 to be exact) */ /* reg_expr should be twice as large as bourne_expr ( + 2 to be exact) */
/* return: 2= bourne_expr is surely a constant */ /* return: 2= bourne_expr is surely a constant */

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net> Copyright 2007-2012 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later. Provided under GPL version 2 or later.
@ -54,6 +54,8 @@ int Wait_for_input(int fd, int microsec, int flag);
int Fileliste__target_source_limit(char *line, char sep, char **limit_pt, int Fileliste__target_source_limit(char *line, char sep, char **limit_pt,
int flag); int flag);
int Fileliste__escape_source_path(char *line, int size, int flag);
int Hex_to_bin(char *hex, int Hex_to_bin(char *hex,
int bin_size, int *bin_count, unsigned char *bin_data, int flag); int bin_size, int *bin_count, unsigned char *bin_data, int flag);

View File

@ -1 +1 @@
#define Xorriso_timestamP "2012.03.21.193557" #define Xorriso_timestamP "2012.03.22.084956"