Patch to fix bug 868, and some related cleanup while I was in the area.

A tab is now taken as the end of filename if it's there, but if it isn't
(because the timestamp isn't there) we continue with the existing untruncated
line as the filename.
1_4_stable
Rob Landley 2006-05-07 21:10:06 +00:00
parent a336e7cc25
commit baa89b398d
1 changed files with 6 additions and 18 deletions

View File

@ -54,29 +54,17 @@ static unsigned int copy_lines(FILE *src_stream, FILE *dest_stream, const unsign
static char *extract_filename(char *line, int patch_level)
{
char *filename_start_ptr = line + 4;
char *temp, *filename_start_ptr = line + 4;
int i;
/* Terminate string at end of source filename */
{
char *line_ptr;
line_ptr = strchr(filename_start_ptr, '\t');
if (!line_ptr) {
bb_perror_msg("Malformed line %s", line);
return(NULL);
}
*line_ptr = '\0';
}
temp = strchr(filename_start_ptr, '\t');
if (temp) *temp = 0;
/* Skip over (patch_level) number of leading directories */
/* skip over (patch_level) number of leading directories */
for (i = 0; i < patch_level; i++) {
char *dirname_ptr;
dirname_ptr = strchr(filename_start_ptr, '/');
if (!dirname_ptr) {
break;
}
filename_start_ptr = dirname_ptr + 1;
if(!(temp = strchr(filename_start_ptr, '/'))) break;
filename_start_ptr = temp + 1;
}
return(bb_xstrdup(filename_start_ptr));