119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * profile.h
319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project *
419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Copyright (C) 2005 by Theodore Ts'o.
519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project *
619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * %Begin-Header%
719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * This file may be redistributed under the terms of the GNU Public
819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * License.
919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * %End-Header%
103984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt *
1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Copyright (C) 1985-2005 by the Massachusetts Institute of Technology.
123984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt *
1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * All rights reserved.
143984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt *
1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Export of this software from the United States of America may require
1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * a specific license from the United States Government.  It is the
1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * responsibility of any person or organization contemplating export to
1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * obtain such a license before exporting.
193984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt *
2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * distribute this software and its documentation for any purpose and
2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * without fee is hereby granted, provided that the above copyright
2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * notice appear in all copies and that both that copyright notice and
2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * this permission notice appear in supporting documentation, and that
2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * the name of M.I.T. not be used in advertising or publicity pertaining
2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * to distribution of the software without specific, written prior
2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * permission.  Furthermore if you modify this software you must label
2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * your software as modified software and not distribute it in such a
2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * fashion that it might be confused with the original MIT software.
3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * M.I.T. makes no representations about the suitability of this software
3119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * for any purpose.  It is provided "as is" without express or implied
3219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * warranty.
333984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt *
3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */
3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifndef _PROFILE_H
4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define _PROFILE_H
4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projecttypedef struct _profile_t *profile_t;
4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
443984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidttypedef void (*profile_syntax_err_cb_t)(const char *file, long err,
4519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project					int line_num);
4619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/*
4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Used by the profile iterator in prof_get.c
4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */
5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define PROFILE_ITER_LIST_SECTION	0x0001
5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define PROFILE_ITER_SECTIONS_ONLY	0x0002
5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define PROFILE_ITER_RELATIONS_ONLY	0x0004
5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef __cplusplus
5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern "C" {
5619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif /* __cplusplus */
5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
5819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_init
5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(const char * *files, profile_t *ret_profile);
6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
6119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid profile_release
6219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile);
6319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
6419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_set_default
6519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile, const char *def_string);
6619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
6719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_get_string
683984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt	(profile_t profile, const char *name, const char *subname,
6919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			const char *subsubname, const char *def_val,
7019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			char **ret_string);
7119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_get_integer
7219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile, const char *name, const char *subname,
7319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			const char *subsubname, int def_val,
7419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			int *ret_default);
7519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
7619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_get_uint
7719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile, const char *name, const char *subname,
783984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt		const char *subsubname, unsigned int def_val,
7919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		unsigned int *ret_int);
8019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
8119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_get_boolean
8219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile, const char *name, const char *subname,
8319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			const char *subsubname, int def_val,
8419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project			int *ret_default);
8519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
8619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_iterator_create
8719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(profile_t profile, const char *const *names,
8819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project		   int flags, void **ret_iter);
8919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
9019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectvoid profile_iterator_free
9119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(void **iter_p);
923984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt
9319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectlong profile_iterator
9419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project	(void	**iter_p, char **ret_name, char **ret_value);
9519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
9619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectprofile_syntax_err_cb_t profile_set_syntax_err_cb(profile_syntax_err_cb_t hook);
9719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
9819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef __cplusplus
9919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project}
10019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif /* __cplusplus */
10119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project
10219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif /* _KRB5_H */
103