win32 port

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1041 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2004-08-03 21:15:11 +00:00
parent d5249393ef
commit 57d1a2b62c
2 changed files with 36 additions and 9 deletions

View File

@ -113,7 +113,7 @@ void __attribute__((noreturn)) error(const char *fmt, ...)
{ {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
fprintf(stderr, "qemuimg: "); fprintf(stderr, "qemu-img: ");
vfprintf(stderr, fmt, ap); vfprintf(stderr, fmt, ap);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
exit(1); exit(1);
@ -127,8 +127,8 @@ static void format_print(void *opaque, const char *name)
void help(void) void help(void)
{ {
printf("qemuimg version " QEMU_VERSION ", Copyright (c) 2004 Fabrice Bellard\n" printf("qemu-img version " QEMU_VERSION ", Copyright (c) 2004 Fabrice Bellard\n"
"usage: qemuimg command [command options]\n" "usage: qemu-img command [command options]\n"
"QEMU disk image utility\n" "QEMU disk image utility\n"
"\n" "\n"
"Command syntax:\n" "Command syntax:\n"
@ -592,6 +592,24 @@ static int img_convert(int argc, char **argv)
return 0; return 0;
} }
#ifdef _WIN32
static int64_t get_allocated_file_size(const char *filename)
{
struct _stati64 st;
if (_stati64(filename, &st) < 0)
return -1;
return st.st_size;
}
#else
static int64_t get_allocated_file_size(const char *filename)
{
struct stat st;
if (stat(filename, &st) < 0)
return -1;
return (int64_t)st.st_blocks * 512;
}
#endif
static int img_info(int argc, char **argv) static int img_info(int argc, char **argv)
{ {
int c; int c;
@ -599,8 +617,7 @@ static int img_info(int argc, char **argv)
BlockDriver *drv; BlockDriver *drv;
BlockDriverState *bs; BlockDriverState *bs;
char fmt_name[128], size_buf[128], dsize_buf[128]; char fmt_name[128], size_buf[128], dsize_buf[128];
int64_t total_sectors; int64_t total_sectors, allocated_size;
struct stat st;
fmt = NULL; fmt = NULL;
for(;;) { for(;;) {
@ -637,10 +654,11 @@ static int img_info(int argc, char **argv)
bdrv_get_format(bs, fmt_name, sizeof(fmt_name)); bdrv_get_format(bs, fmt_name, sizeof(fmt_name));
bdrv_get_geometry(bs, &total_sectors); bdrv_get_geometry(bs, &total_sectors);
get_human_readable_size(size_buf, sizeof(size_buf), total_sectors * 512); get_human_readable_size(size_buf, sizeof(size_buf), total_sectors * 512);
if (stat(filename, &st) < 0) allocated_size = get_allocated_file_size(filename);
error("Could not stat '%s'", filename); if (allocated_size < 0)
error("Could not get file size '%s'", filename);
get_human_readable_size(dsize_buf, sizeof(dsize_buf), get_human_readable_size(dsize_buf, sizeof(dsize_buf),
(int64_t)st.st_blocks * 512); allocated_size);
printf("image: %s\n" printf("image: %s\n"
"file format: %s\n" "file format: %s\n"
"virtual size: %s (%lld bytes)\n" "virtual size: %s (%lld bytes)\n"

11
vl.h
View File

@ -45,7 +45,16 @@
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
#define lseek64 _lseeki64 #define lseek _lseeki64
#define ENOTSUP 4096
/* XXX: find 64 bit version */
#define ftruncate chsize
static inline char *realpath(const char *path, char *resolved_path)
{
_fullpath(resolved_path, path, _MAX_PATH);
return resolved_path;
}
#endif #endif
#ifdef QEMU_TOOL #ifdef QEMU_TOOL