]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
maint: add function attributes to .h files
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 1 Nov 2021 05:30:38 +0000 (22:30 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 1 Nov 2021 05:36:46 +0000 (22:36 -0700)
Add _GL_ATTRIBUTE_NONNULL, _GL_ATTRIBUTE_MALLOC,
_GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_DALLOC_FREE,
_GL_ATTRIBUTE_RETURNS_NONNULL to .h files when appropriate.
* gl/lib/mbsalign.h, gl/lib/randperm.h, src/chown-core.h:
Include stdlib.h, for the benefit of _GL_ATTRIBUTE_DALLOC_FREE.
* gl/lib/randread.c (randread_free_body): New static function.
(randread_new, randread_free): Use it.
* src/copy.c (valid_options): Remove assert that is no longer
needed because it is now checked statically.

25 files changed:
gl/lib/cl-strtod.h
gl/lib/fd-reopen.h
gl/lib/heap.h
gl/lib/mbsalign.h
gl/lib/rand-isaac.h
gl/lib/randint.h
gl/lib/randperm.h
gl/lib/randread.c
gl/lib/randread.h
gl/lib/root-dev-ino.h
gl/lib/strnumcmp.h
gl/lib/xdectoint.h
gl/lib/xfts.h
src/blake2/b2sum.h
src/blake2/blake2.h
src/chown-core.h
src/cksum.h
src/copy.c
src/copy.h
src/cp-hash.h
src/expand-common.h
src/find-mount-point.h
src/force-link.h
src/operand2sig.h
src/prog-fprintf.h

index 51becd3cd6974208b0a0ecae6b6e0c2c8f595248..4f1197231de67c699a753cfc15b244f4a7bc2501 100644 (file)
@@ -1,2 +1,4 @@
-double cl_strtod (char const *, char **restrict);
-long double cl_strtold (char const *, char **restrict);
+double cl_strtod (char const *, char **restrict)
+  _GL_ATTRIBUTE_NONNULL ((1));
+long double cl_strtold (char const *, char **restrict)
+  _GL_ATTRIBUTE_NONNULL ((1));
index 105e36a31485c69a5d7c0c768fe0924b0c81521a..8f416400251952376411aa98533bc4d18b4b9f3a 100644 (file)
@@ -19,4 +19,4 @@
 
 #include <sys/types.h>
 
-int fd_reopen (int, char const *, int, mode_t);
+int fd_reopen (int, char const *, int, mode_t) _GL_ATTRIBUTE_NONNULL ();
index 4dd197133d1366258f0e2d610e5693a5abc6a747..c3be5f47e2a6a52988536d25fa8f00645448f4de 100644 (file)
 
 #include <stddef.h>
 
-struct heap *heap_alloc (int (*) (void const *, void const *), size_t);
-void heap_free (struct heap *);
-int heap_insert (struct heap *heap, void *item);
-void *heap_remove_top (struct heap *heap);
+struct heap;
+
+void heap_free (struct heap *) _GL_ATTRIBUTE_NONNULL ();
+
+struct heap *heap_alloc (int (*) (void const *, void const *), size_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (heap_free, 1)
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
+
+int heap_insert (struct heap *heap, void *item) _GL_ATTRIBUTE_NONNULL ();
+void *heap_remove_top (struct heap *heap) _GL_ATTRIBUTE_NONNULL ();
index 4fdcac4191369497de5b88f4c79166a9bfbdb93b..ef289da1a25a10948b2d0d9332a37b92b44416a9 100644 (file)
@@ -15,6 +15,7 @@
    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
 #include <stddef.h>
+#include <stdlib.h>
 
 typedef enum { MBS_ALIGN_LEFT, MBS_ALIGN_RIGHT, MBS_ALIGN_CENTER } mbs_align_t;
 
@@ -53,7 +54,10 @@ enum {
 
 size_t
 mbsalign (char const *src, char *dest, size_t dest_size,
-          size_t *width, mbs_align_t align, int flags);
+          size_t *width, mbs_align_t align, int flags)
+  _GL_ATTRIBUTE_NONNULL ();
 
 char *
-ambsalign (char const *src, size_t *width, mbs_align_t align, int flags);
+ambsalign (char const *src, size_t *width, mbs_align_t align, int flags)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE
+  _GL_ATTRIBUTE_NONNULL ();
index caa38ac3e12209748a2e33d2c3f185779e39b6cf..9484c0953f8e23361546c3578999844de61953f0 100644 (file)
@@ -59,7 +59,8 @@ struct isaac_state
     isaac_word a, b, c;                /* Extra variables */
   };
 
-void isaac_seed (struct isaac_state *);
-void isaac_refill (struct isaac_state *, isaac_word[ISAAC_WORDS]);
+void isaac_seed (struct isaac_state *) _GL_ATTRIBUTE_NONNULL ();
+void isaac_refill (struct isaac_state *, isaac_word[ISAAC_WORDS])
+  _GL_ATTRIBUTE_NONNULL ();
 
 #endif
index 75a52188d02d5ab8377bcc3af178c6645d243b7c..160152f081bd1e2e0244094fa7b89943f78d3668 100644 (file)
@@ -32,11 +32,18 @@ typedef uintmax_t randint;
 
 struct randint_source;
 
-struct randint_source *randint_new (struct randread_source *);
-struct randint_source *randint_all_new (char const *, size_t);
+void randint_free (struct randint_source *) _GL_ATTRIBUTE_NONNULL ();
+int randint_all_free (struct randint_source *) _GL_ATTRIBUTE_NONNULL ();
+struct randint_source *randint_new (struct randread_source *)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (randint_free, 1)
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_RETURNS_NONNULL;
+struct randint_source *randint_all_new (char const *, size_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (randint_all_free, 1)
+  _GL_ATTRIBUTE_NONNULL ();
 struct randread_source *randint_get_source (struct randint_source const *)
-  _GL_ATTRIBUTE_PURE;
-randint randint_genmax (struct randint_source *, randint genmax);
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE;
+randint randint_genmax (struct randint_source *, randint genmax)
+  _GL_ATTRIBUTE_NONNULL ();
 
 /* Consume random data from *S to generate a random number in the range
    0 .. CHOICES-1.  CHOICES must be nonzero.  */
@@ -46,7 +53,4 @@ randint_choose (struct randint_source *s, randint choices)
   return randint_genmax (s, choices - 1);
 }
 
-void randint_free (struct randint_source *);
-int randint_all_free (struct randint_source *);
-
 #endif
index 0a0837aa63c8267e98d2bb53f016a69f532dc555..b7efbeb11fc4b67e09d51c7d19b3791e5119b6f7 100644 (file)
@@ -1,4 +1,6 @@
 #include "randint.h"
 #include <stddef.h>
+#include <stdlib.h>
 size_t randperm_bound (size_t, size_t) _GL_ATTRIBUTE_CONST;
-size_t *randperm_new (struct randint_source *, size_t, size_t);
+size_t *randperm_new (struct randint_source *, size_t, size_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
index 6c29a62e4cd2427e6f777fc0b401d3c2fafc7361..d8c5cbaf5cb685ef328a52d778c71537df0fef92 100644 (file)
@@ -146,6 +146,17 @@ get_nonce (void *buffer, size_t bufsize)
   return true;
 }
 
+/* Body of randread_free, broken out to pacify gcc -Wmismatched-dealloc.  */
+
+static int
+randread_free_body (struct randread_source *s)
+{
+  FILE *source = s->source;
+  explicit_bzero (s, sizeof *s);
+  free (s);
+  return source ? fclose (source) : 0;
+}
+
 /* Create and initialize a random data source from NAME, or use a
    reasonable default source if NAME is null.  BYTES_BOUND is an upper
    bound on the number of bytes that will be needed.  If zero, it is a
@@ -182,7 +193,7 @@ randread_new (char const *name, size_t bytes_bound)
                            MIN (sizeof s->buf.isaac.state.m, bytes_bound)))
             {
               int e = errno;
-              randread_free (s);
+              randread_free_body (s);
               errno = e;
               return NULL;
             }
@@ -303,8 +314,5 @@ randread (struct randread_source *s, void *buf, size_t size)
 int
 randread_free (struct randread_source *s)
 {
-  FILE *source = s->source;
-  explicit_bzero (s, sizeof *s);
-  free (s);
-  return (source ? fclose (source) : 0);
+  return randread_free_body (s);
 }
index b5534f3016486645aa902683e5f9775d0ec3018d..d4151860b63c3c685ac13a9a859aca27562491bb 100644 (file)
 
 struct randread_source;
 
-struct randread_source *randread_new (char const *, size_t);
-void randread (struct randread_source *, void *, size_t);
-void randread_set_handler (struct randread_source *, void (*) (void const *));
-void randread_set_handler_arg (struct randread_source *, void const *);
-int randread_free (struct randread_source *);
+int randread_free (struct randread_source *) _GL_ATTRIBUTE_NONNULL ();
+struct randread_source *randread_new (char const *, size_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (randread_free, 1)
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
+void randread (struct randread_source *, void *, size_t)
+  _GL_ATTRIBUTE_NONNULL ();
+void randread_set_handler (struct randread_source *, void (*) (void const *))
+  _GL_ATTRIBUTE_NONNULL ();
+void randread_set_handler_arg (struct randread_source *, void const *)
+  _GL_ATTRIBUTE_NONNULL ((1));
 
 #endif
index 9cc9dad7e71f1cbc4abccd76f21c29ea23d01e8a..3f73c0ab79d50f32365cc3140c543d17dab7c37a 100644 (file)
@@ -22,7 +22,7 @@
 # include "same-inode.h"
 
 struct dev_ino *
-get_root_dev_ino (struct dev_ino *root_d_i);
+get_root_dev_ino (struct dev_ino *root_d_i) _GL_ATTRIBUTE_NONNULL ();
 
 /* These macros are common to the programs that support the
    --preserve-root and --no-preserve-root options.  */
index d7f273326140307a09adcf9e9e1e9505ef1435b4..f6a02b21cf6db33ff87893b2934d1d32fcaf803f 100644 (file)
@@ -1,2 +1,4 @@
-int strintcmp (char const *, char const *) _GL_ATTRIBUTE_PURE;
-int strnumcmp (char const *, char const *, int, int) _GL_ATTRIBUTE_PURE;
+int strintcmp (char const *, char const *)
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE;
+int strnumcmp (char const *, char const *, int, int)
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE;
index a1a381240f58bc5676bed81384233c548170a3da..e977206ce80df200423bd6a969efb20f219d2121 100644 (file)
 
 # define _DECLARE_XDECTOINT(name, type) \
   type name (char const *n_str, type min, type max, \
-             char const *suffixes, char const *err, int err_exit);
+             char const *suffixes, char const *err, int err_exit) \
+    _GL_ATTRIBUTE_NONNULL ((1, 5));
 # define _DECLARE_XNUMTOINT(name, type) \
   type name (char const *n_str, int base, type min, type max, \
-             char const *suffixes, char const *err, int err_exit);
+             char const *suffixes, char const *err, int err_exit) \
+    _GL_ATTRIBUTE_NONNULL ((1, 6));
 
 _DECLARE_XDECTOINT (xdectoimax, intmax_t)
 _DECLARE_XDECTOINT (xdectoumax, uintmax_t)
index f903f48042900936bcc591ed3c5431a7da10da00..0b129aaa4063a58aa427e55b7ceee0676eb99f25 100644 (file)
@@ -3,8 +3,10 @@
 
 FTS *
 xfts_open (char * const *, int options,
-           int (*) (const FTSENT **, const FTSENT **));
+           int (*) (const FTSENT **, const FTSENT **))
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC (fts_close, 1)
+  _GL_ATTRIBUTE_NONNULL ((1)) _GL_ATTRIBUTE_RETURNS_NONNULL;
 
 bool
 cycle_warning_required (FTS const *fts, FTSENT const *ent)
-  _GL_ATTRIBUTE_PURE;
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE;
index acf6ddc796247c9bace4d66e45bc8edc4b0f90dd..6517b258eabf8aad601bce58764f21d959982295 100644 (file)
@@ -13,7 +13,8 @@
    https://blake2.net.
 */
 
-int blake2b_stream( FILE *stream, void *resstream, size_t outbytes );
+int blake2b_stream (FILE *stream, void *resstream, size_t outbytes)
+  _GL_ATTRIBUTE_NONNULL ((1));
 typedef int ( *blake2fn )( FILE *, void *, size_t );
 #define BLAKE2S_OUTBYTES 32
 #define BLAKE2B_OUTBYTES 64
index dc4672d1d8655781d73fb9c307842a2ec638fa3b..e56879ac2b341faf05183a7bbdebf781d1562853 100644 (file)
@@ -152,7 +152,8 @@ extern "C" {
 
   int blake2b_init( blake2b_state *S, size_t outlen );
   int blake2b_init_key( blake2b_state *S, size_t outlen, const void *key, size_t keylen );
-  int blake2b_init_param( blake2b_state *S, const blake2b_param *P );
+  int blake2b_init_param (blake2b_state *S, const blake2b_param *P)
+    _GL_ATTRIBUTE_NONNULL ();
   int blake2b_update( blake2b_state *S, const void *in, size_t inlen );
   int blake2b_final( blake2b_state *S, void *out, size_t outlen );
 
index 024e717edf91ceb62966f33c2f163ace6f60fceb..bd5d37b011d1837fbb82d8f5c63dd4476de390a5 100644 (file)
@@ -19,6 +19,7 @@
 # define CHOWN_CORE_H
 
 # include "dev-ino.h"
+# include <stdlib.h>
 
 enum Change_status
 {
@@ -72,15 +73,20 @@ void
 chopt_free (struct Chown_option *);
 
 char *
-gid_to_name (gid_t) _GL_ATTRIBUTE_MALLOC;
+gid_to_name (gid_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
 
 char *
-uid_to_name (uid_t) _GL_ATTRIBUTE_MALLOC;
+uid_to_name (uid_t)
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE
+  _GL_ATTRIBUTE_RETURNS_NONNULL;
 
 bool
 chown_files (char **files, int bit_flags,
              uid_t uid, gid_t gid,
              uid_t required_uid, gid_t required_gid,
-             struct Chown_option const *chopt);
+             struct Chown_option const *chopt)
+  _GL_ATTRIBUTE_NONNULL ();
 
 #endif /* CHOWN_CORE_H */
index 6310c710928d65b3e1606c95bb11218229561705..8e9be44391206d1934c6f9f368ff1c54cb021e25 100644 (file)
@@ -9,7 +9,8 @@ crc_sum_stream (FILE *stream, void *resstream, uintmax_t *length);
 extern void
 output_crc (char const *file, int binary_file, void const *digest,
             bool tagged, unsigned char delim, bool args _GL_UNUSED,
-            uintmax_t length _GL_UNUSED);
+            uintmax_t length _GL_UNUSED)
+  _GL_ATTRIBUTE_NONNULL ((3));
 
 extern bool
 cksum_pclmul (FILE *fp, uint_fast32_t *crc_out, uintmax_t *length_out);
index 3704e129ebccd097fab2f2694a3dec3d349dc4b4..f88bf3ed31fd8d4e5ab1bc30fd808574055cf62e 100644 (file)
@@ -3071,7 +3071,6 @@ ATTRIBUTE_PURE
 static bool
 valid_options (const struct cp_options *co)
 {
-  assert (co != NULL);
   assert (VALID_BACKUP_TYPE (co->backup_type));
   assert (VALID_SPARSE_MODE (co->sparse_mode));
   assert (VALID_REFLINK_MODE (co->reflink_mode));
index 68d52e1ce113261facc7f267efb3d96c1778a614..47651f22d31bd660e91630d66eab751cffe9f546 100644 (file)
@@ -289,23 +289,27 @@ int rpl_rename (char const *, char const *);
 
 bool copy (char const *src_name, char const *dst_name,
            bool nonexistent_dst, const struct cp_options *options,
-           bool *copy_into_self, bool *rename_succeeded);
+           bool *copy_into_self, bool *rename_succeeded)
+  _GL_ATTRIBUTE_NONNULL ((1, 2, 4, 5));
 
 extern bool set_process_security_ctx (char const *src_name,
                                       char const *dst_name,
                                       mode_t mode, bool new_dst,
-                                      const struct cp_options *x);
+                                      const struct cp_options *x)
+  _GL_ATTRIBUTE_NONNULL ();
 
 extern bool set_file_security_ctx (char const *dst_name,
-                                   bool recurse, const struct cp_options *x);
+                                   bool recurse, const struct cp_options *x)
+  _GL_ATTRIBUTE_NONNULL ();
 
-void dest_info_init (struct cp_options *);
-void dest_info_free (struct cp_options *);
-void src_info_init (struct cp_options *);
-void src_info_free (struct cp_options *);
+void dest_info_init (struct cp_options *) _GL_ATTRIBUTE_NONNULL ();
+void dest_info_free (struct cp_options *) _GL_ATTRIBUTE_NONNULL ();
+void src_info_init (struct cp_options *) _GL_ATTRIBUTE_NONNULL ();
+void src_info_free (struct cp_options *) _GL_ATTRIBUTE_NONNULL ();
 
-void cp_options_default (struct cp_options *);
-bool chown_failure_ok (struct cp_options const *) _GL_ATTRIBUTE_PURE;
+void cp_options_default (struct cp_options *) _GL_ATTRIBUTE_NONNULL ();
+bool chown_failure_ok (struct cp_options const *)
+  _GL_ATTRIBUTE_NONNULL () _GL_ATTRIBUTE_PURE;
 mode_t cached_umask (void);
 
 #endif
index afd9d780afdac491a96462741845f3af993542a5..72870fa6d823d912bd6b2d58d7a5b3ae035335b2 100644 (file)
@@ -1,5 +1,6 @@
 void hash_init (void);
 void forget_all (void);
 void forget_created (ino_t ino, dev_t dev);
-char *remember_copied (char const *node, ino_t ino, dev_t dev);
+char *remember_copied (char const *node, ino_t ino, dev_t dev)
+  _GL_ATTRIBUTE_NONNULL ();
 char *src_to_dest_lookup (ino_t ino, dev_t dev);
index ac812d0ed6f95ed862832b5410ed697af3d10c7f..dc149cf0d25e3e0bbe97de5936d7cc5a0c67d240 100644 (file)
@@ -32,12 +32,13 @@ add_tab_stop (uintmax_t tabval);
 /* Add the comma or blank separated list of tab stops STOPS
    to the list of tab stops.  */
 extern void
-parse_tab_stops (char const *stops);
+parse_tab_stops (char const *stops) _GL_ATTRIBUTE_NONNULL ();
 
 /* TODO: Document */
 extern uintmax_t
-get_next_tab_column (const uintmax_t column, size_t* tab_index,
-                     bool* last_tab);
+get_next_tab_column (const uintmax_t column, size_t *tab_index,
+                     bool *last_tab)
+  _GL_ATTRIBUTE_NONNULL ((3));
 
 /* Called after all command-line options have been parsed,
    sets the final tab-stops values */
index a1bbcdc92dbec80d95d77b6357caa018a1cfa741..2d850f6114b48624ae6ab898fc516629b5ddd400 100644 (file)
@@ -17,4 +17,4 @@
 #include <stdlib.h>
 
 extern char *find_mount_point (char const *, struct stat const *)
-  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
+  _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_NONNULL ();
index 595c93f1a28f65f262541dbf0e15cddb8daf0b62..f051658367fb1e1a054615eda358d192edd390bd 100644 (file)
@@ -1,2 +1,4 @@
-extern int force_linkat (int, char const *, int, char const *, int, bool, int);
-extern int force_symlinkat (char const *, int, char const *, bool, int);
+extern int force_linkat (int, char const *, int, char const *, int, bool, int)
+  _GL_ATTRIBUTE_NONNULL ();
+extern int force_symlinkat (char const *, int, char const *, bool, int)
+  _GL_ATTRIBUTE_NONNULL ();
index bb156f33731b76b877df48534b4dc6b44921f7ce..b655290894ae3da3db209d561e53976827881db5 100644 (file)
@@ -15,4 +15,5 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
-extern int operand2sig (char const *operand, char *signame);
+extern int operand2sig (char const *operand, char *signame)
+  _GL_ATTRIBUTE_NONNULL ();
index d26334c8f5be9b103e20259e223bdcbf70cbe0c6..eb0f185e6c43cb048829421cb9a6b8e95b5650ee 100644 (file)
@@ -20,6 +20,6 @@
 # include <stdio.h>
 
 extern void prog_fprintf (FILE *fp, char const *fmt, ...)
-  _GL_ATTRIBUTE_FORMAT ((__printf__, 2, 3));
+  _GL_ATTRIBUTE_FORMAT ((__printf__, 2, 3)) _GL_ATTRIBUTE_NONNULL ((1, 2));;
 
 #endif