int do_add_file(const char *lgss, int attrib, int recurse, int linecnt, int *total_files, const char *name_override=0, int generatecode=1, int *data_handle=0, int rec_depth=0);
GrowBuf m_linebuild; // used for concatenating lines
// used by doParse to do preprocessing
struct ifblock
{
int hasexeced;
int elseused;
int ignore;
int inherited_ignore;
} *cur_ifblock;
TinyGrowBuf build_preprocessor_data;
void start_ifblock();
void end_ifblock();
int num_ifblock();
int last_line_had_slash;
bool inside_comment;
void ERROR_MSG(const char *s, ...);
void SCRIPT_MSG(const char *s, ...);
void INFO_MSG(const char *s, ...);
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
int add_plugins_dir_initializer(void);
#endif //NSIS_CONFIG_PLUGIN_SUPPORT
// build.cpp functions used mostly by script.cpp
int getcurdbsize();
int add_section(const char *secname, const char *defname, int expand=0);
int section_end();
int add_function(const char *funname);
int function_end();
void section_add_size_kb(int kb);
int section_add_flags(int flags);
int section_add_install_type(int inst_type);
int add_page(int type);
int page_end();
int add_label(const char *name);
int add_entry(const entry *ent);
int add_entry_direct(int which, int o0=0, int o1=0, int o2=0, int o3=0, int o4=0, int o5=0);
int add_db_data(IMMap *map); // returns offset
int add_db_data(const char *data, int length); // returns offset
int add_data(const char *data, int length, IGrowBuf *dblock); // returns offset
int add_string(const char *string, int process=1, WORD codepage=CP_ACP); // returns offset (in string table)
int add_intstring(const int i); // returns offset in stringblock
int preprocess_string(char *out, const char *in, WORD codepage=CP_ACP);
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
// Added by Ximon Eighteen 5th August 2002
Plugins m_plugins;
bool plugin_used;
bool uninst_plugin_used;
int build_plugin_unload;
#endif //NSIS_CONFIG_PLUGIN_SUPPORT
// build.cpp functions used mostly within build.cpp
int datablock_optimize(int start_offset);
void printline(int l);
int process_jump(LineParser &line, int wt, int *offs);
int AddVersionInfo();
int ProcessPages();
void PreperInstTypes();
void PreperHeaders(IGrowBuf *hdrbuf);
int resolve_jump_int(const char *fn, int *a, int offs, int start, int end);
int resolve_call_int(const char *fn, const char *str, int fptr, int *ofs);
int resolve_instruction(const char *fn, const char *str, entry *w, int offs, int start, int end);
int resolve_coderefs(const char *str);
void print_warnings();
int uninstall_generate();
void set_uninstall_mode(int un);
// lang.cpp functions and variables
void InitLangTables();
LanguageTable *GetLangTable(LANGID &lang);
int DefineLangString(char *name, int process=-1);
int DefineInnerLangString(int id, int process=-1);
int SetLangString(char *name, LANGID lang, char *string);
int SetInnerString(int id, char *string);
int GenerateLangTables();
void FillLanguageTable(LanguageTable *table);
int HasUserDefined(int id) {
const char *us = UserInnerStrings.get(id);
return us && *us;
};
LanguageTable *LoadLangFile(char *filename);
void DeleteLangTable(LanguageTable *table);
NLFRef NLFRefs[NLF_STRINGS];
bool keep_ref;
StringsArray UserInnerStrings;
bool defcodepage_set;
GrowBuf lang_tables;
LANGID last_used_lang;
LangStringList build_langstrings;
int build_langstring_num, ubuild_langstring_num;
char build_font[1024];
int build_font_size;
unsigned int uDefCodePage;
// pages stuff
int license_res_id;
page *cur_page;
int cur_page_type;
int enable_last_page_cancel, uenable_last_page_cancel;