]> Chaos Git - corbenik/ctrulib.git/commitdiff
Add errno to error cases for FIONBIO.
authormtheall <pigman46@gmail.com>
Fri, 21 Nov 2014 17:06:32 +0000 (11:06 -0600)
committermtheall <pigman46@gmail.com>
Fri, 21 Nov 2014 17:06:32 +0000 (11:06 -0600)
libctru/source/services/soc/soc_ioctl.c

index 416a443cec94b661a5ea6853444db5a651ddfb8a..a79d58d4eda98165a1eed53f2d202ec40483f2a0 100644 (file)
@@ -16,15 +16,23 @@ int ioctl(int fd, int request, ...)
        switch(request) {
        case FIONBIO:
                value = va_arg(ap, int*);
-               if(value == NULL) ret = -1;
-               else if(*value) {
-                       flags = fcntl(fd, F_GETFL, 0);
-                       ret = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
+               if(value == NULL) {
+                       errno = EFAULT;
+                       ret = -1;
                }
-               else {
-                       flags = fcntl(fd, F_GETFL, 0);
-                       ret = fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
+
+               flags = fcntl(fd, F_GETFL, 0);
+               if(flags == -1) {
+                       errno = SOCU_GetError();
+                       return -1;
                }
+
+               if(*value) ret = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
+               else       ret = fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
+
+               if(ret != 0)
+                       errno = SOCU_GetError();
+
                break;
 
        default: