/*
*/
/*
*/
/* Solaris Kerberos */
#ifndef __PROF_INT_H
#define __PROF_INT_H
#include <time.h>
#include <stdio.h>
#include <TargetConditionals.h>
#endif
#include "k5-thread.h"
#include "k5-platform.h"
#include "com_err.h"
#include "profile.h"
typedef long prf_magic_t;
/*
* This is the structure which stores the profile information for a
* particular configuration file.
*
* Locking strategy:
* - filespec, fslen are fixed after creation
* - refcount and next should only be tweaked with the global lock held
* - other fields can be tweaked after grabbing the in-struct lock
*/
struct _prf_data_t {
char *comment;
/* Some separation between fields controlled by different
mutexes. Theoretically, both could be accessed at the same
time from different threads on different CPUs with separate
caches. Don't let the threads clobber each other's
changes. One mutex controlling the whole thing would be
better, but sufficient separation might suffice.
This is icky. I just hope it's adequate.
For next major release, fix this. */
/* Was: "profile_filespec_t filespec". Now: flexible char
array ... except, we need to work in C89, so an array
length must be specified. */
};
prf_data_t profile_make_prf_data(const char *);
struct _prf_file_t {
};
/*
* The profile flags
*/
/*
* This structure defines the high-level, user visible profile_t
* object, which is used as a handle by users who need to query some
* configuration file(s)
*/
struct _profile_t {
};
typedef struct _profile_options {
char *name;
int *value;
int found;
typedef struct _profile_times {
char *name;
char **value;
int found;
/*
* Solaris Kerberos: Added here to provide to other non-prof_get functions.
* The profile_string_list structure is used for internal booking
* purposes to build up the list, which is returned in *ret_list by
* the end_list() function.
*/
struct profile_string_list {
char **list;
int num;
int max;
};
/*
* Used by the profile iterator in prof_get.c
*/
/*
* Check if a filespec is last in a list (NULL on UNIX, invalid FSSpec on MacOS
*/
/* profile_parse.c */
/* prof_tree.c */
void profile_free_node
(struct profile_node *relation);
struct profile_node **ret_node);
(struct profile_node *node);
(struct profile_node *section,
struct profile_node **ret_node);
(struct profile_node *node);
(struct profile_node *node);
const char *profile_get_node_name
(struct profile_node *node);
const char *profile_get_node_value
(struct profile_node *node);
(struct profile_node *section,
int section_flag, void **state,
struct profile_node **node);
(struct profile_node *section,
(struct profile_node *section,
(struct profile_node *section,
struct profile_node **parent);
char **ret_name);
(void **iter_p);
(struct profile_node *node);
/* prof_file.c */
#define profile_flush_file(P) (((P) && (P)->magic == PROF_MAGIC_FILE) ? profile_flush_file_data((P)->data) : PROF_MAGIC_FILE)
(prf_data_t data);
#define profile_flush_file_to_file(P,F) (((P) && (P)->magic == PROF_MAGIC_FILE) ? profile_flush_file_data_to_file((P)->data, (F)) : PROF_MAGIC_FILE)
void profile_free_file
void profile_dereference_data (prf_data_t);
int profile_lock_global (void);
int profile_unlock_global (void);
/* prof_init.c -- included from profile.h */
/* prof_get.c */
const char **ret_value);
/*
* Solaris Kerberos: Need basic routines for other functions besides prof_get.
*/
/* Others included from profile.h */
/* prof_set.c -- included from profile.h */
/* Solaris Kerberos */
#endif /* __PROF_INT_H */