yann@1: /* yann@1: * Copyright (C) 2002 Roman Zippel yann@1: * Released under the terms of the GNU GPL v2.0. yann@1: */ yann@1: yann@1: #ifndef LKC_H yann@1: #define LKC_H yann@1: yann@1: #include "expr.h" yann@1: yann@1: #ifndef KBUILD_NO_NLS yann@1: # include yann@1: #else yann@943: static inline const char *gettext(const char *txt) { return txt; } yann@943: static inline void textdomain(const char *domainname) {} yann@943: static inline void bindtextdomain(const char *name, const char *dir) {} yann@2448: static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } yann@1: #endif yann@1: yann@1: #ifdef __cplusplus yann@1: extern "C" { yann@1: #endif yann@1: yann@1: #ifdef LKC_DIRECT_LINK yann@1: #define P(name,type,arg) extern type name arg yann@1: #else yann@1: #include "lkc_defs.h" yann@1: #define P(name,type,arg) extern type (*name ## _p) arg yann@1: #endif yann@1: #include "lkc_proto.h" yann@1: #undef P yann@1: yann@1: #define SRCTREE "srctree" yann@1: yann@2448: #ifndef PACKAGE yann@2448: #define PACKAGE "linux" yann@2448: #endif yann@2448: yann@1: #define LOCALEDIR "/usr/share/locale" yann@1: yann@1: #define _(text) gettext(text) yann@1: #define N_(text) (text) yann@1: yann@2448: #ifndef CONFIG_ yann@2448: #define CONFIG_ "CONFIG_" yann@2448: #endif yann@1: yann@1: #define TF_COMMAND 0x0001 yann@1: #define TF_PARAM 0x0002 yann@1: #define TF_OPTION 0x0004 yann@1: yann@943: enum conf_def_mode { yann@943: def_default, yann@943: def_yes, yann@943: def_mod, yann@943: def_no, yann@943: def_random yann@943: }; yann@943: yann@1: #define T_OPT_MODULES 1 yann@1: #define T_OPT_DEFCONFIG_LIST 2 yann@943: #define T_OPT_ENV 3 yann@1: yann@1: struct kconf_id { yann@1: int name; yann@1: int token; yann@1: unsigned int flags; yann@1: enum symbol_type stype; yann@1: }; yann@1: yann@2448: #ifdef YYDEBUG yann@2448: extern int zconfdebug; yann@2448: #endif yann@2448: yann@1: int zconfparse(void); yann@1: void zconfdump(FILE *out); yann@1: void zconf_starthelp(void); yann@1: FILE *zconf_fopen(const char *name); yann@1: void zconf_initscan(const char *name); yann@1: void zconf_nextfile(const char *name); yann@1: int zconf_lineno(void); yann@2448: const char *zconf_curname(void); yann@2448: yann@2448: /* conf.c */ yann@2448: void xfgets(char *str, int size, FILE *in); yann@1: yann@1: /* confdata.c */ yann@943: const char *conf_get_configname(void); yann@2448: const char *conf_get_autoconfig_name(void); yann@1: char *conf_get_default_confname(void); yann@39: void sym_set_change_count(int count); yann@39: void sym_add_change_count(int count); yann@943: void conf_set_all_new_symbols(enum conf_def_mode mode); yann@1: yann@2448: /* confdata.c and expr.c */ yann@2448: static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) yann@2448: { yann@2448: if (fwrite(str, len, count, out) < count) yann@2448: fprintf(stderr, "\nError in writing or end of file.\n"); yann@2448: } yann@2448: yann@1: /* kconfig_load.c */ yann@1: void kconfig_load(void); yann@1: yann@1: /* menu.c */ yann@2448: void _menu_init(void); yann@943: void menu_warn(struct menu *menu, const char *fmt, ...); yann@1: struct menu *menu_add_menu(void); yann@1: void menu_end_menu(void); yann@1: void menu_add_entry(struct symbol *sym); yann@1: void menu_end_entry(void); yann@1: void menu_add_dep(struct expr *dep); yann@2448: void menu_add_visibility(struct expr *dep); yann@1: struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); yann@1: struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); yann@1: void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); yann@1: void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); yann@1: void menu_add_option(int token, char *arg); yann@1: void menu_finalize(struct menu *parent); yann@1: void menu_set_type(int type); yann@1: yann@1: /* util.c */ yann@1: struct file *file_lookup(const char *name); yann@1: int file_write_dep(const char *name); yann@1: yann@1: struct gstr { yann@1: size_t len; yann@1: char *s; yann@2448: /* yann@2448: * when max_width is not zero long lines in string s (if any) get yann@2448: * wrapped not to exceed the max_width value yann@2448: */ yann@2448: int max_width; yann@1: }; yann@1: struct gstr str_new(void); yann@1: struct gstr str_assign(const char *s); yann@1: void str_free(struct gstr *gs); yann@1: void str_append(struct gstr *gs, const char *s); yann@1: void str_printf(struct gstr *gs, const char *fmt, ...); yann@1: const char *str_get(struct gstr *gs); yann@1: yann@1: /* symbol.c */ yann@943: extern struct expr *sym_env_list; yann@943: yann@1: void sym_init(void); yann@1: void sym_clear_all_valid(void); yann@1: void sym_set_all_changed(void); yann@1: void sym_set_changed(struct symbol *sym); yann@2448: struct symbol *sym_choice_default(struct symbol *sym); yann@2448: const char *sym_get_string_default(struct symbol *sym); yann@1: struct symbol *sym_check_deps(struct symbol *sym); yann@1: struct property *prop_alloc(enum prop_type type, struct symbol *sym); yann@1: struct symbol *prop_get_symbol(struct property *prop); yann@943: struct property *sym_get_env_prop(struct symbol *sym); yann@1: yann@1: static inline tristate sym_get_tristate_value(struct symbol *sym) yann@1: { yann@1: return sym->curr.tri; yann@1: } yann@1: yann@1: yann@1: static inline struct symbol *sym_get_choice_value(struct symbol *sym) yann@1: { yann@1: return (struct symbol *)sym->curr.val; yann@1: } yann@1: yann@1: static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) yann@1: { yann@1: return sym_set_tristate_value(chval, yes); yann@1: } yann@1: yann@1: static inline bool sym_is_choice(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_CHOICE ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_is_choice_value(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_CHOICEVAL ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_is_optional(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_OPTIONAL ? true : false; yann@1: } yann@1: yann@1: static inline bool sym_has_value(struct symbol *sym) yann@1: { yann@1: return sym->flags & SYMBOL_DEF_USER ? true : false; yann@1: } yann@1: yann@1: #ifdef __cplusplus yann@1: } yann@1: #endif yann@1: yann@1: #endif /* LKC_H */