]> sigrok.org Git - libserialport.git/blobdiff - serialport.c
linux: Check for BOTHER macro at configure time.
[libserialport.git] / serialport.c
index 4dc1b83d0146917fcfc5927db51df905645351f5..4f42740a2388fe398034f13722e3aaaa9f4f2121 100644 (file)
@@ -402,7 +402,7 @@ SP_API enum sp_return sp_open(struct sp_port *port, enum sp_mode flags)
 
        CHECK_PORT();
 
-       if (flags > (SP_MODE_READ | SP_MODE_WRITE))
+       if (flags > SP_MODE_READ_WRITE)
                RETURN_ERROR(SP_ERR_ARG, "Invalid flags");
 
        DEBUG_FMT("Opening port %s", port->name);
@@ -479,7 +479,7 @@ SP_API enum sp_return sp_open(struct sp_port *port, enum sp_mode flags)
        int flags_local = O_NONBLOCK | O_NOCTTY;
 
        /* Map 'flags' to the OS-specific settings. */
-       if (flags & (SP_MODE_READ | SP_MODE_WRITE))
+       if ((flags & SP_MODE_READ_WRITE) == SP_MODE_READ_WRITE)
                flags_local |= O_RDWR;
        else if (flags & SP_MODE_READ)
                flags_local |= O_RDONLY;
@@ -618,11 +618,11 @@ SP_API enum sp_return sp_flush(struct sp_port *port, enum sp_buffer buffers)
                RETURN_FAIL("PurgeComm() failed");
 #else
        int flags = 0;
-       if (buffers & SP_BUF_BOTH)
+       if (buffers == SP_BUF_BOTH)
                flags = TCIOFLUSH;
-       else if (buffers & SP_BUF_INPUT)
+       else if (buffers == SP_BUF_INPUT)
                flags = TCIFLUSH;
-       else if (buffers & SP_BUF_OUTPUT)
+       else if (buffers == SP_BUF_OUTPUT)
                flags = TCOFLUSH;
 
        /* Returns 0 upon success, -1 upon failure. */