05d292b2 (kx 2023-03-24 03:51:10 +0300 1)
05d292b2 (kx 2023-03-24 03:51:10 +0300 2) #ifndef __REPO_LIST_H
05d292b2 (kx 2023-03-24 03:51:10 +0300 3) #define __REPO_LIST_H
05d292b2 (kx 2023-03-24 03:51:10 +0300 4)
05d292b2 (kx 2023-03-24 03:51:10 +0300 5) #ifndef __DEBUG__
05d292b2 (kx 2023-03-24 03:51:10 +0300 6) #define __DEBUG__ 0
05d292b2 (kx 2023-03-24 03:51:10 +0300 7) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 8)
05d292b2 (kx 2023-03-24 03:51:10 +0300 9) #ifndef ST_GLOBAL
05d292b2 (kx 2023-03-24 03:51:10 +0300 10) #define ST_GLOBAL 1
05d292b2 (kx 2023-03-24 03:51:10 +0300 11) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 12) #ifndef ST_REPOS
05d292b2 (kx 2023-03-24 03:51:10 +0300 13) #define ST_REPOS 2
05d292b2 (kx 2023-03-24 03:51:10 +0300 14) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 15)
05d292b2 (kx 2023-03-24 03:51:10 +0300 16) #ifndef DT_NUMERICAL
05d292b2 (kx 2023-03-24 03:51:10 +0300 17) #define DT_NUMERICAL 0x01
05d292b2 (kx 2023-03-24 03:51:10 +0300 18) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 19) #ifndef DT_PATH
05d292b2 (kx 2023-03-24 03:51:10 +0300 20) #define DT_PATH 0x02
05d292b2 (kx 2023-03-24 03:51:10 +0300 21) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 22) #ifndef DT_STRING
05d292b2 (kx 2023-03-24 03:51:10 +0300 23) #define DT_STRING 0x04
05d292b2 (kx 2023-03-24 03:51:10 +0300 24) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 25)
05d292b2 (kx 2023-03-24 03:51:10 +0300 26) struct section
05d292b2 (kx 2023-03-24 03:51:10 +0300 27) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 28) int type;
05d292b2 (kx 2023-03-24 03:51:10 +0300 29) unsigned char *name;
05d292b2 (kx 2023-03-24 03:51:10 +0300 30) struct dlist *list;
05d292b2 (kx 2023-03-24 03:51:10 +0300 31) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 32)
05d292b2 (kx 2023-03-24 03:51:10 +0300 33) struct variable
05d292b2 (kx 2023-03-24 03:51:10 +0300 34) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 35) unsigned char *name;
05d292b2 (kx 2023-03-24 03:51:10 +0300 36) union
05d292b2 (kx 2023-03-24 03:51:10 +0300 37) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 38) int val;
05d292b2 (kx 2023-03-24 03:51:10 +0300 39) unsigned char *vptr;
05d292b2 (kx 2023-03-24 03:51:10 +0300 40) } _v;
05d292b2 (kx 2023-03-24 03:51:10 +0300 41) unsigned int type;
05d292b2 (kx 2023-03-24 03:51:10 +0300 42) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 43)
05d292b2 (kx 2023-03-24 03:51:10 +0300 44) struct repo
05d292b2 (kx 2023-03-24 03:51:10 +0300 45) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 46) unsigned char *path;
05d292b2 (kx 2023-03-24 03:51:10 +0300 47) struct dlist *list;
05d292b2 (kx 2023-03-24 03:51:10 +0300 48) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 49)
05d292b2 (kx 2023-03-24 03:51:10 +0300 50) extern struct dlist *config;
05d292b2 (kx 2023-03-24 03:51:10 +0300 51)
05d292b2 (kx 2023-03-24 03:51:10 +0300 52)
05d292b2 (kx 2023-03-24 03:51:10 +0300 53) #ifdef __cplusplus
05d292b2 (kx 2023-03-24 03:51:10 +0300 54) extern "C" {
05d292b2 (kx 2023-03-24 03:51:10 +0300 55) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 56)
05d292b2 (kx 2023-03-24 03:51:10 +0300 57) typedef void (*rlist_errfunc)( const char *fmt, ... );
05d292b2 (kx 2023-03-24 03:51:10 +0300 58)
05d292b2 (kx 2023-03-24 03:51:10 +0300 59) extern void rlist_error( const char *fmt, ... ) __attribute__((format (printf,1,2)));
05d292b2 (kx 2023-03-24 03:51:10 +0300 60) extern rlist_errfunc rlist_fatal; /* Default Fatal Error Function == rlist_error() */
05d292b2 (kx 2023-03-24 03:51:10 +0300 61)
05d292b2 (kx 2023-03-24 03:51:10 +0300 62)
05d292b2 (kx 2023-03-24 03:51:10 +0300 63) extern struct dlist *read_config( void );
05d292b2 (kx 2023-03-24 03:51:10 +0300 64) extern void print_config( struct strbuf *sb, struct dlist *list );
05d292b2 (kx 2023-03-24 03:51:10 +0300 65) extern struct variable *lookup( struct repo *repo, struct variable *variable );
05d292b2 (kx 2023-03-24 03:51:10 +0300 66) extern struct variable *lookup_global( struct section *section, struct variable *variable );
05d292b2 (kx 2023-03-24 03:51:10 +0300 67) extern struct repo *lookup_repo( struct dlist *config, const char *path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 68) extern struct section *lookup_section( struct dlist *config, const char *name );
05d292b2 (kx 2023-03-24 03:51:10 +0300 69) extern struct section *lookup_global_section( struct dlist *config );
05d292b2 (kx 2023-03-24 03:51:10 +0300 70)
05d292b2 (kx 2023-03-24 03:51:10 +0300 71) extern int repolist_length( struct dlist *config );
05d292b2 (kx 2023-03-24 03:51:10 +0300 72) extern struct repo *repolist_nth( struct dlist *config, int n );
05d292b2 (kx 2023-03-24 03:51:10 +0300 73) extern int repo_position( struct dlist *config, struct repo *repo );
05d292b2 (kx 2023-03-24 03:51:10 +0300 74)
05d292b2 (kx 2023-03-24 03:51:10 +0300 75) extern struct dlist *parent_section_node_repolist_nth( struct dlist *config, int n );
05d292b2 (kx 2023-03-24 03:51:10 +0300 76) extern struct dlist *parent_rlist_node_repolist_nth( struct dlist *config, int n );
05d292b2 (kx 2023-03-24 03:51:10 +0300 77)
05d292b2 (kx 2023-03-24 03:51:10 +0300 78) extern void free_config( void );
05d292b2 (kx 2023-03-24 03:51:10 +0300 79)
05d292b2 (kx 2023-03-24 03:51:10 +0300 80)
05d292b2 (kx 2023-03-24 03:51:10 +0300 81) #ifdef __cplusplus
05d292b2 (kx 2023-03-24 03:51:10 +0300 82) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 83) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 84)
05d292b2 (kx 2023-03-24 03:51:10 +0300 85) #endif /* __REPO_LIST_H */