]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: add function attributes to public API
authorOndrej Oprala <ooprala@redhat.com>
Fri, 30 Nov 2012 07:56:11 +0000 (08:56 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 30 Nov 2012 09:34:01 +0000 (10:34 +0100)
[kzak@redhat.com: - use __ul prefix in public API,
                  - define minimal requirement gcc 3.4]

Signed-off-by: Ondrej Oprala <ooprala@redhat.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/src/libmount.h.in

index 43646ac8aa4a920e611573966023da9936f996ea..f91f6eb8af52a88ca3693fb75439f49dfca0faef 100644 (file)
@@ -129,73 +129,135 @@ enum {
 #define MNT_ERR_LOOPDEV             5003       /* loopdev setup failed, errno set by libc */
 #define MNT_ERR_MOUNTOPT     5004      /* failed to parse/use userspace mount options */
 
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+#  define __GNUC_PREREQ(maj, min)  ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# else
+#  define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __ul_attribute__
+# if __GNUC_PREREQ (3, 4)
+#  define __ul_attribute__(_a_) __attribute__(_a_)
+# else
+#  define __ul_attribute__(_a_)
+# endif
+#endif
+
+
 /* init.c */
 extern void mnt_init_debug(int mask);
 
 /* version.c */
-extern int mnt_parse_version_string(const char *ver_string);
+extern int mnt_parse_version_string(const char *ver_string)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_get_library_version(const char **ver_string);
-extern int mnt_get_library_features(const char ***features);
+extern int mnt_get_library_features(const char ***features)
+                       __ul_attribute__((nonnull));
 
 /* utils.c */
-extern char *mnt_mangle(const char *str);
-extern char *mnt_unmangle(const char *str);
-extern int mnt_fstype_is_netfs(const char *type);
-extern int mnt_fstype_is_pseudofs(const char *type);
-extern int mnt_match_fstype(const char *type, const char *pattern);
-extern int mnt_match_options(const char *optstr, const char *pattern);
-extern const char *mnt_get_fstab_path(void);
-extern const char *mnt_get_swaps_path(void);
-extern const char *mnt_get_mtab_path(void);
+extern char *mnt_mangle(const char *str)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern char *mnt_unmangle(const char *str)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fstype_is_netfs(const char *type)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fstype_is_pseudofs(const char *type)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_match_fstype(const char *type, const char *pattern)
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_match_options(const char *optstr, const char *pattern)
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_get_fstab_path(void)
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_get_swaps_path(void)
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_get_mtab_path(void)
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_has_regular_mtab(const char **mtab, int *writable);
-extern char *mnt_get_mountpoint(const char *path);
+extern char *mnt_get_mountpoint(const char *path)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 /* cache.c */
-extern struct libmnt_cache *mnt_new_cache(void);
+extern struct libmnt_cache *mnt_new_cache(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_cache(struct libmnt_cache *cache);
-extern int mnt_cache_read_tags(struct libmnt_cache *cache, const char *devname);
+
+extern int mnt_cache_read_tags(struct libmnt_cache *cache, const char *devname)
+                       __ul_attribute__((nonnull));
 extern int mnt_cache_device_has_tag(struct libmnt_cache *cache,
                                const char *devname,
                                 const char *token,
-                               const char *value);
+                               const char *value)
+                       __ul_attribute__((nonnull));
 
 extern char *mnt_cache_find_tag_value(struct libmnt_cache *cache,
-                               const char *devname, const char *token);
+                               const char *devname, const char *token)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern char *mnt_get_fstype(const char *devname, int *ambi,
-                           struct libmnt_cache *cache);
-extern char *mnt_resolve_path(const char *path, struct libmnt_cache *cache);
+                           struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+extern char *mnt_resolve_path(const char *path, struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
 extern char *mnt_resolve_tag(const char *token, const char *value,
-                            struct libmnt_cache *cache);
-extern char *mnt_resolve_spec(const char *spec, struct libmnt_cache *cache);
+                            struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1, 2)))
+                       __ul_attribute__((warn_unused_result));
+extern char *mnt_resolve_spec(const char *spec, struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
 
-extern char *mnt_pretty_path(const char *path, struct libmnt_cache *cache);
+extern char *mnt_pretty_path(const char *path, struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
 
 /* optstr.c */
 extern int mnt_optstr_next_option(char **optstr, char **name, size_t *namesz,
-                               char **value, size_t *valuesz);
+                               char **value, size_t *valuesz)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_optstr_append_option(char **optstr, const char *name,
-                               const char *value);
+                               const char *value)
+                       __ul_attribute__((nonnull(1, 2)));
 extern int mnt_optstr_prepend_option(char **optstr, const char *name,
-                               const char *value);
+                               const char *value)
+                       __ul_attribute__((nonnull(1, 2)));
 extern int mnt_optstr_get_option(const char *optstr, const char *name,
-                               char **value, size_t *valsz);
+                               char **value, size_t *valsz)
+                       __ul_attribute__((nonnull(1, 2)));
 extern int mnt_optstr_set_option(char **optstr, const char *name,
-                               const char *value);
-extern int mnt_optstr_remove_option(char **optstr, const char *name);
-extern int mnt_optstr_deduplicate_option(char **optstr, const char *name);
+                               const char *value)
+                       __ul_attribute__((nonnull(1, 2)));
+extern int mnt_optstr_remove_option(char **optstr, const char *name)
+                       __ul_attribute__((nonnull));
+extern int mnt_optstr_deduplicate_option(char **optstr, const char *name)
+                       __ul_attribute__((nonnull));
 
 extern int mnt_split_optstr(const char *optstr,
                            char **user, char **vfs, char **fs,
-                           int ignore_user, int ignore_vfs);
+                           int ignore_user, int ignore_vfs)
+                       __ul_attribute__((nonnull(1)));
 
 extern int mnt_optstr_get_options(const char *optstr, char **subset,
-                            const struct libmnt_optmap *map, int ignore);
+                            const struct libmnt_optmap *map, int ignore)
+                       __ul_attribute__((nonnull));
 
 extern int mnt_optstr_get_flags(const char *optstr, unsigned long *flags,
-                               const struct libmnt_optmap *map);
+                               const struct libmnt_optmap *map)
+                       __ul_attribute__((nonnull));
 extern int mnt_optstr_apply_flags(char **optstr, unsigned long flags,
-                                const struct libmnt_optmap *map);
+                                const struct libmnt_optmap *map)
+                       __ul_attribute__((nonnull));
 
 
 /* iter.c */
@@ -204,165 +266,320 @@ enum {
        MNT_ITER_FORWARD = 0,
        MNT_ITER_BACKWARD
 };
-extern struct libmnt_iter *mnt_new_iter(int direction);
+extern struct libmnt_iter *mnt_new_iter(int direction)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_iter(struct libmnt_iter *itr);
-extern void mnt_reset_iter(struct libmnt_iter *itr, int direction);
-extern int mnt_iter_get_direction(struct libmnt_iter *itr);
+
+extern void mnt_reset_iter(struct libmnt_iter *itr, int direction)
+                       __ul_attribute__((nonnull));
+extern int mnt_iter_get_direction(struct libmnt_iter *itr)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 /* optmap.c */
 enum {
        MNT_LINUX_MAP = 1,
        MNT_USERSPACE_MAP
 };
-extern const struct libmnt_optmap *mnt_get_builtin_optmap(int id);
+extern const struct libmnt_optmap *mnt_get_builtin_optmap(int id)
+                       __ul_attribute__((warn_unused_result));
 
 /* lock.c */
-extern struct libmnt_lock *mnt_new_lock(const char *datafile, pid_t id);
+extern struct libmnt_lock *mnt_new_lock(const char *datafile, pid_t id)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_lock(struct libmnt_lock *ml);
-extern void mnt_unlock_file(struct libmnt_lock *ml);
-extern int mnt_lock_file(struct libmnt_lock *ml);
-extern int mnt_lock_block_signals(struct libmnt_lock *ml, int enable);
+
+extern void mnt_unlock_file(struct libmnt_lock *ml)
+                       __ul_attribute__((nonnull));
+extern int mnt_lock_file(struct libmnt_lock *ml)
+                       __ul_attribute__((nonnull));
+extern int mnt_lock_block_signals(struct libmnt_lock *ml, int enable)
+                       __ul_attribute__((nonnull));
 
 /* fs.c */
-extern struct libmnt_fs *mnt_new_fs(void);
+extern struct libmnt_fs *mnt_new_fs(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_fs(struct libmnt_fs *fs);
-extern void mnt_reset_fs(struct libmnt_fs *fs);
+
+extern void mnt_reset_fs(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull));
 extern struct libmnt_fs *mnt_copy_fs(struct libmnt_fs *dest,
-                                    const struct libmnt_fs *src);
-extern void *mnt_fs_get_userdata(struct libmnt_fs *fs);
-extern int mnt_fs_set_userdata(struct libmnt_fs *fs, void *data);
-extern const char *mnt_fs_get_source(struct libmnt_fs *fs);
-extern int mnt_fs_set_source(struct libmnt_fs *fs, const char *source);
-extern const char *mnt_fs_get_srcpath(struct libmnt_fs *fs);
+                                    const struct libmnt_fs *src)
+                       __ul_attribute__((nonnull(2)))
+                       __ul_attribute__((warn_unused_result));
+extern void *mnt_fs_get_userdata(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_userdata(struct libmnt_fs *fs, void *data)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_source(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_source(struct libmnt_fs *fs, const char *source)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_srcpath(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_fs_get_tag(struct libmnt_fs *fs, const char **name,
-                         const char **value);
-extern const char *mnt_fs_get_target(struct libmnt_fs *fs);
-extern int mnt_fs_set_target(struct libmnt_fs *fs, const char *target);
-extern const char *mnt_fs_get_fstype(struct libmnt_fs *fs);
-extern int mnt_fs_set_fstype(struct libmnt_fs *fs, const char *fstype);
-
-extern int mnt_fs_streq_srcpath(struct libmnt_fs *fs, const char *path);
-extern int mnt_fs_streq_target(struct libmnt_fs *fs, const char *path);
-
-extern char *mnt_fs_strdup_options(struct libmnt_fs *fs);
-extern const char *mnt_fs_get_options(struct libmnt_fs *fs);
-extern int mnt_fs_set_options(struct libmnt_fs *fs, const char *optstr);
-extern int mnt_fs_append_options(struct libmnt_fs *fs, const char *optstr);
-extern int mnt_fs_prepend_options(struct libmnt_fs *fs, const char *optstr);
+                         const char **value)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_target(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_target(struct libmnt_fs *fs, const char *target)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_fstype(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_fstype(struct libmnt_fs *fs, const char *fstype)
+                       __ul_attribute__((nonnull(1)));
+
+extern int mnt_fs_streq_srcpath(struct libmnt_fs *fs, const char *path)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_streq_target(struct libmnt_fs *fs, const char *path)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+
+extern char *mnt_fs_strdup_options(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_fs_get_options(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_options(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_fs_append_options(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull));
+extern int mnt_fs_prepend_options(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull));
 
 extern int mnt_fs_get_option(struct libmnt_fs *fs, const char *name,
-                               char **value, size_t *valsz);
-
-
-extern const char *mnt_fs_get_fs_options(struct libmnt_fs *fs);
-extern const char *mnt_fs_get_vfs_options(struct libmnt_fs *fs);
-extern const char *mnt_fs_get_user_options(struct libmnt_fs *fs);
-
-extern const char *mnt_fs_get_attributes(struct libmnt_fs *fs);
-extern int mnt_fs_set_attributes(struct libmnt_fs *fs, const char *optstr);
+                               char **value, size_t *valsz)
+                       __ul_attribute__((nonnull(1,2)));
+
+
+extern const char *mnt_fs_get_fs_options(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_fs_get_vfs_options(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_fs_get_user_options(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern const char *mnt_fs_get_attributes(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_attributes(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_fs_get_attribute(struct libmnt_fs *fs, const char *name,
-                               char **value, size_t *valsz);
-extern int mnt_fs_append_attributes(struct libmnt_fs *fs, const char *optstr);
-extern int mnt_fs_prepend_attributes(struct libmnt_fs *fs, const char *optstr);
-
-extern int mnt_fs_get_freq(struct libmnt_fs *fs);
-extern int mnt_fs_set_freq(struct libmnt_fs *fs, int freq);
-extern int mnt_fs_get_passno(struct libmnt_fs *fs);
-extern int mnt_fs_set_passno(struct libmnt_fs *fs, int passno);
-extern const char *mnt_fs_get_root(struct libmnt_fs *fs);
-extern int mnt_fs_set_root(struct libmnt_fs *fs, const char *root);
-extern const char *mnt_fs_get_bindsrc(struct libmnt_fs *fs);
-extern int mnt_fs_set_bindsrc(struct libmnt_fs *fs, const char *src);
-extern int mnt_fs_get_id(struct libmnt_fs *fs);
-extern int mnt_fs_get_parent_id(struct libmnt_fs *fs);
-extern dev_t mnt_fs_get_devno(struct libmnt_fs *fs);
-extern pid_t mnt_fs_get_tid(struct libmnt_fs *fs);
-
-extern const char *mnt_fs_get_swaptype(struct libmnt_fs *fs);
-extern off_t mnt_fs_get_size(struct libmnt_fs *fs);
-extern off_t mnt_fs_get_usedsize(struct libmnt_fs *fs);
-extern int mnt_fs_get_priority(struct libmnt_fs *fs);
+                               char **value, size_t *valsz)
+                       __ul_attribute__((nonnull(1,2)));
+extern int mnt_fs_append_attributes(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull));
+extern int mnt_fs_prepend_attributes(struct libmnt_fs *fs, const char *optstr)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_fs_get_freq(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_freq(struct libmnt_fs *fs, int freq)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_fs_get_passno(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_passno(struct libmnt_fs *fs, int passno)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_root(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_root(struct libmnt_fs *fs, const char *root)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_fs_get_bindsrc(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_set_bindsrc(struct libmnt_fs *fs, const char *src)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_fs_get_id(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_get_parent_id(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern dev_t mnt_fs_get_devno(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern pid_t mnt_fs_get_tid(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern const char *mnt_fs_get_swaptype(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern off_t mnt_fs_get_size(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern off_t mnt_fs_get_usedsize(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_get_priority(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_fs_match_target(struct libmnt_fs *fs, const char *target,
-                              struct libmnt_cache *cache);
+                              struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_fs_match_source(struct libmnt_fs *fs, const char *source,
-                              struct libmnt_cache *cache);
-extern int mnt_fs_match_fstype(struct libmnt_fs *fs, const char *types);
-extern int mnt_fs_match_options(struct libmnt_fs *fs, const char *options);
-extern int mnt_fs_print_debug(struct libmnt_fs *fs, FILE *file);
-
-extern int mnt_fs_is_kernel(struct libmnt_fs *fs);
-extern int mnt_fs_is_swaparea(struct libmnt_fs *fs);
-extern int mnt_fs_is_netfs(struct libmnt_fs *fs);
-extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs);
+                              struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_match_fstype(struct libmnt_fs *fs, const char *types)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_match_options(struct libmnt_fs *fs, const char *options)
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_print_debug(struct libmnt_fs *fs, FILE *file)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_fs_is_kernel(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_is_swaparea(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_is_netfs(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern void mnt_free_mntent(struct mntent *mnt);
-extern int mnt_fs_to_mntent(struct libmnt_fs *fs, struct mntent **mnt);
+extern int mnt_fs_to_mntent(struct libmnt_fs *fs, struct mntent **mnt)
+                       __ul_attribute__((nonnull));
 
 /* tab-parse.c */
-extern struct libmnt_table *mnt_new_table_from_file(const char *filename);
-extern struct libmnt_table *mnt_new_table_from_dir(const char *dirname);
+extern struct libmnt_table *mnt_new_table_from_file(const char *filename)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern struct libmnt_table *mnt_new_table_from_dir(const char *dirname)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_table_parse_stream(struct libmnt_table *tb, FILE *f,
-                                 const char *filename);
-extern int mnt_table_parse_file(struct libmnt_table *tb, const char *filename);
-extern int mnt_table_parse_dir(struct libmnt_table *tb, const char *dirname);
-
-extern int mnt_table_parse_fstab(struct libmnt_table *tb, const char *filename);
-extern int mnt_table_parse_swaps(struct libmnt_table *tb, const char *filename);
-extern int mnt_table_parse_mtab(struct libmnt_table *tb, const char *filename);
+                                 const char *filename)
+                       __ul_attribute__((nonnull(1,2)));
+extern int mnt_table_parse_file(struct libmnt_table *tb, const char *filename)
+                       __ul_attribute__((nonnull));
+extern int mnt_table_parse_dir(struct libmnt_table *tb, const char *dirname)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_table_parse_fstab(struct libmnt_table *tb, const char *filename)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_table_parse_swaps(struct libmnt_table *tb, const char *filename)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_table_parse_mtab(struct libmnt_table *tb, const char *filename)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_table_set_parser_errcb(struct libmnt_table *tb,
-                int (*cb)(struct libmnt_table *tb, const char *filename, int line));
+                int (*cb)(struct libmnt_table *tb, const char *filename, int line))
+                       __ul_attribute__((nonnull(1)));
 
 /* tab.c */
-extern struct libmnt_table *mnt_new_table(void);
+extern struct libmnt_table *mnt_new_table(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_table(struct libmnt_table *tb);
-extern int mnt_reset_table(struct libmnt_table *tb);
-extern int mnt_table_get_nents(struct libmnt_table *tb);
-extern int mnt_table_set_cache(struct libmnt_table *tb, struct libmnt_cache *mpc);
-extern struct libmnt_cache *mnt_table_get_cache(struct libmnt_table *tb);
-extern int mnt_table_add_fs(struct libmnt_table *tb, struct libmnt_fs *fs);
-extern int mnt_table_remove_fs(struct libmnt_table *tb, struct libmnt_fs *fs);
+
+extern int mnt_reset_table(struct libmnt_table *tb)
+                       __ul_attribute__((nonnull));
+extern int mnt_table_get_nents(struct libmnt_table *tb)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_table_set_cache(struct libmnt_table *tb, struct libmnt_cache *mpc)
+                       __ul_attribute__((nonnull(1)));
+extern struct libmnt_cache *mnt_table_get_cache(struct libmnt_table *tb)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_table_add_fs(struct libmnt_table *tb, struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull));
+extern int mnt_table_remove_fs(struct libmnt_table *tb, struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull));
 extern int mnt_table_next_fs(struct libmnt_table *tb, struct libmnt_iter *itr,
-                            struct libmnt_fs **fs);
+                            struct libmnt_fs **fs)
+                       __ul_attribute__((nonnull));
 extern int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr,
-                               struct libmnt_fs *parent, struct libmnt_fs **chld);
-extern int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root);
+                               struct libmnt_fs *parent, struct libmnt_fs **chld)
+                       __ul_attribute__((nonnull));
+extern int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root)
+                       __ul_attribute__((nonnull));
 extern int mnt_table_set_iter(struct libmnt_table *tb, struct libmnt_iter *itr,
-                             struct libmnt_fs *fs);
+                             struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull));
 
 extern struct libmnt_fs *mnt_table_find_target(struct libmnt_table *tb,
-                               const char *path, int direction);
+                               const char *path, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern struct libmnt_fs *mnt_table_find_srcpath(struct libmnt_table *tb,
-                               const char *path, int direction);
+                               const char *path, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern struct libmnt_fs *mnt_table_find_tag(struct libmnt_table *tb, const char *tag,
-                               const char *val, int direction);
+                               const char *val, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern struct libmnt_fs *mnt_table_find_source(struct libmnt_table *tb,
-                               const char *source, int direction);
+                               const char *source, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern struct libmnt_fs *mnt_table_find_pair(struct libmnt_table *tb,
                                const char *source,
-                               const char *target, int direction);
+                               const char *target, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern struct libmnt_fs *mnt_table_find_devno(struct libmnt_table *tb,
-                               dev_t devno, int direction);
+                               dev_t devno, int direction)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_table_find_next_fs(struct libmnt_table *tb,
                        struct libmnt_iter *itr,
-                       int (*match_func)(struct libmnt_fs *, void *), void *userdata,
-                       struct libmnt_fs **fs);
+                       int (*match_func)(struct libmnt_fs *, void *),
+                       void *userdata,
+                       struct libmnt_fs **fs)
+                       __ul_attribute__((nonnull(1,2,3,5)));
 
-extern int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs);
+extern int mnt_table_is_fs_mounted(struct libmnt_table *tb, struct libmnt_fs *fstab_fs)
+                       __ul_attribute__((nonnull));
 
 
 /* tab_update.c */
-extern struct libmnt_update *mnt_new_update(void);
+extern struct libmnt_update *mnt_new_update(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_update(struct libmnt_update *upd);
-extern int mnt_update_is_ready(struct libmnt_update *upd);
+
+extern int mnt_update_is_ready(struct libmnt_update *upd)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_update_set_fs(struct libmnt_update *upd, unsigned long mountflags,
-                             const char *target, struct libmnt_fs *fs);
-extern int mnt_update_table(struct libmnt_update *upd, struct libmnt_lock *lc);
-extern unsigned long mnt_update_get_mflags(struct libmnt_update *upd);
-extern int mnt_update_force_rdonly(struct libmnt_update *upd, int rdonly);
-extern const char *mnt_update_get_filename(struct libmnt_update *upd);
-extern struct libmnt_fs *mnt_update_get_fs(struct libmnt_update *upd);
+                             const char *target, struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_update_table(struct libmnt_update *upd, struct libmnt_lock *lc)
+                       __ul_attribute__((nonnull(1)));
+extern unsigned long mnt_update_get_mflags(struct libmnt_update *upd)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_update_force_rdonly(struct libmnt_update *upd, int rdonly)
+                       __ul_attribute__((nonnull));
+extern const char *mnt_update_get_filename(struct libmnt_update *upd)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern struct libmnt_fs *mnt_update_get_fs(struct libmnt_update *upd)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 /* tab_diff.c */
 enum {
@@ -373,18 +590,21 @@ enum {
        MNT_TABDIFF_PROPAGATION,        /* not implemented yet (TODO) */
 };
 
-extern struct libmnt_tabdiff *mnt_new_tabdiff(void);
+extern struct libmnt_tabdiff *mnt_new_tabdiff(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_tabdiff(struct libmnt_tabdiff *df);
 
 extern int mnt_diff_tables(struct libmnt_tabdiff *df,
                           struct libmnt_table *old_tab,
-                          struct libmnt_table *new_tab);
+                          struct libmnt_table *new_tab)
+                       __ul_attribute__((nonnull));
 
 extern int mnt_tabdiff_next_change(struct libmnt_tabdiff *df,
                                   struct libmnt_iter *itr,
                                   struct libmnt_fs **old_fs,
                                   struct libmnt_fs **new_fs,
-                                  int *oper);
+                                  int *oper)
+                       __ul_attribute__((nonnull(1, 2)));
 
 /* context.c */
 
@@ -409,135 +629,256 @@ enum {
        MNT_OMODE_USER   = (MNT_OMODE_REPLACE | MNT_OMODE_FORCE | MNT_OMODE_FSTAB)
 };
 
-extern struct libmnt_context *mnt_new_context(void);
+extern struct libmnt_context *mnt_new_context(void)
+                       __ul_attribute__((warn_unused_result));
 extern void mnt_free_context(struct libmnt_context *cxt);
-extern int mnt_reset_context(struct libmnt_context *cxt);
-extern int mnt_context_is_restricted(struct libmnt_context *cxt);
+
+extern int mnt_reset_context(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_is_restricted(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_context_init_helper(struct libmnt_context *cxt,
-                                  int action, int flags);
-extern int mnt_context_helper_setopt(struct libmnt_context *cxt, int c, char *arg);
-
-extern int mnt_context_set_optsmode(struct libmnt_context *cxt, int mode);
-extern int mnt_context_disable_canonicalize(struct libmnt_context *cxt, int disable);
-extern int mnt_context_enable_lazy(struct libmnt_context *cxt, int enable);
-extern int mnt_context_enable_rdonly_umount(struct libmnt_context *cxt, int enable);
-extern int mnt_context_disable_helpers(struct libmnt_context *cxt, int disable);
-extern int mnt_context_enable_sloppy(struct libmnt_context *cxt, int enable);
-extern int mnt_context_enable_fake(struct libmnt_context *cxt, int enable);
-extern int mnt_context_disable_mtab(struct libmnt_context *cxt, int disable);
-extern int mnt_context_enable_force(struct libmnt_context *cxt, int enable);
-extern int mnt_context_enable_verbose(struct libmnt_context *cxt, int enable);
-extern int mnt_context_enable_loopdel(struct libmnt_context *cxt, int enable);
-extern int mnt_context_enable_fork(struct libmnt_context *cxt, int enable);
-extern int mnt_context_disable_swapmatch(struct libmnt_context *cxt, int disable);
-
-extern int mnt_context_get_optsmode(struct libmnt_context *cxt);
-extern int mnt_context_is_lazy(struct libmnt_context *cxt);
-extern int mnt_context_is_rdonly_umount(struct libmnt_context *cxt);
-extern int mnt_context_is_sloppy(struct libmnt_context *cxt);
-extern int mnt_context_is_fake(struct libmnt_context *cxt);
-extern int mnt_context_is_nomtab(struct libmnt_context *cxt);
-extern int mnt_context_is_force(struct libmnt_context *cxt);
-extern int mnt_context_is_verbose(struct libmnt_context *cxt);
-extern int mnt_context_is_loopdel(struct libmnt_context *cxt);
-extern int mnt_context_is_nohelpers(struct libmnt_context *cxt);
-extern int mnt_context_is_nocanonicalize(struct libmnt_context *cxt);
-extern int mnt_context_is_swapmatch(struct libmnt_context *cxt);
-
-extern int mnt_context_is_fork(struct libmnt_context *cxt);
-extern int mnt_context_is_parent(struct libmnt_context *cxt);
-extern int mnt_context_is_child(struct libmnt_context *cxt);
+                                  int action, int flags)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_helper_setopt(struct libmnt_context *cxt, int c, char *arg)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_context_set_optsmode(struct libmnt_context *cxt, int mode)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_disable_canonicalize(struct libmnt_context *cxt, int disable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_lazy(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_rdonly_umount(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_disable_helpers(struct libmnt_context *cxt, int disable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_sloppy(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_fake(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_disable_mtab(struct libmnt_context *cxt, int disable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_force(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_verbose(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_loopdel(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_enable_fork(struct libmnt_context *cxt, int enable)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_disable_swapmatch(struct libmnt_context *cxt, int disable)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_context_get_optsmode(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_lazy(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_rdonly_umount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_sloppy(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_fake(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_nomtab(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_force(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_verbose(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_loopdel(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_nohelpers(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_nocanonicalize(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_swapmatch(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern int mnt_context_is_fork(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_parent(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_is_child(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_context_wait_for_children(struct libmnt_context *cxt,
-                                  int *nchildren, int *nerrs);
+                                  int *nchildren, int *nerrs)
+                       __ul_attribute__((nonnull(1)));
 
 extern int mnt_context_is_fs_mounted(struct libmnt_context *cxt,
-                              struct libmnt_fs *fs, int *mounted);
-
-extern int mnt_context_set_fs(struct libmnt_context *cxt, struct libmnt_fs *fs);
-extern struct libmnt_fs *mnt_context_get_fs(struct libmnt_context *cxt);
-extern int mnt_context_set_source(struct libmnt_context *cxt, const char *source);
-extern int mnt_context_set_target(struct libmnt_context *cxt, const char *target);
-extern int mnt_context_set_fstype(struct libmnt_context *cxt, const char *fstype);
-extern const char *mnt_context_get_source(struct libmnt_context *cxt);
-extern const char *mnt_context_get_target(struct libmnt_context *cxt);
-extern const char *mnt_context_get_fstype(struct libmnt_context *cxt);
-
-extern int mnt_context_set_options(struct libmnt_context *cxt, const char *optstr);
+                              struct libmnt_fs *fs, int *mounted)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_set_fs(struct libmnt_context *cxt, struct libmnt_fs *fs)
+                       __ul_attribute__((nonnull(1)));
+extern struct libmnt_fs *mnt_context_get_fs(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_set_source(struct libmnt_context *cxt, const char *source)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_context_set_target(struct libmnt_context *cxt, const char *target)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_context_set_fstype(struct libmnt_context *cxt, const char *fstype)
+                       __ul_attribute__((nonnull(1)));
+extern const char *mnt_context_get_source(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_context_get_target(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern const char *mnt_context_get_fstype(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern int mnt_context_set_options(struct libmnt_context *cxt, const char *optstr)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_context_append_options(struct libmnt_context *cxt,
-                                     const char *optstr);
-extern const char *mnt_context_get_options(struct libmnt_context *cxt);
+                                     const char *optstr)
+                       __ul_attribute__((nonnull));
+extern const char *mnt_context_get_options(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_context_set_fstype_pattern(struct libmnt_context *cxt,
-                                     const char *pattern);
+                                     const char *pattern)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_context_set_options_pattern(struct libmnt_context *cxt,
-                                     const char *pattern);
+                                     const char *pattern)
+                       __ul_attribute__((nonnull(1)));
 
 extern int mnt_context_set_passwd_cb(struct libmnt_context *cxt,
                              char *(*get)(struct libmnt_context *),
-                             void (*release)(struct libmnt_context *, char *));
+                             void (*release)(struct libmnt_context *, char *))
+                       __ul_attribute__((nonnull(1)))
+                       __ul_attribute__((deprecated));
 
 extern int mnt_context_set_tables_errcb(struct libmnt_context *cxt,
-        int (*cb)(struct libmnt_table *tb, const char *filename, int line));
+        int (*cb)(struct libmnt_table *tb, const char *filename, int line))
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_context_set_fstab(struct libmnt_context *cxt,
-                                struct libmnt_table *tb);
+                                struct libmnt_table *tb)
+                       __ul_attribute__((nonnull(1)));
 extern int mnt_context_get_fstab(struct libmnt_context *cxt,
-                                struct libmnt_table **tb);
+                                struct libmnt_table **tb)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_context_get_mtab(struct libmnt_context *cxt,
-                               struct libmnt_table **tb);
+                               struct libmnt_table **tb)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_get_table(struct libmnt_context *cxt,
                                const char *filename,
-                               struct libmnt_table **tb);
+                               struct libmnt_table **tb)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_set_cache(struct libmnt_context *cxt,
-                                struct libmnt_cache *cache);
-extern struct libmnt_cache *mnt_context_get_cache(struct libmnt_context *cxt);
-extern struct libmnt_lock *mnt_context_get_lock(struct libmnt_context *cxt);
-
+                                struct libmnt_cache *cache)
+                       __ul_attribute__((nonnull(1)));
+extern struct libmnt_cache *mnt_context_get_cache(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern struct libmnt_lock *mnt_context_get_lock(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 extern int mnt_context_set_mflags(struct libmnt_context *cxt,
-                                     unsigned long flags);
+                                     unsigned long flags)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_get_mflags(struct libmnt_context *cxt,
-                                     unsigned long *flags);
+                                     unsigned long *flags)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_set_user_mflags(struct libmnt_context *cxt,
-                                               unsigned long flags);
+                                               unsigned long flags)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_get_user_mflags(struct libmnt_context *cxt,
-                                               unsigned long *flags);
-
-extern int mnt_context_set_mountdata(struct libmnt_context *cxt, void *data);
-extern int mnt_context_apply_fstab(struct libmnt_context *cxt);
-
-extern int mnt_context_reset_status(struct libmnt_context *cxt);
-extern int mnt_context_get_status(struct libmnt_context *cxt);
-
-extern int mnt_context_helper_executed(struct libmnt_context *cxt);
-extern int mnt_context_get_helper_status(struct libmnt_context *cxt);
-
-extern int mnt_context_syscall_called(struct libmnt_context *cxt);
-extern int mnt_context_get_syscall_errno(struct libmnt_context *cxt);
+                                               unsigned long *flags)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_context_set_mountdata(struct libmnt_context *cxt, void *data)
+                       __ul_attribute__((nonnull(1)));
+extern int mnt_context_apply_fstab(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+
+extern int mnt_context_reset_status(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_get_status(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern int mnt_context_helper_executed(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_get_helper_status(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern int mnt_context_syscall_called(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+
+extern int mnt_context_get_syscall_errno(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
 
 extern int mnt_context_strerror(struct libmnt_context *cxt, char *buf,
-                               size_t bufsiz);
-
-extern int mnt_context_mount(struct libmnt_context *cxt);
-extern int mnt_context_umount(struct libmnt_context *cxt);
+                               size_t bufsiz)
+                       __ul_attribute__((nonnull));
+
+/* context_mount.c */
+extern int mnt_context_mount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_umount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
 extern int mnt_context_next_mount(struct libmnt_context *cxt,
-                          struct libmnt_iter *itr, struct libmnt_fs **fs,
-                          int *mntrc, int *ignored);
+                               struct libmnt_iter *itr,
+                               struct libmnt_fs **fs,
+                               int *mntrc, int *ignored)
+                       __ul_attribute__((nonnull(1, 2, 3)));
+
+extern int mnt_context_prepare_mount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_do_mount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_finalize_mount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+
+/* context_umount.c */
 extern int mnt_context_next_umount(struct libmnt_context *cxt,
-                          struct libmnt_iter *itr, struct libmnt_fs **fs,
-                          int *mntrc, int *ignored);
-
-extern int mnt_context_prepare_mount(struct libmnt_context *cxt);
-extern int mnt_context_do_mount(struct libmnt_context *cxt);
-extern int mnt_context_finalize_mount(struct libmnt_context *cxt);
-
-extern int mnt_context_prepare_umount(struct libmnt_context *cxt);
-extern int mnt_context_do_umount(struct libmnt_context *cxt);
-extern int mnt_context_finalize_umount(struct libmnt_context *cxt);
-
-
-extern int mnt_context_tab_applied(struct libmnt_context *cxt);
-extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status);
+                               struct libmnt_iter *itr,
+                               struct libmnt_fs **fs,
+                               int *mntrc, int *ignored)
+                       __ul_attribute__((nonnull(1, 2, 3)));
+
+extern int mnt_context_prepare_umount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_do_umount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+extern int mnt_context_finalize_umount(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull));
+
+
+extern int mnt_context_tab_applied(struct libmnt_context *cxt)
+                       __ul_attribute__((nonnull))
+                       __ul_attribute__((warn_unused_result));
+extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status)
+                       __ul_attribute__((nonnull));
 
 /*
  * mount(8) userspace options masks (MNT_MAP_USERSPACE map)