]> Kevux Git Server - fll/commitdiff
Update: Reduce NULL parameter requirements in f_file_select() regarding timeout.
authorKevin Day <kevin@kevux.org>
Mon, 26 Jun 2023 23:12:06 +0000 (18:12 -0500)
committerKevin Day <kevin@kevux.org>
Mon, 26 Jun 2023 23:12:06 +0000 (18:12 -0500)
The man pages state that the read, write, and except can all be NULL if timeout is not NULL.
Change the behavior of f_file_select() to allow this.

level_0/f_file/c/file.c
level_0/f_file/c/file.h
level_0/f_file/tests/unit/c/test-file-select.c

index c6cbd8ca9998cb3feddb74b02cabfc11e7a7dddd..9157d3a7eb0bf8f00e35f26bdae3e664a03797a7 100644 (file)
@@ -1900,7 +1900,7 @@ extern "C" {
   f_status_t f_file_select(const int highest_plus_one, fd_set * const read, fd_set * const write, fd_set * const except, struct timeval * const timeout) {
 
     if (!highest_plus_one) return F_data_not;
-    if (!read && !write && !except) return F_data_not;
+    if (!read && !write && !except && !timeout) return F_data_not;
 
     if (select(highest_plus_one, read, write, except, timeout) == -1) {
       if (errno == EBADF) return F_status_set_error(F_file_descriptor);
index d913aeff6aac6fd090d1202aa5d5fb01a47d05be..a29487b5c642364527069688168b05b63c1729dd 100644 (file)
@@ -1985,7 +1985,7 @@ extern "C" {
  *
  * @return
  *   F_none on success.
- *   F_data_not if all three read, write, and except are NULL (having at least one is required) or when highest_plus_one is 0.
+ *   F_data_not if all of read, write, except, and timeout are NULL (having at least one is required) or when highest_plus_one is 0.
  *
  *   F_file_descriptor (with error bit) if the file descriptor is invalid.
  *   F_interrupt (with error bit) when program received an interrupt signal, halting operation.
index 14b37cace348559af4490443c3f1b1e90a19869d..2a06690bfd96849cf410f148deeaceb3771576e1 100644 (file)
@@ -137,7 +137,7 @@ void test__f_file_select__returns_data_not(void **state) {
   }
 
   {
-    const f_status_t status = f_file_select(1, 0, 0, 0, &timeout);
+    const f_status_t status = f_file_select(0, 0, 0, 0, &timeout);
 
     assert_int_equal(status, F_data_not);
   }