summaryrefslogtreecommitdiff
path: root/audio/sound-juicer/files/patch-src::sj-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/sound-juicer/files/patch-src::sj-util.c')
-rw-r--r--audio/sound-juicer/files/patch-src::sj-util.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/audio/sound-juicer/files/patch-src::sj-util.c b/audio/sound-juicer/files/patch-src::sj-util.c
new file mode 100644
index 000000000000..ac2bcfbd80a6
--- /dev/null
+++ b/audio/sound-juicer/files/patch-src::sj-util.c
@@ -0,0 +1,85 @@
+--- src/sj-util.c.orig Wed Jan 7 20:38:00 2004
++++ src/sj-util.c Fri Jan 23 10:48:36 2004
+@@ -120,6 +120,9 @@
+ gtk_widget_destroy (dialog);
+ goto done;
+ }
++#ifdef __FreeBSD__
++ ioctl (fd, CDIOCALLOW);
++#endif
+ result = ioctl (fd, CDROMEJECT);
+ if (result == -1) {
+ GtkWidget *dialog;
+@@ -148,21 +151,33 @@
+ tray_is_opened (const char *device)
+ {
+ int fd, status;
+-
++
++#if defined(__linux__)
+ fd = open (device, O_RDONLY | O_NONBLOCK | O_EXCL);
+ if (fd < 0) {
+ return FALSE;
+ }
+-
++
+ status = ioctl (fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
++ close (fd);
+ if (status < 0) {
+- close (fd);
+ return FALSE;
+ }
+
+- close (fd);
+-
+ return status == CDS_TRAY_OPEN;
++#elif defined(__FreeBSD__)
++ struct ioc_toc_header h;
++
++ fd = open (device, O_RDONLY | O_NONBLOCK | O_EXCL);
++ if (fd < 0) {
++ return FALSE;
++ }
++
++ status = ioctl (fd, CDIOREADTOCHEADER, &h);
++ close (fd);
++
++ return status < 0;
++#endif
+ }
+
+ gboolean is_audio_cd (const char *device)
+@@ -170,6 +185,10 @@
+ CDMediaType type;
+ int fd, status;
+
++ if (tray_is_opened (device)) {
++ return FALSE;
++ }
++
+ type = guess_media_type (device);
+ switch (type) {
+ case CD_MEDIA_TYPE_CD:
+@@ -189,15 +208,18 @@
+ return FALSE;
+ }
+
++#if defined(__linux__)
+ status = ioctl (fd, CDROM_DISC_STATUS, CDSL_CURRENT);
++ close (fd);
+ if (status < 0) {
+- close (fd);
+ return FALSE;
+ }
+-
+- close (fd);
+-
+ return status == CDS_AUDIO;
++#elif defined (__FreeBSD__)
++ return TRUE;
++#else
++ return TRUE;
++#endif
+ }
+
+ /* Pass NULL to use g_free */