X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ffilesys%2Ffsutil.c;h=67dab6fdc59768fd4587a47f379308f24a525865;hb=97dcefb4742e13df9eb22c3aa00bb802bdc55c60;hp=57cd4e8d5d2024faf3c21eed04ca1ec2819dae2c;hpb=4e56c3db3a372c96da21981f270a791e29452039;p=pintos-anon diff --git a/src/filesys/fsutil.c b/src/filesys/fsutil.c index 57cd4e8..67dab6f 100644 --- a/src/filesys/fsutil.c +++ b/src/filesys/fsutil.c @@ -7,26 +7,39 @@ #include "mmu.h" #include "palloc.h" +/* Filename and file size to use for copy operations, + as "filename:size". */ char *fsutil_copy_arg; + +/* Name of a file print to print to console. */ char *fsutil_print_file; + +/* Name of a file to delete. */ char *fsutil_remove_file; + +/* List all files in the filesystem to the system console? */ bool fsutil_list_files; + +/* Dump full contents of filesystem to the system console? */ bool fsutil_dump_filesys; +/* Copies from the "scratch" disk, hdc or hd1:0, + to a file named FILENAME in the filesystem. + The file will be SIZE bytes in length. */ static void copy (const char *filename, off_t size) { struct disk *src; struct file dst; - disk_sector_no sector; + disk_sector_t sector; void *buffer; /* Open source disk. */ - src = disk_get (2); + src = disk_get (1, 0); if (src == NULL) - PANIC ("couldn't open source disk (hdc or ide1:0)"); + PANIC ("couldn't open source disk (hdc or hd1:0)"); if (size > (off_t) disk_size (src) * DISK_SECTOR_SIZE) - PANIC ("source disk is too small for %Ld-byte file", + PANIC ("source disk is too small for %lld-byte file", (unsigned long long) size); /* Create destination file. */ @@ -43,7 +56,7 @@ copy (const char *filename, off_t size) int chunk_size = size > DISK_SECTOR_SIZE ? DISK_SECTOR_SIZE : size; disk_read (src, sector++, buffer); if (file_write (&dst, buffer, chunk_size) != chunk_size) - PANIC ("%s: write failed with %Ld bytes unwritten", + PANIC ("%s: write failed with %lld bytes unwritten", filename, (unsigned long long) size); size -= chunk_size; } @@ -52,6 +65,8 @@ copy (const char *filename, off_t size) file_close (&dst); } +/* Executes the filesystem operations described by the variables + declared in fsutil.h. */ void fsutil_run (void) { @@ -85,6 +100,8 @@ fsutil_run (void) filesys_dump (); } +/* Prints the contents of file FILENAME to the system console as + hex and ASCII. */ void fsutil_print (const char *filename) {