]> git.tdb.fi Git - libs/core.git/commitdiff
Add a helper function for adjusting mode flags
authorMikko Rasa <tdb@tdb.fi>
Sat, 2 Dec 2017 14:32:13 +0000 (16:32 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 2 Dec 2017 14:32:13 +0000 (16:32 +0200)
source/io/file.cpp
source/io/mode.h
source/io/pipe.cpp
source/io/serial.cpp

index 1b4a73884d7b5891a43c461d79901bd7e9d1a147..d44dad3b751d8a5550a153ea07114b8da80c3c6d 100644 (file)
@@ -28,7 +28,7 @@ File::~File()
 
 void File::set_block(bool b)
 {
-       mode = b?(mode&~M_NONBLOCK):(mode|M_NONBLOCK);
+       adjust_mode(mode, M_NONBLOCK, !b);
        sys_set_blocking(handle, b);
 }
 
index 706609f03f4bb7c5c8b40c111b1da11f02d4581d..2e7527dc5202d3158895f8c20feb3f90236b17dd 100644 (file)
@@ -25,6 +25,9 @@ inline Mode operator&(Mode m, Mode n)
 inline Mode operator~(Mode m)
 { return Mode(~static_cast<int>(m)); }
 
+inline void adjust_mode(Mode &m, Mode f, bool b)
+{ m = b ? (m|f) : (m&~f); }
+
 
 class invalid_access: public std::logic_error
 {
index 0a72a80068da4d9ac686fdb8cd3216801e316725..444f8c72a3c3bcc986935f698c3d4b62e61b1a37 100644 (file)
@@ -42,10 +42,7 @@ void Pipe::set_mode(Mode m)
 
 void Pipe::set_block(bool b)
 {
-       mode = (mode&~M_NONBLOCK);
-       if(b)
-               mode = (mode|M_NONBLOCK);
-
+       adjust_mode(mode, M_NONBLOCK, !b);
        sys_set_blocking(read_handle, b);
        sys_set_blocking(write_handle, b);
 }
index cf2c6952bf3d7e97eb52eb0102f5253549aa03da..2b3458a3eb0ea293563a522f6519ef8467ed76dd 100644 (file)
@@ -42,7 +42,7 @@ void Serial::close()
 
 void Serial::set_block(bool b)
 {
-       mode = b?(mode&~M_NONBLOCK):(mode|M_NONBLOCK);
+       adjust_mode(mode, M_NONBLOCK, !b);
        sys_set_blocking(handle, b);
 }