$NetBSD: patch-af,v 1.4 2012/05/14 07:35:02 dholland Exp $ - need limits.h, or since this is C++, for INT_MAX, fails on linux - add dragonfly to the ifdef circus --- src/Unix/sys_unix.cpp.orig 2005-11-24 17:23:43.000000000 +0000 +++ src/Unix/sys_unix.cpp @@ -18,6 +18,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include + #include "sysdeps.h" #include @@ -37,7 +39,7 @@ #include #endif -#if defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) #include #endif @@ -64,7 +66,7 @@ struct file_handle { #if defined(__linux__) int cdrom_cap; // CD-ROM capability flags (only valid if is_cdrom is true) -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) struct ioc_capability cdrom_cap; #elif defined(__APPLE__) && defined(__MACH__) char *ioctl_name; // For CDs on OS X - a device for special ioctls @@ -220,7 +222,7 @@ void SysAddCDROMPrefs(void) // Until I can convince the other guys that my Darwin code is useful, // we just do nothing (it is safe to have no cdrom device) #endif -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) PrefsAddString("cdrom", "/dev/cd0c"); #endif } @@ -240,7 +242,7 @@ void SysAddSerialPrefs(void) PrefsAddString("seriala", "/dev/tts/0"); PrefsAddString("serialb", "/dev/tts/1"); } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) PrefsAddString("seriala", "/dev/cuaa0"); PrefsAddString("serialb", "/dev/cuaa1"); #elif defined(__NetBSD__) @@ -302,7 +304,7 @@ static bool is_drive_mounted(const char void *Sys_open(const char *name, bool read_only) { bool is_file = strncmp(name, "/dev/", 5) != 0; -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) // SCSI IDE bool is_cdrom = strncmp(name, "/dev/cd", 7) == 0 || strncmp(name, "/dev/acd", 8) == 0; #else @@ -351,7 +353,7 @@ void *Sys_open(const char *name, bool re } // Open file/device -#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) int fd = open(name, (read_only ? O_RDONLY : O_RDWR) | (is_cdrom ? O_NONBLOCK : 0)); #else int fd = open(name, read_only ? O_RDONLY : O_RDWR); @@ -394,7 +396,7 @@ void *Sys_open(const char *name, bool re #else fh->cdrom_cap = 0; #endif -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) fh->is_floppy = ((st.st_rdev >> 16) == 2); #ifdef CDIOCCAPABILITY if (is_cdrom) { @@ -557,7 +559,7 @@ void SysEject(void *arg) close(fh->fd); // Close and reopen so the driver will see the media change fh->fd = open(fh->name, O_RDONLY | O_NONBLOCK); } -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) if (fh->is_floppy) { fsync(fh->fd); } else if (fh->is_cdrom) { @@ -697,7 +699,7 @@ bool SysIsDiskInserted(void *arg) #endif cdrom_tochdr header; return ioctl(fh->fd, CDROMREADTOCHDR, &header) == 0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) } else if (fh->is_floppy) { return false; //!! } else if (fh->is_cdrom) { @@ -805,7 +807,7 @@ bool SysCDReadTOC(void *arg, uint8 *toc) extern bool DarwinCDReadTOC(char *name, uint8 *toc); return DarwinCDReadTOC(fh->name, toc); -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__DragonFly__) uint8 *p = toc + 2; // Header @@ -916,7 +918,7 @@ bool SysCDGetPosition(void *arg, uint8 * *pos++ = chan.cdsc_reladdr.msf.second; *pos++ = chan.cdsc_reladdr.msf.frame; return true; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) struct ioc_read_subchannel chan; chan.data_format = CD_MSF_FORMAT; chan.address_format = CD_MSF_FORMAT; @@ -968,7 +970,7 @@ bool SysCDPlay(void *arg, uint8 start_m, play.cdmsf_sec1 = end_s; play.cdmsf_frame1 = end_f; return ioctl(fh->fd, CDROMPLAYMSF, &play) == 0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) struct ioc_play_msf play; play.start_m = start_m; play.start_s = start_s; @@ -998,7 +1000,7 @@ bool SysCDPause(void *arg) if (fh->is_cdrom) { #if defined(__linux__) return ioctl(fh->fd, CDROMPAUSE) == 0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) return ioctl(fh->fd, CDIOCPAUSE) == 0; #else return false; @@ -1021,7 +1023,7 @@ bool SysCDResume(void *arg) if (fh->is_cdrom) { #if defined(__linux__) return ioctl(fh->fd, CDROMRESUME) == 0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) return ioctl(fh->fd, CDIOCRESUME) == 0; #else return false; @@ -1044,7 +1046,7 @@ bool SysCDStop(void *arg, uint8 lead_out if (fh->is_cdrom) { #if defined(__linux__) return ioctl(fh->fd, CDROMSTOP) == 0; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) return ioctl(fh->fd, CDIOCSTOP) == 0; #else return false; @@ -1085,7 +1087,7 @@ void SysCDSetVolume(void *arg, uint8 lef vol.channel0 = vol.channel2 = left; vol.channel1 = vol.channel3 = right; ioctl(fh->fd, CDROMVOLCTRL, &vol); -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) struct ioc_vol vol; vol.vol[0] = vol.vol[2] = left; vol.vol[1] = vol.vol[3] = right; @@ -1112,7 +1114,7 @@ void SysCDGetVolume(void *arg, uint8 &le ioctl(fh->fd, CDROMVOLREAD, &vol); left = vol.channel0; right = vol.channel1; -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) struct ioc_vol vol; ioctl(fh->fd, CDIOCGETVOL, &vol); left = vol.vol[0];