]> Kevux Git Server - fll/commitdiff
Update: f_file project.
authorKevin Day <thekevinday@gmail.com>
Sun, 2 Jan 2022 04:03:24 +0000 (22:03 -0600)
committerKevin Day <thekevinday@gmail.com>
Sun, 2 Jan 2022 04:05:54 +0000 (22:05 -0600)
Now that I am moving towards using pointer constants (sch as "int * const"), I can move many of the parameters to the left side.
I believe this sufficiently follows the pattern of having constants on the left and editables on the right even though the data pointed to can be edited.
I feel this allows me to relax the compromise I originally made when following this design paradigm.

level_0/f_file/c/file-common.h
level_0/f_file/c/file.c
level_0/f_file/c/file.h
level_0/f_file/c/private-file.c
level_0/f_file/c/private-file.h

index e98d0b58a47f6a5a57693f785a99b5aec133c075..0cc7ef4999f717e8d5af751618297adb16a7752e 100644 (file)
@@ -17,12 +17,16 @@ extern "C" {
 #endif
 
 /**
- * Provide common file-typ specific data types.
+ * Provide file defaults.
+ *
+ * F_file_default_*:
+ *   - read_size:  Default read size in bytes.
+ *   - write_size: Default write size in bytes.
  */
-#ifndef _di_f_file_types_
-  #define F_file_default_read_size_d  8192 // default to 8k read sizes. // @fixme rename and move into _di_f_file_type_
-  #define F_file_default_write_size_d 8192 // default to 8k write sizes. // @fixme rename and move into _di_f_file_type_
-#endif // _di_f_file_types_
+#ifndef _di_f_file_defaults_
+  #define F_file_default_read_size_d  8192
+  #define F_file_default_write_size_d 8192
+#endif // _di_f_file_defaults_
 
 /**
  * Provide macros for file-seek operations.
@@ -30,11 +34,11 @@ extern "C" {
  * The fseek() function parameters can be confusing, so provide a hopefully more readibly code via these macros.
  *
  * macro_f_file_seek_*:
- * - begin: sets the file pointer from this many bytes from the beginning of the file.
- * - data:  sets the file pointer from this many bytes from the end of the file, relative to the next data.
- * - end:   sets the file pointer from this many bytes from the end of the file.
- * - hole:  sets the file pointer from this many bytes from the end of the file, relative to the next hole.
- * - to:    sets the file pointer from this many bytes relative to the current position.
+ *   - begin: sets the file pointer from this many bytes from the beginning of the file.
+ *   - data:  sets the file pointer from this many bytes from the end of the file, relative to the next data.
+ *   - end:   sets the file pointer from this many bytes from the end of the file.
+ *   - hole:  sets the file pointer from this many bytes from the end of the file, relative to the next hole.
+ *   - to:    sets the file pointer from this many bytes relative to the current position.
  */
 #ifndef _di_f_file_seeks_
   #define macro_f_file_seek_begin(file, bytes) fseek(file, bytes, SEEK_SET)
index 23853c12a475c2e726c813af2af08bb0d6a5fcac..eec25d12a8f987469ae8f8e8a2781ffa156593cd 100644 (file)
@@ -84,14 +84,22 @@ extern "C" {
 #endif // _di_f_file_clone_
 
 #ifndef _di_f_file_close_
-  f_status_t f_file_close(int *id) {
-    return private_f_file_close(F_false, id);
+  f_status_t f_file_close(int * const id) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!id) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return private_f_file_close(id, F_false);
   }
 #endif // _di_f_file_close_
 
 #ifndef _di_f_file_close_flush_
-  f_status_t f_file_close_flush(int *id) {
-    return private_f_file_close(F_true, id);
+  f_status_t f_file_close_flush(int * const id) {
+    #ifndef _di_level_0_parameter_checking_
+      if (!id) return F_status_set_error(F_parameter);
+    #endif // _di_level_0_parameter_checking_
+
+    return private_f_file_close(id, F_true);
   }
 #endif // _di_f_file_close_flush_
 
@@ -1893,7 +1901,7 @@ extern "C" {
     }
 
     if (complete) {
-      return private_f_file_close(F_true, &file->id);
+      return private_f_file_close(&file->id, F_true);
     }
 
     return F_none;
index 27c5f2b7c1428d248f40f1fe439828940a186207..e0885bd457b5ed5389d006d33319dedc90fcd447 100644 (file)
@@ -145,7 +145,7 @@ extern "C" {
  * @see fclose()
  */
 #ifndef _di_f_file_close_
-  extern f_status_t f_file_close(int *id);
+  extern f_status_t f_file_close(int * const id);
 #endif // _di_f_file_close_
 
 /**
@@ -170,7 +170,7 @@ extern "C" {
  * @see fclose()
  */
 #ifndef _di_f_file_close_flush_
-  extern f_status_t f_file_close_flush(int *id);
+  extern f_status_t f_file_close_flush(int * const id);
 #endif // _di_f_file_close_flush_
 
 /**
index 0d9d8580bc628cbe3a0ca9f6637d188e3ef5860d..2353a47062daab1da1c6927c7b9c964879a26c82 100644 (file)
@@ -6,9 +6,9 @@ extern "C" {
 #endif
 
 #if !defined(_di_f_file_close_) || !defined(_di_f_file_copy_) || !defined(_di_f_file_stream_close_)
-  f_status_t private_f_file_close(const bool flush, int *id) {
+  f_status_t private_f_file_close(int * const id, const bool flush) {
 
-    if (id == 0 || *id == -1) {
+    if (*id == -1) {
       return F_none;
     }
 
@@ -53,7 +53,8 @@ extern "C" {
     status = private_f_file_open(destination, 0, &file_destination);
 
     if (F_status_is_error(status)) {
-      private_f_file_close(F_true, &file_source.id);
+      private_f_file_close(&file_source.id, F_true);
+
       return status;
     }
 
@@ -68,15 +69,15 @@ extern "C" {
       size_write = write(file_destination.id, buffer, size_read);
 
       if (size_write < 0 || size_write != size_read) {
-        private_f_file_close(F_true, &file_destination.id);
-        private_f_file_close(F_true, &file_source.id);
+        private_f_file_close(&file_destination.id, F_true);
+        private_f_file_close(&file_source.id, F_true);
 
         return F_status_set_error(F_file_write);
       }
     } // while
 
-    private_f_file_close(F_true, &file_destination.id);
-    private_f_file_close(F_true, &file_source.id);
+    private_f_file_close(&file_destination.id, F_true);
+    private_f_file_close(&file_source.id, F_true);
 
     if (size_read < 0) {
       return F_status_set_error(F_file_read);
@@ -101,7 +102,8 @@ extern "C" {
     status = private_f_file_open_at(at_id, destination, 0, &file_destination);
 
     if (F_status_is_error(status)) {
-      private_f_file_close(F_true, &file_source.id);
+      private_f_file_close(&file_source.id, F_true);
+
       return status;
     }
 
@@ -116,15 +118,15 @@ extern "C" {
       size_write = write(file_destination.id, buffer, size_read);
 
       if (size_write < 0 || size_write != size_read) {
-        private_f_file_close(F_true, &file_destination.id);
-        private_f_file_close(F_true, &file_source.id);
+        private_f_file_close(&file_destination.id, F_true);
+        private_f_file_close(&file_source.id, F_true);
 
         return F_status_set_error(F_file_write);
       }
     } // while
 
-    private_f_file_close(F_true, &file_destination.id);
-    private_f_file_close(F_true, &file_source.id);
+    private_f_file_close(&file_destination.id, F_true);
+    private_f_file_close(&file_source.id, F_true);
 
     if (size_read < 0) {
       return F_status_set_error(F_file_read);
@@ -148,7 +150,7 @@ extern "C" {
     const f_status_t status = private_f_file_open(path, mode, &file);
 
     if (file.id != -1) {
-      return private_f_file_close(F_true, &file.id);
+      return private_f_file_close(&file.id, F_true);
     }
 
     return status;
@@ -169,7 +171,7 @@ extern "C" {
     const f_status_t status = private_f_file_open_at(at_id, path, mode, &file);
 
     if (file.id != -1) {
-      return private_f_file_close(F_true, &file.id);
+      return private_f_file_close(&file.id, F_true);
     }
 
     return status;
index b45e359a721500f048a7ba9681d54c24fc978824..45cfa13d869e9d8f76a65ed7a1ef893c2ec89c77 100644 (file)
@@ -20,11 +20,12 @@ extern "C" {
  *
  * Intended to be shared to each of the different implementation variations.
  *
+ * @param id
+ *   The file descriptor.
+ *   The value gets set to -1.
  * @param flush
  *   If TRUE, then perform flush before closing.
  *   If FALSE, then do not perform flush before closing.
- * @param id
- *   The file descriptor.
  *
  * @return
  *   F_none on success.
@@ -43,7 +44,7 @@ extern "C" {
  * @see f_file_stream_close()
  */
 #if !defined(_di_f_file_close_) || !defined(_di_f_file_copy_) || !defined(_di_f_file_stream_close_)
-  extern f_status_t private_f_file_close(const bool flush, int *id) F_attribute_visibility_internal_d;
+  extern f_status_t private_f_file_close(int * const id, const bool flush) F_attribute_visibility_internal_d;
 #endif // !defined(_di_f_file_close_) || !defined(_di_f_file_copy_) || !defined(_di_f_file_stream_close_)
 
 /**