applied patch #1223041 - add a per-user config file

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4154 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2005-07-02 12:53:37 +00:00
parent 0d1e06dd2d
commit 1caa4cf661

View file

@ -77,6 +77,49 @@ static void sigint(int sig)
quit(); quit();
} }
static string get_home()
{
char *home = getenv(
#ifdef _WIN32
"APPDATA"
#else
"HOME"
#endif
);
return home ? home : "";
}
static int process_config(CEXEBuild& build, string& conf)
{
FILE *cfg=fopen(conf.c_str(),"rt");
if (cfg)
{
if (build.display_script)
{
fprintf(g_output,"Processing config: \n");
fflush(g_output);
}
int ret=build.process_script(cfg,(char*)conf.c_str());
fclose(cfg);
if (ret != PS_OK && ret != PS_EOF)
{
if (build.display_errors)
{
fprintf(g_output,"Error in config on line %d -- aborting creation process\n",build.linecnt);
fflush(g_output);
}
return 1;
}
if (build.display_script)
{
fprintf(g_output,"\n");
fflush(g_output);
}
}
return 0;
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
CEXEBuild build; CEXEBuild build;
@ -283,31 +326,22 @@ int main(int argc, char **argv)
if (!g_noconfig) if (!g_noconfig)
{ {
g_noconfig=1; g_noconfig=1;
string nsisconf=get_executable_dir(argv[0])+PLATFORM_PATH_SEPARATOR_STR+"nsisconf.nsh";
FILE *cfg=fopen(nsisconf.c_str(),"rt"); string main_conf = get_executable_dir(argv[0]) + PLATFORM_PATH_SEPARATOR_STR + "nsisconf.nsh";
if (cfg) if (process_config(build, main_conf))
{
if (build.display_script)
{
fprintf(g_output,"Processing config: \n");
fflush(g_output);
}
int ret=build.process_script(cfg,(char*)nsisconf.c_str());
fclose(cfg);
if (ret != PS_OK && ret != PS_EOF)
{
if (build.display_errors)
{
fprintf(g_output,"Error in config on line %d -- aborting creation process\n",build.linecnt);
fflush(g_output);
}
return 1; return 1;
}
if (build.display_script) string home_conf = get_home();
if (home_conf != "")
{ {
fprintf(g_output,"\n"); home_conf += PLATFORM_PATH_SEPARATOR_STR;
fflush(g_output); #ifdef _WIN32
} home_conf += "nsisconf.nsh";
#else
home_conf += ".nsisconf.nsh";
#endif
if (process_config(build, home_conf))
return 1;
} }
} }