Commit 57d1a2b62c3a89533bf50297a606ed028068e18e
1 parent
d5249393
win32 port
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1041 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
36 additions
and
9 deletions
qemu-img.c
@@ -113,7 +113,7 @@ void __attribute__((noreturn)) error(const char *fmt, ...) | @@ -113,7 +113,7 @@ void __attribute__((noreturn)) error(const char *fmt, ...) | ||
113 | { | 113 | { |
114 | va_list ap; | 114 | va_list ap; |
115 | va_start(ap, fmt); | 115 | va_start(ap, fmt); |
116 | - fprintf(stderr, "qemuimg: "); | 116 | + fprintf(stderr, "qemu-img: "); |
117 | vfprintf(stderr, fmt, ap); | 117 | vfprintf(stderr, fmt, ap); |
118 | fprintf(stderr, "\n"); | 118 | fprintf(stderr, "\n"); |
119 | exit(1); | 119 | exit(1); |
@@ -127,8 +127,8 @@ static void format_print(void *opaque, const char *name) | @@ -127,8 +127,8 @@ static void format_print(void *opaque, const char *name) | ||
127 | 127 | ||
128 | void help(void) | 128 | void help(void) |
129 | { | 129 | { |
130 | - printf("qemuimg version " QEMU_VERSION ", Copyright (c) 2004 Fabrice Bellard\n" | ||
131 | - "usage: qemuimg command [command options]\n" | 130 | + printf("qemu-img version " QEMU_VERSION ", Copyright (c) 2004 Fabrice Bellard\n" |
131 | + "usage: qemu-img command [command options]\n" | ||
132 | "QEMU disk image utility\n" | 132 | "QEMU disk image utility\n" |
133 | "\n" | 133 | "\n" |
134 | "Command syntax:\n" | 134 | "Command syntax:\n" |
@@ -592,6 +592,24 @@ static int img_convert(int argc, char **argv) | @@ -592,6 +592,24 @@ static int img_convert(int argc, char **argv) | ||
592 | return 0; | 592 | return 0; |
593 | } | 593 | } |
594 | 594 | ||
595 | +#ifdef _WIN32 | ||
596 | +static int64_t get_allocated_file_size(const char *filename) | ||
597 | +{ | ||
598 | + struct _stati64 st; | ||
599 | + if (_stati64(filename, &st) < 0) | ||
600 | + return -1; | ||
601 | + return st.st_size; | ||
602 | +} | ||
603 | +#else | ||
604 | +static int64_t get_allocated_file_size(const char *filename) | ||
605 | +{ | ||
606 | + struct stat st; | ||
607 | + if (stat(filename, &st) < 0) | ||
608 | + return -1; | ||
609 | + return (int64_t)st.st_blocks * 512; | ||
610 | +} | ||
611 | +#endif | ||
612 | + | ||
595 | static int img_info(int argc, char **argv) | 613 | static int img_info(int argc, char **argv) |
596 | { | 614 | { |
597 | int c; | 615 | int c; |
@@ -599,8 +617,7 @@ static int img_info(int argc, char **argv) | @@ -599,8 +617,7 @@ static int img_info(int argc, char **argv) | ||
599 | BlockDriver *drv; | 617 | BlockDriver *drv; |
600 | BlockDriverState *bs; | 618 | BlockDriverState *bs; |
601 | char fmt_name[128], size_buf[128], dsize_buf[128]; | 619 | char fmt_name[128], size_buf[128], dsize_buf[128]; |
602 | - int64_t total_sectors; | ||
603 | - struct stat st; | 620 | + int64_t total_sectors, allocated_size; |
604 | 621 | ||
605 | fmt = NULL; | 622 | fmt = NULL; |
606 | for(;;) { | 623 | for(;;) { |
@@ -637,10 +654,11 @@ static int img_info(int argc, char **argv) | @@ -637,10 +654,11 @@ static int img_info(int argc, char **argv) | ||
637 | bdrv_get_format(bs, fmt_name, sizeof(fmt_name)); | 654 | bdrv_get_format(bs, fmt_name, sizeof(fmt_name)); |
638 | bdrv_get_geometry(bs, &total_sectors); | 655 | bdrv_get_geometry(bs, &total_sectors); |
639 | get_human_readable_size(size_buf, sizeof(size_buf), total_sectors * 512); | 656 | get_human_readable_size(size_buf, sizeof(size_buf), total_sectors * 512); |
640 | - if (stat(filename, &st) < 0) | ||
641 | - error("Could not stat '%s'", filename); | 657 | + allocated_size = get_allocated_file_size(filename); |
658 | + if (allocated_size < 0) | ||
659 | + error("Could not get file size '%s'", filename); | ||
642 | get_human_readable_size(dsize_buf, sizeof(dsize_buf), | 660 | get_human_readable_size(dsize_buf, sizeof(dsize_buf), |
643 | - (int64_t)st.st_blocks * 512); | 661 | + allocated_size); |
644 | printf("image: %s\n" | 662 | printf("image: %s\n" |
645 | "file format: %s\n" | 663 | "file format: %s\n" |
646 | "virtual size: %s (%lld bytes)\n" | 664 | "virtual size: %s (%lld bytes)\n" |
vl.h
@@ -45,7 +45,16 @@ | @@ -45,7 +45,16 @@ | ||
45 | #endif | 45 | #endif |
46 | 46 | ||
47 | #ifdef _WIN32 | 47 | #ifdef _WIN32 |
48 | -#define lseek64 _lseeki64 | 48 | +#define lseek _lseeki64 |
49 | +#define ENOTSUP 4096 | ||
50 | +/* XXX: find 64 bit version */ | ||
51 | +#define ftruncate chsize | ||
52 | + | ||
53 | +static inline char *realpath(const char *path, char *resolved_path) | ||
54 | +{ | ||
55 | + _fullpath(resolved_path, path, _MAX_PATH); | ||
56 | + return resolved_path; | ||
57 | +} | ||
49 | #endif | 58 | #endif |
50 | 59 | ||
51 | #ifdef QEMU_TOOL | 60 | #ifdef QEMU_TOOL |