Skip to content
This repository was archived by the owner on Jan 26, 2026. It is now read-only.

Commit e95deeb

Browse files
committed
Improve msvc compilation.
1 parent 4d37bd2 commit e95deeb

10 files changed

Lines changed: 73 additions & 60 deletions

File tree

include/cdio/types.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,11 @@ typedef u_int64_t uint64_t;
5050

5151
typedef uint8_t ubyte;
5252

53-
/* MSVC does not define mode_t and ssize_t by default. The way
54-
to compensate for missing UNIX types is to include a custom
55-
unistd.h that defines them. Such a file is provided with
56-
the libcdio source, in the MSVC/missing directory */
53+
/* MSVC does not define mode_t and ssize_t by default. */
5754
#if defined(_MSC_VER)
58-
#include <unistd.h>
55+
typedef int mode_t;
56+
#include <BaseTsd.h>
57+
typedef SSIZE_T ssize_t;
5958
#endif
6059

6160
/* default HP/UX macros are broken */

lib/driver/MSWindows/aspi32.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
#include <stdio.h>
4242
#include <stdlib.h>
4343
#include <errno.h>
44+
#ifdef HAVE_UNISTD_H
4445
#include <unistd.h>
46+
#endif
4547
#include <fcntl.h>
4648

4749
#undef IN
@@ -137,7 +139,7 @@ mciSendCommand_aspi(int id, UINT msg, DWORD flags, void *arg)
137139
if ( mci_error ) {
138140
char error[256];
139141

140-
mciGetErrorString(mci_error, error, 256);
142+
mciGetErrorStringA(mci_error, error, 256);
141143
cdio_warn("mciSendCommand() error: %s", error);
142144
}
143145
return(mci_error == 0);
@@ -153,7 +155,7 @@ have_aspi( HMODULE *hASPI,
153155
long (**lpSendCommand)( void* ) )
154156
{
155157
/* check if aspi is available */
156-
*hASPI = LoadLibrary( "wnaspi32.dll" );
158+
*hASPI = LoadLibraryW( L"wnaspi32.dll" );
157159

158160
if( *hASPI == NULL ) {
159161
cdio_warn("Unable to load ASPI DLL");
@@ -487,7 +489,7 @@ init_aspi (_img_private_t *env)
487489
488490
We return 0 if command completed successfully.
489491
*/
490-
int
492+
driver_return_code_t
491493
run_mmc_cmd_aspi( void *p_user_data, unsigned int i_timeout_ms,
492494
unsigned int i_cdb, const mmc_cdb_t * p_cdb,
493495
cdio_mmc_direction_t e_direction,
@@ -559,7 +561,7 @@ run_mmc_cmd_aspi( void *p_user_data, unsigned int i_timeout_ms,
559561
Reads nblocks sectors from cd device into data starting from lsn.
560562
Returns 0 if no error.
561563
*/
562-
static int
564+
static driver_return_code_t
563565
read_sectors_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
564566
int sector_type, unsigned int nblocks)
565567
{
@@ -621,7 +623,7 @@ read_sectors_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
621623
Reads an audio device into data starting from lsn.
622624
Returns 0 if no error.
623625
*/
624-
int
626+
driver_return_code_t
625627
read_audio_sectors_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
626628
unsigned int i_blocks)
627629
{
@@ -636,7 +638,7 @@ read_audio_sectors_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
636638
Reads a single mode2 sector from cd device into data starting
637639
from lsn. Returns 0 if no error.
638640
*/
639-
int
641+
driver_return_code_t
640642
read_mode2_sector_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
641643
bool b_form2)
642644
{
@@ -650,7 +652,7 @@ read_mode2_sector_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
650652
Reads a single mode2 sector from cd device into data starting
651653
from lsn. Returns 0 if no error.
652654
*/
653-
int
655+
driver_return_code_t
654656
read_mode1_sector_aspi (_img_private_t *p_env, void *data, lsn_t lsn,
655657
bool b_form2)
656658
{
@@ -783,7 +785,7 @@ wnaspi32_eject_media (void *user_data) {
783785
track_format_t
784786
get_track_format_aspi(const _img_private_t *p_env, track_t track_num)
785787
{
786-
MCI_OPEN_PARMS op;
788+
MCI_OPEN_PARMSA op;
787789
MCI_STATUS_PARMS st;
788790
DWORD i_flags;
789791

lib/driver/MSWindows/aspi32.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,20 +195,20 @@ const char *is_cdrom_aspi(const char drive_letter);
195195
Reads an audio device using the DeviceIoControl method into data
196196
starting from lsn. Returns 0 if no error.
197197
*/
198-
int read_audio_sectors_aspi (_img_private_t *obj, void *data, lsn_t lsn,
199-
unsigned int nblocks);
198+
driver_return_code_t read_audio_sectors_aspi (_img_private_t *obj,
199+
void *data, lsn_t lsn, unsigned int nblocks);
200200
/*!
201201
Reads a single mode1 sector using the DeviceIoControl method into
202202
data starting from lsn. Returns 0 if no error.
203203
*/
204-
int read_mode1_sector_aspi (_img_private_t *env, void *data,
205-
lsn_t lsn, bool b_form2);
204+
driver_return_code_t read_mode1_sector_aspi (_img_private_t *env,
205+
void *data, lsn_t lsn, bool b_form2);
206206
/*!
207207
Reads a single mode2 sector from cd device into data starting
208208
from lsn. Returns 0 if no error.
209209
*/
210-
int read_mode2_sector_aspi (_img_private_t *env, void *data, lsn_t lsn,
211-
bool b_form2);
210+
driver_return_code_t read_mode2_sector_aspi (_img_private_t *env,
211+
void *data, lsn_t lsn, bool b_form2);
212212

213213
/*!
214214
Read and cache the CD's Track Table of Contents and track info.
@@ -231,7 +231,7 @@ bool read_toc_aspi (_img_private_t *env);
231231
232232
Return 0 if command completed successfully.
233233
*/
234-
int run_mmc_cmd_aspi( void *p_user_data,
234+
driver_return_code_t run_mmc_cmd_aspi( void *p_user_data,
235235
unsigned int i_timeout,
236236
unsigned int i_cdb,
237237
const mmc_cdb_t * p_cdb,

lib/driver/MSWindows/win32.c

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@
7272
#include <sys/types.h>
7373
#endif
7474

75+
#if defined(_MSC_VER)
76+
#include <io.h>
77+
#endif
78+
7579
#if defined (_MSC_VER) || defined (_XBOX)
7680
#undef IN
7781
#endif
@@ -82,8 +86,12 @@
8286
#include <xtl.h>
8387
#define WIN_NT 1
8488
#else
89+
#if defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)
90+
#define WIN_NT 1
91+
#else
8592
#define WIN_NT ( GetVersion() < 0x80000000 )
8693
#endif
94+
#endif
8795

8896
/* mingw-w64 defines this to lseek64 when LFS is enabled */
8997
#ifdef lseek
@@ -209,7 +217,7 @@ _cdio_mciSendCommand(int id, UINT msg, DWORD flags, void *arg)
209217
if ( mci_error ) {
210218
char error[256];
211219

212-
mciGetErrorString(mci_error, error, 256);
220+
mciGetErrorStringA(mci_error, error, 256);
213221
cdio_warn("mciSendCommand() error: %s", error);
214222
}
215223
return(mci_error == 0);
@@ -291,7 +299,7 @@ is_cdrom_win32(const char drive_letter) {
291299
292300
Return 0 if command completed successfully.
293301
*/
294-
static int
302+
static driver_return_code_t
295303
run_mmc_cmd_win32( void *p_user_data, unsigned int i_timeout_ms,
296304
unsigned int i_cdb, const mmc_cdb_t *p_cdb,
297305
cdio_mmc_direction_t e_direction,
@@ -382,7 +390,7 @@ free_win32 (void *p_user_data)
382390
Reads an audio device into data starting from lsn.
383391
Returns 0 if no error.
384392
*/
385-
static int
393+
static driver_return_code_t
386394
read_audio_sectors (void *p_user_data, void *p_buf, lsn_t i_lsn,
387395
unsigned int i_blocks)
388396
{
@@ -421,7 +429,7 @@ read_data_sectors_win32 (void *p_user_data, void *p_buf, lsn_t i_lsn,
421429
Reads a single mode1 sector from cd device into data starting from
422430
lsn. Returns 0 if no error.
423431
*/
424-
static int
432+
static driver_return_code_t
425433
read_mode1_sector_win32 (void *p_user_data, void *p_buf, lsn_t lsn,
426434
bool b_form2)
427435
{
@@ -453,7 +461,7 @@ read_mode1_sector_win32 (void *p_user_data, void *p_buf, lsn_t lsn,
453461
from lsn.
454462
Returns 0 if no error.
455463
*/
456-
static int
464+
static driver_return_code_t
457465
read_mode1_sectors_win32 (void *p_user_data, void *p_buf, lsn_t lsn,
458466
bool b_form2, unsigned int nblocks)
459467
{
@@ -483,7 +491,7 @@ read_mode1_sectors_win32 (void *p_user_data, void *p_buf, lsn_t lsn,
483491
Reads a single mode2 sector from cd device into data starting
484492
from lsn. Returns 0 if no error.
485493
*/
486-
static int
494+
static driver_return_code_t
487495
read_mode2_sector_win32 (void *p_user_data, void *data, lsn_t lsn,
488496
bool b_form2)
489497
{
@@ -523,7 +531,7 @@ read_mode2_sector_win32 (void *p_user_data, void *data, lsn_t lsn,
523531
from lsn.
524532
Returns 0 if no error.
525533
*/
526-
static int
534+
static driver_return_code_t
527535
read_mode2_sectors_win32 (void *p_user_data, void *data, lsn_t lsn,
528536
bool b_form2, unsigned int i_blocks)
529537
{
@@ -554,7 +562,7 @@ get_disc_last_lsn_win32 (void *p_user_data)
554562
/*!
555563
Set the key "arg" to "value" in source device.
556564
*/
557-
static int
565+
static driver_return_code_t
558566
set_arg_win32 (void *p_user_data, const char key[], const char value[])
559567
{
560568
_img_private_t *p_env = p_user_data;
@@ -612,7 +620,7 @@ open_close_media_win32 (const char *psz_win32_drive, DWORD command_flags)
612620
#ifdef _XBOX
613621
return DRIVER_OP_UNSUPPORTED;
614622
#else
615-
MCI_OPEN_PARMS op;
623+
MCI_OPEN_PARMSA op;
616624
DWORD i_flags;
617625
int ret;
618626

lib/driver/MSWindows/win32.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,21 +134,21 @@ driver_return_code_t close_tray_win32ioctl (const char *psz_win32_drive);
134134
Reads an audio device using the DeviceIoControl method into data
135135
starting from lsn. Returns 0 if no error.
136136
*/
137-
int read_audio_sectors_win32ioctl (_img_private_t *p_obj, void *p_data, lsn_t lsn,
138-
unsigned int nblocks);
137+
driver_return_code_t read_audio_sectors_win32ioctl (_img_private_t *p_obj,
138+
void *p_data, lsn_t lsn, unsigned int nblocks);
139139
/*!
140140
Reads a single mode2 sector using the DeviceIoControl method into
141141
data starting from lsn. Returns 0 if no error.
142142
*/
143-
int read_mode2_sector_win32ioctl (_img_private_t *p_env, void *p_data,
144-
lsn_t lsn, bool b_form2);
143+
driver_return_code_t read_mode2_sector_win32ioctl (_img_private_t *p_env,
144+
void *p_data, lsn_t lsn, bool b_form2);
145145

146146
/*!
147147
Reads a single mode1 sector using the DeviceIoControl method into
148148
data starting from lsn. Returns 0 if no error.
149149
*/
150-
int read_mode1_sector_win32ioctl (_img_private_t *p_env, void *p_data,
151-
lsn_t lsn, bool b_form2);
150+
driver_return_code_t read_mode1_sector_win32ioctl (_img_private_t *p_env,
151+
void *p_data, lsn_t lsn, bool b_form2);
152152

153153
const char *is_cdrom_win32ioctl (const char drive_letter);
154154

@@ -167,7 +167,7 @@ const char *is_cdrom_win32ioctl (const char drive_letter);
167167
168168
Return 0 if command completed successfully.
169169
*/
170-
int run_mmc_cmd_win32ioctl( void *p_user_data,
170+
driver_return_code_t run_mmc_cmd_win32ioctl( void *p_user_data,
171171
unsigned int i_timeout,
172172
unsigned int i_cdb,
173173
const mmc_cdb_t * p_cdb,

lib/driver/MSWindows/win32_ioctl.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
#define windows_error(loglevel,i_err) { \
7979
char error_msg[80]; \
8080
long int count; \
81-
count = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, \
81+
count = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, \
8282
NULL, i_err, MAKELANGID(LANG_NEUTRAL, \
8383
SUBLANG_DEFAULT), \
8484
error_msg, sizeof(error_msg), NULL); \
@@ -377,7 +377,7 @@ close_tray_win32ioctl (const char *psz_win32_drive)
377377
dw_access_flags = GENERIC_READ|GENERIC_WRITE; /* add gen write on W2k/XP */
378378
else dw_access_flags = GENERIC_READ;
379379

380-
h_device_handle = CreateFile( psz_win32_drive,
380+
h_device_handle = CreateFileA( psz_win32_drive,
381381
dw_access_flags,
382382
FILE_SHARE_READ | FILE_SHARE_WRITE,
383383
NULL,
@@ -471,7 +471,7 @@ set_scsi_tuple_win32ioctl(_img_private_t *env)
471471
Return DRIVER_OP_SUCCESS if command completed successfully.
472472
*/
473473
#ifdef USE_PASSTHROUGH_DIRECT
474-
int
474+
driver_return_code_t
475475
run_mmc_cmd_win32ioctl( void *p_user_data,
476476
unsigned int u_timeout_ms,
477477
unsigned int u_cdb, const mmc_cdb_t * p_cdb,
@@ -568,7 +568,7 @@ run_mmc_cmd_win32ioctl( void *p_user_data,
568568
return rc;
569569
}
570570
#else
571-
int
571+
driver_return_code_t
572572
run_mmc_cmd_win32ioctl( void *p_user_data,
573573
unsigned int u_timeout_ms,
574574
unsigned int u_cdb, const mmc_cdb_t * p_cdb,
@@ -791,7 +791,7 @@ is_cdrom_win32ioctl(const char c_drive_letter)
791791
sz_win32_drive[2]='\\';
792792
sz_win32_drive[3]='\0';
793793

794-
uDriveType = GetDriveType(sz_win32_drive);
794+
uDriveType = GetDriveTypeA(sz_win32_drive);
795795

796796
switch(uDriveType) {
797797
case DRIVE_CDROM: {
@@ -839,7 +839,7 @@ read_audio_sectors_win32ioctl (_img_private_t *p_env, void *data, lsn_t lsn,
839839
Reads a single raw sector using the DeviceIoControl method into
840840
data starting from lsn. Returns 0 if no error.
841841
*/
842-
static int
842+
static driver_return_code_t
843843
read_raw_sector (_img_private_t *p_env, void *p_buf, lsn_t lsn)
844844
{
845845
mmc_cdb_t cdb = {{0, }};
@@ -861,7 +861,7 @@ read_raw_sector (_img_private_t *p_env, void *p_buf, lsn_t lsn)
861861
Reads a single mode2 sector using the DeviceIoControl method into
862862
data starting from lsn. Returns 0 if no error.
863863
*/
864-
int
864+
driver_return_code_t
865865
read_mode2_sector_win32ioctl (_img_private_t *p_env, void *p_data,
866866
lsn_t lsn, bool b_form2)
867867
{
@@ -882,7 +882,7 @@ read_mode2_sector_win32ioctl (_img_private_t *p_env, void *p_data,
882882
Reads a single mode2 sector using the DeviceIoControl method into
883883
data starting from lsn. Returns 0 if no error.
884884
*/
885-
int
885+
driver_return_code_t
886886
read_mode1_sector_win32ioctl (_img_private_t *env, void *data,
887887
lsn_t lsn, bool b_form2)
888888
{
@@ -962,7 +962,7 @@ init_win32ioctl (_img_private_t *env)
962962
"\\\\.\\%c:",
963963
env->gen.source_name[len-2] );
964964

965-
env->h_device_handle = CreateFile( psz_win32_drive,
965+
env->h_device_handle = CreateFileA( psz_win32_drive,
966966
dw_access_flags,
967967
FILE_SHARE_READ | FILE_SHARE_WRITE,
968968
NULL,
@@ -974,7 +974,7 @@ init_win32ioctl (_img_private_t *env)
974974
{
975975
/* No good. try toggle write. */
976976
dw_access_flags ^= GENERIC_WRITE;
977-
env->h_device_handle = CreateFile( psz_win32_drive,
977+
env->h_device_handle = CreateFileA( psz_win32_drive,
978978
dw_access_flags,
979979
FILE_SHARE_READ,
980980
NULL,

lib/driver/_cdio_generic.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,16 @@
5151
#include "_cdio_stdio.h"
5252
#include "filemode.h"
5353

54+
#if defined(_MSC_VER)
55+
#include <io.h>
56+
#endif
57+
5458
#ifndef PATH_MAX
5559
#define PATH_MAX 4096
5660
#endif
5761

5862
/* If available and LFS is enabled, try to use lseek64 */
5963
#if defined(HAVE_LSEEK64) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
60-
#if defined(_MSC_VER)
61-
#include <io.h>
62-
#endif
6364
#define CDIO_LSEEK lseek64
6465
#else
6566
#define CDIO_LSEEK lseek

0 commit comments

Comments
 (0)