From a639778557679b115ec0d61926271d03e56b5a96 Mon Sep 17 00:00:00 2001 From: Ondrej Oprala Date: Fri, 30 Nov 2012 08:56:11 +0100 Subject: libmount: add function attributes to public API [kzak@redhat.com: - use __ul prefix in public API, - define minimal requirement gcc 3.4] Signed-off-by: Ondrej Oprala Signed-off-by: Karel Zak --- libmount/src/libmount.h.in | 827 ++++++++++++++++++++++++++++++++------------- 1 file changed, 584 insertions(+), 243 deletions(-) (limited to 'libmount/src/libmount.h.in') diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in index 43646ac8a..f91f6eb8a 100644 --- a/libmount/src/libmount.h.in +++ b/libmount/src/libmount.h.in @@ -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) -- cgit v1.2.3-55-g7522