summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--fs.c2
-rw-r--r--tar.c4
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8bed1754e..b74d0c041 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-08 Ben Asselstine <benasselstine@gmail.com>
+
+ * tar.c (tar_header2stat): Correctly setting `st_blocks' of ST.
+
+
2006-03-07 Ben Asselstine <benasselstine@gmail.com>
* store-gzip.c (read_next): remove static from nested
diff --git a/fs.c b/fs.c
index d508b9050..acfbc172d 100644
--- a/fs.c
+++ b/fs.c
@@ -211,7 +211,7 @@ _make_node (struct node **n, struct node *dir, char* name, mode_t m)
st.st_nlink = 1; /* number of subdir plus two, one otherwise. */
st.st_size = 0;
st.st_blksize = 1024; /* optimal block size for reading */
- st.st_blocks = 1; /* XXX */
+ st.st_blocks = 1;
st.st_gen = 0;
if (S_ISDIR (m))
diff --git a/tar.c b/tar.c
index 31bf61ea3..40cbfb908 100644
--- a/tar.c
+++ b/tar.c
@@ -173,6 +173,10 @@ tar_header2stat (io_statbuf_t *st, tar_record_t *header)
}
//st->st_size = hstat.st_size;
st->st_size = from_oct (1 + 12, header->header.size);
+ if (st->st_size > 0)
+ st->st_blocks = ((st->st_size - 1) / 512) + 1;
+ else
+ st->st_blocks = 0;
st->st_mtime = from_oct (1 + 12, header->header.mtime);
st->st_atime = from_oct (1 + 12, header->header.atime);
st->st_ctime = from_oct (1 + 12, header->header.ctime);