• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/router/squashfs/

Lines Matching refs:sBlk

68 int read_block(int fd, long long start, long long *next, unsigned char *block, squashfs_super_block *sBlk)
80 if(SQUASHFS_CHECK_DATA(sBlk->flags))
120 squashfs_super_block *sBlk,
140 if((byte = read_block(fd, start, &start, *inode_table + bytes, sBlk)) == 0) {
193 int frag_bytes = inode.fragment == SQUASHFS_INVALID_FRAG ? 0 : inode.file_size % sBlk->block_size;
195 + sBlk->block_size - 1) >> sBlk->block_log : inode.file_size >>
196 sBlk->block_log;
246 frag_bytes = inode.fragment == SQUASHFS_INVALID_FRAG ? 0 : inode.file_size % sBlk->block_size;
248 + sBlk->block_size - 1) >> sBlk->block_log : inode.file_size >>
249 sBlk->block_log;
357 int read_super(int fd, squashfs_super_block *sBlk, int *be, char *source)
361 read_bytes(fd, SQUASHFS_START, sizeof(squashfs_super_block), (char *) sBlk);
365 switch (sBlk->s_magic) {
375 SQUASHFS_SWAP_SUPER_BLOCK(&sblk, sBlk);
376 memcpy(sBlk, &sblk, sizeof(squashfs_super_block));
386 if(sBlk->s_major != SQUASHFS_MAJOR || sBlk->s_minor > SQUASHFS_MINOR) {
387 if(sBlk->s_major < 3)
388 ERROR("Filesystem on %s is a SQUASHFS %d.%d filesystem. Appending\nto SQUASHFS %d.%d filesystems is not supported. Please convert it to a SQUASHFS 3.0 filesystem\n", source, sBlk->s_major, sBlk->s_minor, sBlk->s_major, sBlk->s_minor);
391 source, sBlk->s_major, sBlk->s_minor);
401 printf("Found a valid %s%s SQUASHFS superblock on %s.\n", SQUASHFS_EXPORTABLE(sBlk->flags) ? "exportable " : "", *be ? "big endian" : "little endian", source);
402 printf("\tInodes are %scompressed\n", SQUASHFS_UNCOMPRESSED_INODES(sBlk->flags) ? "un" : "");
403 printf("\tData is %scompressed\n", SQUASHFS_UNCOMPRESSED_DATA(sBlk->flags) ? "un" : "");
404 printf("\tFragments are %scompressed\n", SQUASHFS_UNCOMPRESSED_FRAGMENTS(sBlk->flags) ? "un" : "");
405 printf("\tCheck data is %spresent in the filesystem\n", SQUASHFS_CHECK_DATA(sBlk->flags) ? "" : "not ");
406 printf("\tFragments are %spresent in the filesystem\n", SQUASHFS_NO_FRAGMENTS(sBlk->flags) ? "not " : "");
407 printf("\tAlways_use_fragments option is %sspecified\n", SQUASHFS_ALWAYS_FRAGMENTS(sBlk->flags) ? "" : "not ");
408 printf("\tDuplicates are %sremoved\n", SQUASHFS_DUPLICATES(sBlk->flags) ? "" : "not ");
409 printf("\tFilesystem size %.2f Kbytes (%.2f Mbytes)\n", sBlk->bytes_used / 1024.0, sBlk->bytes_used / (1024.0 * 1024.0));
410 printf("\tBlock size %d\n", sBlk->block_size);
411 printf("\tNumber of fragments %d\n", sBlk->fragments);
412 printf("\tNumber of inodes %d\n", sBlk->inodes);
413 printf("\tNumber of uids %d\n", sBlk->no_uids);
414 printf("\tNumber of gids %d\n", sBlk->no_guids);
415 TRACE("sBlk->inode_table_start %llx\n", sBlk->inode_table_start);
416 TRACE("sBlk->directory_table_start %llx\n", sBlk->directory_table_start);
417 TRACE("sBlk->uid_start %llx\n", sBlk->uid_start);
418 TRACE("sBlk->fragment_table_start %llx\n", sBlk->fragment_table_start);
419 TRACE("sBlk->lookup_table_start %xllx\n", sBlk->lookup_table_start);
430 unsigned int *last_directory_block, squashfs_super_block *sBlk, void (push_directory_entry)(char *, squashfs_inode, int, int))
437 long long start = sBlk->directory_table_start + directory_start_block, last_start_block = -1;
445 if((byte = read_block(fd, start, &start, directory_table + bytes, sBlk)) == 0) {
486 *last_directory_block = (unsigned int) last_start_block - sBlk->directory_table_start;
491 int read_fragment_table(int fd, squashfs_super_block *sBlk, squashfs_fragment_entry **fragment_table)
493 int i, indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk->fragments);
496 TRACE("read_fragment_table: %d fragments, reading %d fragment indexes from 0x%llx\n", sBlk->fragments, indexes, sBlk->fragment_table_start);
497 if(sBlk->fragments == 0)
500 if((*fragment_table = (squashfs_fragment_entry *) malloc(sBlk->fragments * sizeof(squashfs_fragment_entry))) == NULL) {
508 read_bytes(fd, sBlk->fragment_table_start, SQUASHFS_FRAGMENT_INDEX_BYTES(sBlk->fragments), (char *) sfragment_table_index);
511 read_bytes(fd, sBlk->fragment_table_start, SQUASHFS_FRAGMENT_INDEX_BYTES(sBlk->fragments), (char *) fragment_table_index);
514 int length = read_block(fd, fragment_table_index[i], NULL, ((unsigned char *) *fragment_table) + (i * SQUASHFS_METADATA_SIZE), sBlk);
520 for(i = 0; i < sBlk->fragments; i++) {
530 int read_inode_lookup_table(int fd, squashfs_super_block *sBlk, squashfs_inode **inode_lookup_table)
532 int lookup_bytes = SQUASHFS_LOOKUP_BYTES(sBlk->inodes);
533 int indexes = SQUASHFS_LOOKUP_BLOCKS(sBlk->inodes);
537 if(sBlk->lookup_table_start == SQUASHFS_INVALID_BLK)
548 read_bytes(fd, sBlk->lookup_table_start, SQUASHFS_LOOKUP_BLOCK_BYTES(sBlk->inodes), (char *) sindex);
551 read_bytes(fd, sBlk->lookup_table_start, SQUASHFS_LOOKUP_BLOCK_BYTES(sBlk->inodes), (char *) index);
554 int length = read_block(fd, index[i], NULL, ((unsigned char *) *inode_lookup_table) + (i * SQUASHFS_METADATA_SIZE), sBlk);
560 for(i = 0; i < sBlk->inodes; i++) {
570 long long read_filesystem(char *root_name, int fd, squashfs_super_block *sBlk, char **cinode_table,
582 long long start = sBlk->inode_table_start, end = sBlk->directory_table_start, root_inode_start = start +
583 SQUASHFS_INODE_BLK(sBlk->root_inode);
584 unsigned int root_inode_offset = SQUASHFS_INODE_OFFSET(sBlk->root_inode), root_inode_block, files;
589 if(read_fragment_table(fd, sBlk, fragment_table) == 0)
592 if(read_inode_lookup_table(fd, sBlk, inode_lookup_table) == 0)
595 if((files = scan_inode_table(fd, start, end, root_inode_start, root_inode_offset, sBlk, &inode, &inode_table,
622 *inode_dir_file_size, last_directory_block, sBlk, push_directory_entry)) == NULL) {
638 read_bytes(fd, sBlk->directory_table_start, *last_directory_block, *cdirectory_table);
653 read_bytes(fd, sBlk->uid_start, sBlk->no_uids * sizeof(squashfs_uid), (char *) uids);
655 squashfs_uid uids_copy[sBlk->no_uids];
657 read_bytes(fd, sBlk->uid_start, sBlk->no_uids * sizeof(squashfs_uid), (char *) uids_copy);
658 SQUASHFS_SWAP_DATA(uids, uids_copy, sBlk->no_uids, sizeof(squashfs_uid) * 8);
662 read_bytes(fd, sBlk->guid_start, sBlk->no_guids * sizeof(squashfs_uid), (char *) guids);
664 squashfs_uid guids_copy[sBlk->no_guids];
666 read_bytes(fd, sBlk->guid_start, sBlk->no_guids * sizeof(squashfs_uid), (char *) guids_copy);
667 SQUASHFS_SWAP_DATA(guids, guids_copy, sBlk->no_guids, sizeof(squashfs_uid) * 8);
669 *uid_count = sBlk->no_uids;
670 *guid_count = sBlk->no_guids;
674 return sBlk->inode_table_start;