Version the functions in libsudo_util

This commit is contained in:
Todd C. Miller
2014-07-22 11:26:17 -06:00
parent 127ba1354b
commit 844a285391
29 changed files with 346 additions and 268 deletions

View File

@@ -24,8 +24,10 @@
#define SUDO_PATH_WORLD_WRITABLE -4
#define SUDO_PATH_GROUP_WRITABLE -5
__dso_public int sudo_secure_dir(const char *path, uid_t uid, gid_t gid, struct stat *sbp);
__dso_public int sudo_secure_file(const char *path, uid_t uid, gid_t gid, struct stat *sbp);
__dso_public int sudo_secure_path(const char *path, unsigned int type, uid_t uid, gid_t gid, struct stat *sbp);
__dso_public int sudo_secure_dir_v1(const char *path, uid_t uid, gid_t gid, struct stat *sbp);
__dso_public int sudo_secure_file_v1(const char *path, uid_t uid, gid_t gid, struct stat *sbp);
#define sudo_secure_dir(_a, _b, _c, _d) sudo_secure_dir_v1((_a), (_b), (_c), (_d))
#define sudo_secure_file(_a, _b, _c, _d) sudo_secure_file_v1((_a), (_b), (_c), (_d))
#endif /* _SUDO_SECURE_PATH_H */

View File

@@ -23,15 +23,26 @@
#undef sudo_efree
#define sudo_efree(x) free((void *)(x))
__dso_public int sudo_easprintf(char **, const char *, ...) __printflike(2, 3);
__dso_public int sudo_evasprintf(char **, const char *, va_list) __printflike(2, 0);
__dso_public void *sudo_ecalloc(size_t, size_t) __malloc_like;
__dso_public void *sudo_emalloc(size_t) __malloc_like;
__dso_public void *sudo_emallocarray(size_t, size_t) __malloc_like;
__dso_public void *sudo_erealloc(void *, size_t);
__dso_public void *sudo_ereallocarray(void *, size_t, size_t);
__dso_public void *sudo_erecalloc(void *, size_t, size_t, size_t);
__dso_public char *sudo_estrdup(const char *) __malloc_like;
__dso_public char *sudo_estrndup(const char *, size_t) __malloc_like;
__dso_public int sudo_easprintf_v1(char **, const char *, ...) __printflike(2, 3);
__dso_public int sudo_evasprintf_v1(char **, const char *, va_list) __printflike(2, 0);
__dso_public void *sudo_ecalloc_v1(size_t, size_t) __malloc_like;
__dso_public void *sudo_emalloc_v1(size_t) __malloc_like;
__dso_public void *sudo_emallocarray_v1(size_t, size_t) __malloc_like;
__dso_public void *sudo_erealloc_v1(void *, size_t);
__dso_public void *sudo_ereallocarray_v1(void *, size_t, size_t);
__dso_public void *sudo_erecalloc_v1(void *, size_t, size_t, size_t);
__dso_public char *sudo_estrdup_v1(const char *) __malloc_like;
__dso_public char *sudo_estrndup_v1(const char *, size_t) __malloc_like;
#define sudo_easprintf sudo_easprintf_v1
#define sudo_evasprintf(_a, _b, _c) sudo_evasprintf_v1((_a), (_b), (_c))
#define sudo_ecalloc(_a, _b) sudo_ecalloc_v1((_a), (_b))
#define sudo_emalloc(_a) sudo_emalloc_v1((_a))
#define sudo_emallocarray(_a, _b) sudo_emallocarray_v1((_a), (_b))
#define sudo_erealloc(_a, _b) sudo_erealloc_v1((_a), (_b))
#define sudo_ereallocarray(_a, _b, _c) sudo_ereallocarray_v1((_a), (_b), (_c))
#define sudo_erecalloc(_a, _b, _c, _d) sudo_erecalloc_v1((_a), (_b), (_c), (_d))
#define sudo_estrdup(_a) sudo_estrdup_v1((_a))
#define sudo_estrndup(_a, _b) sudo_estrndup_v1((_a), (_b))
#endif /* _SUDO_ALLOC_H */

View File

@@ -33,18 +33,29 @@ struct plugin_info {
TAILQ_HEAD(plugin_info_list, plugin_info);
/* Read main sudo.conf file. */
__dso_public void sudo_conf_read(const char *);
__dso_public void sudo_conf_read_v1(const char *conf_file);
#define sudo_conf_read(_a) sudo_conf_read_v1((_a))
/* Accessor functions. */
__dso_public const char *sudo_conf_askpass_path(void);
__dso_public const char *sudo_conf_sesh_path(void);
__dso_public const char *sudo_conf_noexec_path(void);
__dso_public const char *sudo_conf_plugin_dir_path(void);
__dso_public const char *sudo_conf_debug_flags(void);
__dso_public struct plugin_info_list *sudo_conf_plugins(void);
__dso_public bool sudo_conf_disable_coredump(void);
__dso_public bool sudo_conf_probe_interfaces(void);
__dso_public int sudo_conf_group_source(void);
__dso_public int sudo_conf_max_groups(void);
__dso_public const char *sudo_conf_askpass_path_v1(void);
__dso_public const char *sudo_conf_sesh_path_v1(void);
__dso_public const char *sudo_conf_noexec_path_v1(void);
__dso_public const char *sudo_conf_plugin_dir_path_v1(void);
__dso_public const char *sudo_conf_debug_flags_v1(void);
__dso_public struct plugin_info_list *sudo_conf_plugins_v1(void);
__dso_public bool sudo_conf_disable_coredump_v1(void);
__dso_public bool sudo_conf_probe_interfaces_v1(void);
__dso_public int sudo_conf_group_source_v1(void);
__dso_public int sudo_conf_max_groups_v1(void);
#define sudo_conf_askpass_path() sudo_conf_askpass_path_v1()
#define sudo_conf_sesh_path() sudo_conf_sesh_path_v1()
#define sudo_conf_noexec_path() sudo_conf_noexec_path_v1()
#define sudo_conf_plugin_dir_path() sudo_conf_plugin_dir_path_v1()
#define sudo_conf_debug_flags() sudo_conf_debug_flags_v1()
#define sudo_conf_plugins() sudo_conf_plugins_v1()
#define sudo_conf_disable_coredump() sudo_conf_disable_coredump_v1()
#define sudo_conf_probe_interfaces() sudo_conf_probe_interfaces_v1()
#define sudo_conf_group_source() sudo_conf_group_source_v1()
#define sudo_conf_max_groups() sudo_conf_max_groups_v1()
#endif /* _SUDO_CONF_H */

View File

@@ -40,10 +40,16 @@ struct sudo_preload_table {
};
/* Public functions. */
__dso_public char *sudo_dso_strerror(void);
__dso_public int sudo_dso_unload(void *handle);
__dso_public void *sudo_dso_findsym(void *handle, const char *symbol);
__dso_public void *sudo_dso_load(const char *path, int mode);
__dso_public void sudo_dso_preload_table(struct sudo_preload_table *table);
__dso_public char *sudo_dso_strerror_v1(void);
__dso_public int sudo_dso_unload_v1(void *handle);
__dso_public void *sudo_dso_findsym_v1(void *handle, const char *symbol);
__dso_public void *sudo_dso_load_v1(const char *path, int mode);
__dso_public void sudo_dso_preload_table_v1(struct sudo_preload_table *table);
#define sudo_dso_strerror() sudo_dso_strerror_v1()
#define sudo_dso_unload(_a) sudo_dso_unload_v1((_a))
#define sudo_dso_findsym(_a, _b) sudo_dso_findsym_v1((_a), (_b))
#define sudo_dso_load(_a, _b) sudo_dso_load_v1((_a), (_b))
#define sudo_dso_preload_table(_a) sudo_dso_preload_table_v1((_a))
#endif /* _SUDO_DSO_H */

View File

@@ -83,43 +83,56 @@ struct sudo_event_base {
};
/* Allocate a new event base. */
__dso_public struct sudo_event_base *sudo_ev_base_alloc(void);
__dso_public struct sudo_event_base *sudo_ev_base_alloc_v1(void);
#define sudo_ev_base_alloc() sudo_ev_base_alloc_v1()
/* Free an event base. */
__dso_public void sudo_ev_base_free(struct sudo_event_base *base);
__dso_public void sudo_ev_base_free_v1(struct sudo_event_base *base);
#define sudo_ev_base_free(_a) sudo_ev_base_free_v1((_a))
/* Allocate a new event. */
__dso_public struct sudo_event *sudo_ev_alloc(int fd, short events, sudo_ev_callback_t callback, void *closure);
__dso_public struct sudo_event *sudo_ev_alloc_v1(int fd, short events, sudo_ev_callback_t callback, void *closure);
#define sudo_ev_alloc(_a, _b, _c, _d) sudo_ev_alloc_v1((_a), (_b), (_c), (_d))
/* Free an event. */
__dso_public void sudo_ev_free(struct sudo_event *ev);
__dso_public void sudo_ev_free_v1(struct sudo_event *ev);
#define sudo_ev_free(_a) sudo_ev_free_v1((_a))
/* Add an event, returns 0 on success, -1 on error */
__dso_public int sudo_ev_add(struct sudo_event_base *head, struct sudo_event *ev, struct timeval *timo, bool tohead);
__dso_public int sudo_ev_add_v1(struct sudo_event_base *head, struct sudo_event *ev, struct timeval *timo, bool tohead);
#define sudo_ev_add(_a, _b, _c, _d) sudo_ev_add_v1((_a), (_b), (_c), (_d))
/* Delete an event, returns 0 on success, -1 on error */
__dso_public int sudo_ev_del(struct sudo_event_base *head, struct sudo_event *ev);
__dso_public int sudo_ev_del_v1(struct sudo_event_base *head, struct sudo_event *ev);
#define sudo_ev_del(_a, _b) sudo_ev_del_v1((_a), (_b))
/* Main event loop, returns SUDO_CB_SUCCESS, SUDO_CB_BREAK or SUDO_CB_ERROR */
__dso_public int sudo_ev_loop(struct sudo_event_base *head, int flags);
__dso_public int sudo_ev_loop_v1(struct sudo_event_base *head, int flags);
#define sudo_ev_loop(_a, _b) sudo_ev_loop_v1((_a), (_b))
/* Return the remaining timeout associated with an event. */
__dso_public int sudo_ev_get_timeleft(struct sudo_event *ev, struct timeval *tv);
__dso_public int sudo_ev_get_timeleft_v1(struct sudo_event *ev, struct timeval *tv);
#define sudo_ev_get_timeleft(_a, _b) sudo_ev_get_timeleft_v1((_a), (_b))
/* Cause the event loop to exit after one run through. */
__dso_public void sudo_ev_loopexit(struct sudo_event_base *base);
__dso_public void sudo_ev_loopexit_v1(struct sudo_event_base *base);
#define sudo_ev_loopexit(_a) sudo_ev_loopexit_v1((_a))
/* Break out of the event loop right now. */
__dso_public void sudo_ev_loopbreak(struct sudo_event_base *base);
__dso_public void sudo_ev_loopbreak_v1(struct sudo_event_base *base);
#define sudo_ev_loopbreak(_a) sudo_ev_loopbreak_v1((_a))
/* Rescan for events and restart the event loop. */
__dso_public void sudo_ev_loopcontinue(struct sudo_event_base *base);
__dso_public void sudo_ev_loopcontinue_v1(struct sudo_event_base *base);
#define sudo_ev_loopcontinue(_a) sudo_ev_loopcontinue_v1((_a))
/* Returns true if event loop stopped due to sudo_ev_loopexit(). */
__dso_public bool sudo_ev_got_exit(struct sudo_event_base *base);
__dso_public bool sudo_ev_got_exit_v1(struct sudo_event_base *base);
#define sudo_ev_got_exit(_a) sudo_ev_got_exit_v1((_a))
/* Returns true if event loop stopped due to sudo_ev_loopbreak(). */
__dso_public bool sudo_ev_got_break(struct sudo_event_base *base);
__dso_public bool sudo_ev_got_break_v1(struct sudo_event_base *base);
#define sudo_ev_got_break(_a) sudo_ev_got_break_v1((_a))
/* Return the fd associated with an event. */
#define sudo_ev_get_fd(_ev) ((_ev) ? (_ev)->fd : -1)

View File

@@ -24,60 +24,60 @@
* go to the debug file, if there is one.
*/
#if (defined(SUDO_ERROR_WRAP) && SUDO_ERROR_WRAP == 0) || defined(NO_VARIADIC_MACROS)
# define sudo_fatal sudo_fatal_nodebug
# define sudo_fatalx sudo_fatalx_nodebug
# define sudo_warn sudo_warn_nodebug
# define sudo_warnx sudo_warnx_nodebug
# define sudo_vfatal(fmt, ap) sudo_vfatal_nodebug((fmt), (ap))
# define sudo_vfatalx(fmt, ap) sudo_vfatalx_nodebug((fmt), (ap))
# define sudo_vwarn(fmt, ap) sudo_vwarn_nodebug((fmt), (ap))
# define sudo_vwarnx(fmt, ap) sudo_vwarnx_nodebug((fmt), (ap))
# define sudo_fatal sudo_fatal_nodebug_v1
# define sudo_fatalx sudo_fatalx_nodebug_v1
# define sudo_warn sudo_warn_nodebug_v1
# define sudo_warnx sudo_warnx_nodebug_v1
# define sudo_vfatal(fmt, ap) sudo_vfatal_nodebug_v1((fmt), (ap))
# define sudo_vfatalx(fmt, ap) sudo_vfatalx_nodebug_v1((fmt), (ap))
# define sudo_vwarn(fmt, ap) sudo_vwarn_nodebug_v1((fmt), (ap))
# define sudo_vwarnx(fmt, ap) sudo_vwarnx_nodebug_v1((fmt), (ap))
#else /* SUDO_ERROR_WRAP */
# if defined(__GNUC__) && __GNUC__ == 2
# define sudo_fatal(fmt...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
fmt); \
sudo_fatal_nodebug(fmt); \
sudo_fatal_nodebug_v1(fmt); \
} while (0)
# define sudo_fatalx(fmt...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|sudo_debug_subsys, fmt); \
sudo_fatalx_nodebug(fmt); \
sudo_fatalx_nodebug_v1(fmt); \
} while (0)
# define sudo_warn(fmt...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
fmt); \
sudo_warn_nodebug(fmt); \
sudo_warn_nodebug_v1(fmt); \
} while (0)
# define sudo_warnx(fmt...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|sudo_debug_subsys, fmt); \
sudo_warnx_nodebug(fmt); \
sudo_warnx_nodebug_v1(fmt); \
} while (0)
# else
# define sudo_fatal(...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
__VA_ARGS__); \
sudo_fatal_nodebug(__VA_ARGS__); \
sudo_fatal_nodebug_v1(__VA_ARGS__); \
} while (0)
# define sudo_fatalx(...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|sudo_debug_subsys, __VA_ARGS__); \
sudo_fatalx_nodebug(__VA_ARGS__); \
sudo_fatalx_nodebug_v1(__VA_ARGS__); \
} while (0)
# define sudo_warn(...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
__VA_ARGS__); \
sudo_warn_nodebug(__VA_ARGS__); \
sudo_warn_nodebug_v1(__VA_ARGS__); \
} while (0)
# define sudo_warnx(...) do { \
sudo_debug_printf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|sudo_debug_subsys, __VA_ARGS__); \
sudo_warnx_nodebug(__VA_ARGS__); \
sudo_warnx_nodebug_v1(__VA_ARGS__); \
} while (0)
# endif /* __GNUC__ == 2 */
# define sudo_vfatal(fmt, ap) do { \
@@ -86,14 +86,14 @@
sudo_debug_vprintf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
(fmt), ap2); \
sudo_vfatal_nodebug((fmt), (ap)); \
sudo_vfatal_nodebug_v1((fmt), (ap)); \
} while (0)
# define sudo_vfatalx(fmt, ap) do { \
va_list ap2; \
va_copy(ap2, (ap)); \
sudo_debug_vprintf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|sudo_debug_subsys, (fmt), ap2); \
sudo_vfatalx_nodebug((fmt), (ap)); \
sudo_vfatalx_nodebug_v1((fmt), (ap)); \
} while (0)
# define sudo_vwarn(fmt, ap) do { \
va_list ap2; \
@@ -101,30 +101,43 @@
sudo_debug_vprintf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO|sudo_debug_subsys, \
(fmt), ap2); \
sudo_vwarn_nodebug((fmt), (ap)); \
sudo_vwarn_nodebug_v1((fmt), (ap)); \
} while (0)
# define sudo_vwarnx(fmt, ap) do { \
va_list ap2; \
va_copy(ap2, (ap)); \
sudo_debug_vprintf2(__func__, __FILE__, __LINE__, \
SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|sudo_debug_subsys, (fmt), ap2); \
sudo_vwarnx_nodebug((fmt), (ap)); \
sudo_vwarnx_nodebug_v1((fmt), (ap)); \
} while (0)
#endif /* SUDO_ERROR_WRAP */
extern int (*sudo_printf)(int msg_type, const char *fmt, ...);
__dso_public int sudo_fatal_callback_deregister(void (*func)(void));
__dso_public int sudo_fatal_callback_register(void (*func)(void));
__dso_public char *sudo_warn_gettext(const char *msgid) __format_arg(1);
__dso_public char *sudo_warn_strerror(int errnum);
__dso_public void sudo_fatal_nodebug(const char *, ...) __printf0like(1, 2) __attribute__((__noreturn__));
__dso_public void sudo_fatalx_nodebug(const char *, ...) __printflike(1, 2) __attribute__((__noreturn__));
__dso_public void sudo_vfatal_nodebug(const char *, va_list ap) __printf0like(1, 0) __attribute__((__noreturn__));
__dso_public void sudo_vfatalx_nodebug(const char *, va_list ap) __printflike(1, 0) __attribute__((__noreturn__));
__dso_public void sudo_warn_nodebug(const char *, ...) __printf0like(1, 2);
__dso_public void sudo_warnx_nodebug(const char *, ...) __printflike(1, 2);
__dso_public void sudo_vwarn_nodebug(const char *, va_list ap) __printf0like(1, 0);
__dso_public void sudo_vwarnx_nodebug(const char *, va_list ap) __printflike(1, 0);
__dso_public int sudo_fatal_callback_deregister_v1(void (*func)(void));
__dso_public int sudo_fatal_callback_register_v1(void (*func)(void));
__dso_public char *sudo_warn_gettext_v1(const char *msgid) __format_arg(1);
__dso_public char *sudo_warn_strerror_v1(int errnum);
__dso_public void sudo_fatal_nodebug_v1(const char *, ...) __printf0like(1, 2) __attribute__((__noreturn__));
__dso_public void sudo_fatalx_nodebug_v1(const char *, ...) __printflike(1, 2) __attribute__((__noreturn__));
__dso_public void sudo_vfatal_nodebug_v1(const char *, va_list ap) __printf0like(1, 0) __attribute__((__noreturn__));
__dso_public void sudo_vfatalx_nodebug_v1(const char *, va_list ap) __printflike(1, 0) __attribute__((__noreturn__));
__dso_public void sudo_warn_nodebug_v1(const char *, ...) __printf0like(1, 2);
__dso_public void sudo_warnx_nodebug_v1(const char *, ...) __printflike(1, 2);
__dso_public void sudo_vwarn_nodebug_v1(const char *, va_list ap) __printf0like(1, 0);
__dso_public void sudo_vwarnx_nodebug_v1(const char *, va_list ap) __printflike(1, 0);
#define sudo_fatal_callback_deregister(_a) sudo_fatal_callback_deregister_v1((_a))
#define sudo_fatal_callback_register(_a) sudo_fatal_callback_register_v1((_a))
#define sudo_warn_gettext(_a) sudo_warn_gettext_v1((_a))
#define sudo_warn_strerror(_a) sudo_warn_strerror_v1((_a))
#define sudo_fatal_nodebug sudo_fatal_nodebug_v1
#define sudo_fatalx_nodebug sudo_fatalx_nodebug_v1
#define sudo_vfatal_nodebug(_a, _b) sudo_vfatal_nodebug_v1((_a), (_b))
#define sudo_vfatalx_nodebug(_a, _b) sudo_vfatalx_nodebug_v1((_a), (_b))
#define sudo_warn_nodebug sudo_warn_nodebug_v1
#define sudo_warnx_nodebug sudo_warnx_nodebug_v1
#define sudo_vwarn_nodebug(_a, _b) sudo_vwarn_nodebug_v1((_a), (_b))
#define sudo_vwarnx_nodebug(_a, _b) sudo_vwarnx_nodebug_v1((_a), (_b))
#endif /* _SUDO_FATAL_H_ */

View File

@@ -33,10 +33,16 @@ struct sudo_lbuf {
int cols;
};
__dso_public void sudo_lbuf_init(struct sudo_lbuf *, int (*)(const char *), int, const char *, int);
__dso_public void sudo_lbuf_destroy(struct sudo_lbuf *);
__dso_public void sudo_lbuf_append(struct sudo_lbuf *, const char *, ...) __printflike(2, 3);
__dso_public void sudo_lbuf_append_quoted(struct sudo_lbuf *, const char *, const char *, ...) __printflike(3, 4);
__dso_public void sudo_lbuf_print(struct sudo_lbuf *);
__dso_public void sudo_lbuf_init_v1(struct sudo_lbuf *, int (*)(const char *), int, const char *, int);
__dso_public void sudo_lbuf_destroy_v1(struct sudo_lbuf *);
__dso_public void sudo_lbuf_append_v1(struct sudo_lbuf *, const char *, ...) __printflike(2, 3);
__dso_public void sudo_lbuf_append_quoted_v1(struct sudo_lbuf *, const char *, const char *, ...) __printflike(3, 4);
__dso_public void sudo_lbuf_print_v1(struct sudo_lbuf *);
#define sudo_lbuf_init(_a, _b, _c, _d, _e) sudo_lbuf_init_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_lbuf_destroy(_a) sudo_lbuf_destroy_v1((_a))
#define sudo_lbuf_append sudo_lbuf_append_v1
#define sudo_lbuf_append_quoted sudo_lbuf_append_quoted_v1
#define sudo_lbuf_print(_a) sudo_lbuf_print_v1((_a))
#endif /* _SUDO_LBUF_H */

View File

@@ -137,48 +137,65 @@
#endif
/* aix.c */
__dso_public int aix_prep_user(char *user, const char *tty);
__dso_public int aix_restoreauthdb(void);
__dso_public int aix_setauthdb(char *user);
/* strtobool.c */
__dso_public int sudo_strtobool(const char *str);
/* strtoid.c */
__dso_public id_t sudo_strtoid(const char *str, const char *sep, char **endp, const char **errstr);
/* strtomode.c */
__dso_public int sudo_strtomode(const char *cp, const char **errstr);
__dso_public int aix_prep_user_v1(char *user, const char *tty);
#define aix_prep_user(_a, _b) aix_prep_user_v1((_a), (_b))
__dso_public int aix_restoreauthdb_v1(void);
#define aix_restoreauthdb() aix_restoreauthdb_v1()
__dso_public int aix_setauthdb_v1(char *user);
#define aix_setauthdb(_a) aix_setauthdb_v1((_a))
/* gidlist.c */
__dso_public int sudo_parse_gids(const char *gidstr, const gid_t *basegid, GETGROUPS_T **gidsp);
__dso_public int sudo_parse_gids_v1(const char *gidstr, const gid_t *basegid, GETGROUPS_T **gidsp);
#define sudo_parse_gids(_a, _b, _c) sudo_parse_gids_v1((_a), (_b), (_c))
/* key_val.c */
__dso_public char *sudo_new_key_val(const char *key, const char *value);
__dso_public char *sudo_new_key_val_v1(const char *key, const char *value);
#define sudo_new_key_val(_a, _b) sudo_new_key_val_v1((_a), (_b))
/* locking.c */
#define SUDO_LOCK 1 /* lock a file */
#define SUDO_TLOCK 2 /* test & lock a file (non-blocking) */
#define SUDO_UNLOCK 4 /* unlock a file */
__dso_public bool sudo_lock_file(int, int);
__dso_public bool sudo_lock_file_v1(int fd, int action);
#define sudo_lock_file(_a, _b) sudo_lock_file_v1((_a), (_b))
/* parseln.c */
__dso_public ssize_t sudo_parseln(char **buf, size_t *bufsize, unsigned int *lineno, FILE *fp);
__dso_public ssize_t sudo_parseln_v1(char **buf, size_t *bufsize, unsigned int *lineno, FILE *fp);
#define sudo_parseln(_a, _b, _c, _d) sudo_parseln_v1((_a), (_b), (_c), (_d))
/* progname.c */
__dso_public void initprogname(const char *);
/* setgroups.c */
__dso_public int sudo_setgroups(int ngids, const GETGROUPS_T *gids);
__dso_public int sudo_setgroups_v1(int ngids, const GETGROUPS_T *gids);
#define sudo_setgroups(_a, _b) sudo_setgroups_v1((_a), (_b))
/* strtobool.c */
__dso_public int sudo_strtobool_v1(const char *str);
#define sudo_strtobool(_a) sudo_strtobool_v1((_a))
/* strtoid.c */
__dso_public id_t sudo_strtoid_v1(const char *str, const char *sep, char **endp, const char **errstr);
#define sudo_strtoid(_a, _b, _c, _d) sudo_strtoid_v1((_a), (_b), (_c), (_d))
/* strtomode.c */
__dso_public int sudo_strtomode_v1(const char *cp, const char **errstr);
#define sudo_strtomode(_a, _b) sudo_strtomode_v1((_a), (_b))
/* term.c */
__dso_public bool sudo_term_cbreak(int);
__dso_public bool sudo_term_copy(int, int);
__dso_public bool sudo_term_noecho(int);
__dso_public bool sudo_term_raw(int, int);
__dso_public bool sudo_term_restore(int, bool);
__dso_public bool sudo_term_cbreak_v1(int fd);
#define sudo_term_cbreak(_a) sudo_term_cbreak_v1((_a))
__dso_public bool sudo_term_copy_v1(int src, int dst);
#define sudo_term_copy(_a, _b) sudo_term_copy_v1((_a), (_b))
__dso_public bool sudo_term_noecho_v1(int fd);
#define sudo_term_noecho(_a) sudo_term_noecho_v1((_a))
__dso_public bool sudo_term_raw_v1(int fd, int isig);
#define sudo_term_raw(_a, _b) sudo_term_raw_v1((_a), (_b))
__dso_public bool sudo_term_restore_v1(int fd, bool flush);
#define sudo_term_restore(_a, _b) sudo_term_restore_v1((_a), (_b))
/* ttysize.c */
__dso_public void sudo_get_ttysize(int *rowp, int *colp);
__dso_public void sudo_get_ttysize_v1(int *rowp, int *colp);
#define sudo_get_ttysize(_a, _b) sudo_get_ttysize_v1((_a), (_b))
#endif /* _SUDO_UTIL_H */