--- clitar.c.orig Wed Sep 24 10:16:13 2003 +++ clitar.c Sat Oct 4 15:16:10 2003 @@ -210,8 +210,10 @@ memset(hb.dbuf.size, 0, 4); hb.dbuf.size[0]=128; - for (i = 8, jp=(char*)&size; i; i--) - hb.dbuf.size[i+3] = *(jp++); + for (i = 8; i; i--) { + hb.dbuf.size[i+3] = size & 0xff; + size >>= 8; + } } oct_it((SMB_BIG_UINT) mtime, 13, hb.dbuf.mtime); memcpy(hb.dbuf.chksum, " ", sizeof(hb.dbuf.chksum)); @@ -312,7 +314,17 @@ */ finfo->mtime = finfo->ctime = strtol(hb->dbuf.mtime, NULL, 8); finfo->atime = time(NULL); + if ( (hb->dbuf.size[0] & 0xff) == 0x80 ) { + /* This is a non-POSIX compatible extention to extract files + greater than 8GB. */ + finfo->size = 0; + for (i = 0; i < 8; i++) { + finfo->size <<= 8; + finfo->size |= hb->dbuf.size[i+4] & 0xff; + } + } else { finfo->size = unoct(hb->dbuf.size, sizeof(hb->dbuf.size)); + } return True; }