(flush_write): Limit filenames

of the members that straddle multivolume archive
boundary to 100 characters.
This commit is contained in:
Sergey Poznyakoff
2004-08-10 11:17:16 +00:00
parent f6c0aee290
commit 2d041189aa

View File

@@ -510,13 +510,18 @@ flush_write (void)
if (volume_label_option)
record_start++;
if (strlen (real_s_name) > NAME_FIELD_SIZE)
FATAL_ERROR ((0, 0,
_("%s: file name too long to be stored in a GNU multivolume header"),
quotearg_colon (real_s_name)));
memset (record_start, 0, BLOCKSIZE);
/* FIXME: Michael P Urban writes: [a long name file] is being written
when a new volume rolls around [...] Looks like the wrong value is
being preserved in real_s_name, though. */
strcpy (record_start->header.name, real_s_name);
strncpy (record_start->header.name, real_s_name, NAME_FIELD_SIZE);
record_start->header.typeflag = GNUTYPE_MULTIVOL;
OFF_TO_CHARS (real_s_sizeleft, record_start->header.size);
OFF_TO_CHARS (real_s_totsize - real_s_sizeleft,
@@ -763,7 +768,7 @@ flush_read (void)
{
uintmax_t s1, s2;
if (cursor->header.typeflag != GNUTYPE_MULTIVOL
|| strcmp (cursor->header.name, real_s_name))
|| strncmp (cursor->header.name, real_s_name, NAME_FIELD_SIZE))
{
WARN ((0, 0, _("%s is not continued on this volume"),
quote (real_s_name)));