/[tar]/tar/src/xheader.c
ViewVC logotype

Diff of /tar/src/xheader.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by gray, Thu Sep 4 09:37:48 2003 UTC revision 1.6 by gray, Thu Sep 4 13:59:52 2003 UTC
# Line 107  decode_record (char **p, struct tar_stat Line 107  decode_record (char **p, struct tar_stat
107  void  void
108  xheader_decode (struct tar_stat_info *st)  xheader_decode (struct tar_stat_info *st)
109  {  {
110    char *p = extended_header.buffer;    char *p = extended_header.buffer + BLOCKSIZE;
111    char *endp = &extended_header.buffer[extended_header.size-1];    char *endp = &extended_header.buffer[extended_header.size-1];
112    
113    while (p < endp)    while (p < endp)
# Line 136  xheader_store (char const *keyword, stru Line 136  xheader_store (char const *keyword, stru
136  void  void
137  xheader_read (union block *p, size_t size)  xheader_read (union block *p, size_t size)
138  {  {
139    size_t i, j;    size_t j = 0;
140    size_t nblocks;    size_t nblocks;
141    
142    free (extended_header.buffer);    free (extended_header.buffer);
143      size += BLOCKSIZE;
144    extended_header.size = size;    extended_header.size = size;
145    nblocks = (size + BLOCKSIZE - 1) / BLOCKSIZE;    nblocks = (size + BLOCKSIZE - 1) / BLOCKSIZE;
146    extended_header.buffer = xmalloc (size + 1);    extended_header.buffer = xmalloc (size + 1);
147    
148    set_next_block_after (p);    do
   for (i = j = 0; i < nblocks; i++)  
149      {      {
150        size_t len;        size_t len = size;
151    
       p = find_next_block ();  
       len = size;  
152        if (len > BLOCKSIZE)        if (len > BLOCKSIZE)
153          len = BLOCKSIZE;          len = BLOCKSIZE;
154          
155        memcpy (&extended_header.buffer[j], p->buffer, len);        memcpy (&extended_header.buffer[j], p->buffer, len);
156        set_next_block_after (p);        set_next_block_after (p);
157    
158          p = find_next_block ();
159    
160        j += len;        j += len;
161        size -= len;        size -= len;
162      }      }
163      while (size > 0);
164  }  }
165    
166  static size_t  static size_t

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26