src/haptic/linux/SDL_syshaptic.c
branchgsoc2008_force_feedback
changeset 2496 8f840a6cdf01
parent 2495 66c02abeef0e
child 2500 5251d0510b7e
--- a/src/haptic/linux/SDL_syshaptic.c	Thu Jul 03 09:58:27 2008 +0000
+++ b/src/haptic/linux/SDL_syshaptic.c	Thu Jul 03 21:03:25 2008 +0000
@@ -37,6 +37,7 @@
 #include <fcntl.h>
 #include <linux/limits.h>
 #include <string.h>
+#include <errno.h>
 
 
 #define MAX_HAPTICS  32
@@ -88,7 +89,7 @@
    ret = 0;
 
    if (ioctl(fd, EVIOCGBIT(EV_FF, sizeof(unsigned long) * 4), features) < 0) {
-      SDL_SetError("Unable to get device's haptic abilities.");
+      SDL_SetError("Unable to get device's haptic abilities: %s", strerror(errno));
       return -1;
    }
 
@@ -212,7 +213,7 @@
 
    /* Set the effects */
    if (ioctl(fd, EVIOCGEFFECTS, &haptic->neffects) < 0) {
-      SDL_SetError("Unable to query haptic device memory.");
+      SDL_SetError("Unable to query haptic device memory: %s", strerror(errno));
       goto open_err;
    }
    haptic->effects = (struct haptic_effect *)
@@ -249,7 +250,8 @@
    /* Open the character device */
    fd = open(SDL_hapticlist[haptic->index].fname, O_RDWR, 0);
    if (fd < 0) {
-      SDL_SetError("Unable to open %s\n", SDL_hapticlist[haptic->index]);
+      SDL_SetError("Unable to open %s: %s",
+            SDL_hapticlist[haptic->index], strerror(errno));
       return -1;
    }
    
@@ -477,7 +479,7 @@
 
 
       default:
-         SDL_SetError("Unknown haptic effect type.");
+         SDL_SetError("Unknown haptic effect type");
          return -1;
    }
 
@@ -511,7 +513,7 @@
 
    /* Upload the effect */
    if (ioctl(haptic->hwdata->fd, EVIOCSFF, linux_effect) < 0) {
-      SDL_SetError("Error uploading effect to the haptic device.");
+      SDL_SetError("Error uploading effect to the haptic device: %s", strerror(errno));
       goto new_effect_err;
    }
 
@@ -543,7 +545,7 @@
 
    /* See if it can be uploaded. */
    if (ioctl(haptic->hwdata->fd, EVIOCSFF, &linux_effect) < 0) {
-      SDL_SetError("Error updating the haptic effect.");
+      SDL_SetError("Error updating the haptic effect: %s", strerror(errno));
       return -1;
    }
 
@@ -568,7 +570,7 @@
    run.value = 1;
 
    if (write(haptic->hwdata->fd, (const void*) &run, sizeof(run)) < 0) {
-      SDL_SetError("Unable to run the haptic effect.");
+      SDL_SetError("Unable to run the haptic effect: %s", strerror(errno));
       return -1;
    }
 
@@ -589,7 +591,7 @@
    stop.value = 0;
 
    if (write(haptic->hwdata->fd, (const void*) &stop, sizeof(stop)) < 0) {
-      SDL_SetError("Unable to stop the haptic effect.");
+      SDL_SetError("Unable to stop the haptic effect: %s", strerror(errno));
       return -1;
    }
 
@@ -604,7 +606,8 @@
 SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic, struct haptic_effect * effect)
 {
    if (ioctl(haptic->hwdata->fd, EVIOCRMFF, effect->hweffect->effect.id) < 0) {
-      SDL_SetError("Error removing the effect from the haptic device.");
+      SDL_SetError("Error removing the effect from the haptic device: %s",
+            strerror(errno));
    }
    SDL_free(effect->hweffect);
    effect->hweffect = NULL;
@@ -649,7 +652,7 @@
    ie.value = (0xFFFFUL * gain) / 100;
 
    if (write(haptic->hwdata->fd, &ie, sizeof(ie)) < 0) {
-      SDL_SetError("Error setting gain.");
+      SDL_SetError("Error setting gain: %s", strerror(errno));
       return -1;
    }
 
@@ -670,7 +673,7 @@
    ie.value = (0xFFFFUL * autocenter) / 100;
 
    if (write(haptic->hwdata->fd, &ie, sizeof(ie)) < 0) {
-      SDL_SetError("Error setting autocenter.");
+      SDL_SetError("Error setting autocenter: %s", strerror(errno));
       return -1;
    }