| 402 |
set_next_block_after (header + (size - 1) / BLOCKSIZE); |
set_next_block_after (header + (size - 1) / BLOCKSIZE); |
| 403 |
} |
} |
| 404 |
|
|
| 405 |
|
/* Write a long link name, depending on the current archive format */ |
| 406 |
|
static void |
| 407 |
|
write_long_link (struct tar_stat_info *st) |
| 408 |
|
{ |
| 409 |
|
if (archive_format == POSIX_FORMAT) |
| 410 |
|
xheader_store ("linkpath", st); |
| 411 |
|
else |
| 412 |
|
write_long (st->link_name, GNUTYPE_LONGNAME); |
| 413 |
|
} |
| 414 |
|
|
| 415 |
/* NOTE: Cross recursion between start_header and write_extended */ |
/* NOTE: Cross recursion between start_header and write_extended */ |
| 416 |
|
|
| 417 |
static union block * |
static union block * |
| 1255 |
dup->nlink--; |
dup->nlink--; |
| 1256 |
|
|
| 1257 |
block_ordinal = current_block_ordinal (); |
block_ordinal = current_block_ordinal (); |
|
if (NAME_FIELD_SIZE <= strlen (link_name)) |
|
|
write_long (link_name, GNUTYPE_LONGLINK); |
|
| 1258 |
assign_string (¤t_stat_info.link_name, link_name); |
assign_string (¤t_stat_info.link_name, link_name); |
| 1259 |
|
if (NAME_FIELD_SIZE <= strlen (link_name)) |
| 1260 |
|
write_long_link (¤t_stat_info); |
| 1261 |
|
|
| 1262 |
current_stat_info.stat.st_size = 0; |
current_stat_info.stat.st_size = 0; |
| 1263 |
header = start_header (p, ¤t_stat_info); |
header = start_header (p, ¤t_stat_info); |
| 1582 |
return; |
return; |
| 1583 |
} |
} |
| 1584 |
buffer[size] = '\0'; |
buffer[size] = '\0'; |
|
if (size >= NAME_FIELD_SIZE) |
|
|
write_long (buffer, GNUTYPE_LONGLINK); |
|
| 1585 |
assign_string (¤t_stat_info.link_name, buffer); |
assign_string (¤t_stat_info.link_name, buffer); |
| 1586 |
|
if (size >= NAME_FIELD_SIZE) |
| 1587 |
|
write_long_link (¤t_stat_info); |
| 1588 |
|
|
| 1589 |
block_ordinal = current_block_ordinal (); |
block_ordinal = current_block_ordinal (); |
| 1590 |
current_stat_info.stat.st_size = 0; /* force 0 size on symlink */ |
current_stat_info.stat.st_size = 0; /* force 0 size on symlink */ |