--- os_freebsd.c.orig	Sun Aug  7 00:27:11 2005
+++ os_freebsd.c	Sun Aug  7 00:27:40 2005
@@ -361,9 +361,9 @@
     unsigned char low,high;
     
 #ifdef IOCATAREQUEST
-    if ((retval=ioctl(con->device, IOCATAREQUEST, &request)))
+    if ((retval=ioctl(con->device, IOCATAREQUEST, &request)) || request.error)
 #else
-    if ((retval=ioctl(con->atacommand, IOCATA, &iocmd)))
+    if ((retval=ioctl(con->atacommand, IOCATA, &iocmd)) || request.error)
 #endif
       return -1;
 
@@ -397,13 +397,11 @@
   }
 
 #ifdef IOCATAREQUEST
-  if ((retval=ioctl(con->device, IOCATAREQUEST, &request))) {
+  if ((retval=ioctl(con->device, IOCATAREQUEST, &request)) || request.error)
 #else
-  if ((retval=ioctl(con->atacommand, IOCATA, &iocmd))) {
+  if ((retval=ioctl(con->atacommand, IOCATA, &iocmd)) || request.error)
 #endif
-    perror("Failed command: ");
     return -1;
-  }
   // 
   if (copydata)
     memcpy(data, buff, 512);
