Revision d5249393 block.c
b/block.c | ||
---|---|---|
71 | 71 |
return drv->bdrv_create(filename, size_in_sectors, backing_file, flags); |
72 | 72 |
} |
73 | 73 |
|
74 |
/* XXX: race condition possible */ |
|
74 |
#ifdef _WIN32 |
|
75 |
static void get_tmp_filename(char *filename, int size) |
|
76 |
{ |
|
77 |
/* XXX: find a better function */ |
|
78 |
tmpnam(filename); |
|
79 |
} |
|
80 |
#else |
|
75 | 81 |
static void get_tmp_filename(char *filename, int size) |
76 | 82 |
{ |
77 | 83 |
int fd; |
84 |
/* XXX: race condition possible */ |
|
78 | 85 |
pstrcpy(filename, size, "/tmp/vl.XXXXXX"); |
79 | 86 |
fd = mkstemp(filename); |
80 | 87 |
close(fd); |
81 | 88 |
} |
89 |
#endif |
|
82 | 90 |
|
83 | 91 |
static BlockDriver *find_image_format(const char *filename) |
84 | 92 |
{ |
... | ... | |
514 | 522 |
return -1; |
515 | 523 |
bs->read_only = 1; |
516 | 524 |
} |
517 |
size = lseek64(fd, 0, SEEK_END);
|
|
525 |
size = lseek(fd, 0, SEEK_END); |
|
518 | 526 |
bs->total_sectors = size / 512; |
519 | 527 |
s->fd = fd; |
520 | 528 |
return 0; |
... | ... | |
526 | 534 |
BDRVRawState *s = bs->opaque; |
527 | 535 |
int ret; |
528 | 536 |
|
529 |
lseek64(s->fd, sector_num * 512, SEEK_SET);
|
|
537 |
lseek(s->fd, sector_num * 512, SEEK_SET); |
|
530 | 538 |
ret = read(s->fd, buf, nb_sectors * 512); |
531 | 539 |
if (ret != nb_sectors * 512) |
532 | 540 |
return -1; |
... | ... | |
539 | 547 |
BDRVRawState *s = bs->opaque; |
540 | 548 |
int ret; |
541 | 549 |
|
542 |
lseek64(s->fd, sector_num * 512, SEEK_SET);
|
|
550 |
lseek(s->fd, sector_num * 512, SEEK_SET); |
|
543 | 551 |
ret = write(s->fd, buf, nb_sectors * 512); |
544 | 552 |
if (ret != nb_sectors * 512) |
545 | 553 |
return -1; |
... | ... | |
564 | 572 |
0644); |
565 | 573 |
if (fd < 0) |
566 | 574 |
return -EIO; |
567 |
ftruncate64(fd, total_size * 512);
|
|
575 |
ftruncate(fd, total_size * 512); |
|
568 | 576 |
close(fd); |
569 | 577 |
return 0; |
570 | 578 |
} |
Also available in: Unified diff