]> Kevux Git Server - fll/commitdiff
Update: Minor clean ups and have f_socket_connect() return F_file_descriptor.
authorKevin Day <thekevinday@gmail.com>
Thu, 14 Sep 2023 04:28:27 +0000 (23:28 -0500)
committerKevin Day <thekevinday@gmail.com>
Thu, 14 Sep 2023 04:28:27 +0000 (23:28 -0500)
The f_socket_connect() should return F_file_descriptor when socket.id is in use.
Add appropriate unit tests.

level_0/f_file/c/file.h
level_0/f_socket/c/socket.c
level_0/f_socket/c/socket.h
level_0/f_socket/tests/unit/c/test-socket-connect.c
level_0/f_socket/tests/unit/c/test-socket-connect.h
level_0/f_socket/tests/unit/c/test-socket.c

index a84f241704960245286c7f62bf8cfbdc330293de..8f12018becccd9a9f686677cd80445f12ad8ef75 100644 (file)
@@ -1467,7 +1467,7 @@ extern "C" {
  * @param path
  *   The path file name.
  * @param mode
- *   The file mode to open in.
+ *   The file mode permission to open in (such as F_file_mode_all_rwx_d).
  * @param file
  *   The data related to the file being opened.
  *   This will be updated with the file descriptor.
index fdff250bd7a1f4a90cf3131d9b8816669639dc35..08ab88a3607fa411d8a0591e7c10ecf99f053bf4 100644 (file)
@@ -176,6 +176,8 @@ extern "C" {
 #ifndef _di_f_socket_connect_
   f_status_t f_socket_connect(const f_socket_t socket) {
 
+    if (socket.id != -1) return F_file_descriptor;
+
     if (connect(socket.id, (struct sockaddr *) &socket.address, socket.length) == -1) {
       if (errno == EACCES) return F_status_set_error(F_access_denied);
       if (errno == EADDRINUSE) return F_status_set_error(F_busy_address);
index 4abc7b44953e20bd7600e67334569c80714dc910..ae9dfbfbd53d9863bb7082cecdc8702d4f6a0301 100644 (file)
@@ -251,6 +251,7 @@ extern "C" {
  *
  * @return
  *   F_okay on success.
+ *   F_file_descriptor if socket file descriptor is already connected (socket.id != -1).
  *
  *   F_access_denied (with error bit) on access denied.
  *   F_available_not_address (with error bit) if address is unavailable (is non-existent or not local).
index f4d32ff4ce149711cb1cbb2422905428c8eba7cf..7612a91fce4f82ba02a8605477955318db97c177 100644 (file)
@@ -62,6 +62,18 @@ void test__f_socket_connect__fails(void **state) {
   } // for
 }
 
+void test__f_socket_connect__returns_file_descriptor(void **state) {
+
+  {
+    f_socket_t socket = f_socket_t_initialize;
+    socket.id = 1;
+
+    const f_status_t status = f_socket_connect(socket);
+
+    assert_int_equal(status, F_file_descriptor);
+  }
+}
+
 void test__f_socket_connect__works(void **state) {
 
   f_socket_t socket = f_socket_t_initialize;
index ab9042608244111e01a75a8367e735f1904e7395..b807476c7fecbb12127dfadcbd22d3dafa68b2e1 100644 (file)
 extern void test__f_socket_connect__fails(void **state);
 
 /**
+ * Test that the function returns F_file_descriptor_not.
+ *
+ * @see f_socket_connect()
+ */
+extern void test__f_socket_connect__returns_file_descriptor(void **state);
+
+/**
  * Test that function works.
  *
  * @see f_socket_connect()
index 4273decd32b39561ba4adeef2ef4113875b9f481..f9740fdfac8a7fe6526ac50c75da934b71bcbdf7 100644 (file)
@@ -35,6 +35,7 @@ int main(void) {
     cmocka_unit_test(test__f_socket_bind_local__works),
 
     cmocka_unit_test(test__f_socket_connect__fails),
+    cmocka_unit_test(test__f_socket_connect__returns_file_descriptor),
     cmocka_unit_test(test__f_socket_connect__works),
 
     cmocka_unit_test(test__f_socket_create__fails),