Merge pull request #801 from dl8dtl/conffile-clean-up
Conffile clean up
This commit is contained in:
commit
539eec79e6
|
@ -21,6 +21,13 @@
|
||||||
#ifndef avrdude_h
|
#ifndef avrdude_h
|
||||||
#define avrdude_h
|
#define avrdude_h
|
||||||
|
|
||||||
|
#define SYSTEM_CONF_FILE "avrdude.conf"
|
||||||
|
#if defined(WIN32NATIVE)
|
||||||
|
#define USER_CONF_FILE "avrdude.rc"
|
||||||
|
#else
|
||||||
|
#define USER_CONF_FILE ".avrduderc"
|
||||||
|
#endif
|
||||||
|
|
||||||
extern char * progname; /* name of program, for messages */
|
extern char * progname; /* name of program, for messages */
|
||||||
extern char progbuf[]; /* spaces same length as progname */
|
extern char progbuf[]; /* spaces same length as progname */
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ void win_sys_config_set(char sys_config[PATH_MAX])
|
||||||
sys_config[0] = 0;
|
sys_config[0] = 0;
|
||||||
|
|
||||||
/* Use Windows API call to search for the Windows default system config file.*/
|
/* Use Windows API call to search for the Windows default system config file.*/
|
||||||
SearchPath(NULL, "avrdude.conf", NULL, PATH_MAX, sys_config, &filename);
|
SearchPath(NULL, SYSTEM_CONF_FILE, NULL, PATH_MAX, sys_config, &filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ void win_usr_config_set(char usr_config[PATH_MAX])
|
||||||
usr_config[0] = 0;
|
usr_config[0] = 0;
|
||||||
|
|
||||||
/* Use Windows API call to search for the Windows default user config file. */
|
/* Use Windows API call to search for the Windows default user config file. */
|
||||||
SearchPath(NULL, "avrdude.rc", NULL, PATH_MAX, usr_config, &filename);
|
SearchPath(NULL, USER_CONF_FILE, NULL, PATH_MAX, usr_config, &filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
254
src/main.c
254
src/main.c
|
@ -302,6 +302,17 @@ static void cleanup_main(void)
|
||||||
cleanup_config();
|
cleanup_config();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void replace_backslashes(char *s)
|
||||||
|
{
|
||||||
|
// Replace all backslashes with forward slashes
|
||||||
|
for (int i = 0; i < strlen(s); i++) {
|
||||||
|
if (s[i] == '\\') {
|
||||||
|
s[i] = '/';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* main routine
|
* main routine
|
||||||
*/
|
*/
|
||||||
|
@ -362,6 +373,8 @@ int main(int argc, char * argv [])
|
||||||
setvbuf(stdout, (char*)NULL, _IOLBF, 0);
|
setvbuf(stdout, (char*)NULL, _IOLBF, 0);
|
||||||
setvbuf(stderr, (char*)NULL, _IOLBF, 0);
|
setvbuf(stderr, (char*)NULL, _IOLBF, 0);
|
||||||
|
|
||||||
|
sys_config[0] = '\0';
|
||||||
|
|
||||||
progname = strrchr(argv[0],'/');
|
progname = strrchr(argv[0],'/');
|
||||||
|
|
||||||
#if defined (WIN32NATIVE)
|
#if defined (WIN32NATIVE)
|
||||||
|
@ -422,131 +435,6 @@ int main(int argc, char * argv [])
|
||||||
is_open = 0;
|
is_open = 0;
|
||||||
logfile = NULL;
|
logfile = NULL;
|
||||||
|
|
||||||
/*
|
|
||||||
* EXECUTABLE ABSPATH
|
|
||||||
* ------------------
|
|
||||||
* Determine the absolute path to avrdude executable. This will be used to
|
|
||||||
* locate the 'avrdude.conf' file later.
|
|
||||||
*/
|
|
||||||
int executable_dirpath_len;
|
|
||||||
int executable_abspath_len = wai_getExecutablePath(
|
|
||||||
executable_abspath,
|
|
||||||
PATH_MAX,
|
|
||||||
&executable_dirpath_len
|
|
||||||
);
|
|
||||||
if (
|
|
||||||
(executable_abspath_len != -1) &&
|
|
||||||
(executable_abspath_len != 0) &&
|
|
||||||
(executable_dirpath_len != -1) &&
|
|
||||||
(executable_dirpath_len != 0)
|
|
||||||
) {
|
|
||||||
// All requirements satisfied, executable path was found
|
|
||||||
executable_abspath_found = true;
|
|
||||||
|
|
||||||
// Make sure the string is null terminated
|
|
||||||
executable_abspath[executable_abspath_len] = '\0';
|
|
||||||
|
|
||||||
// Replace all backslashes with forward slashes
|
|
||||||
i = 0;
|
|
||||||
while (true) {
|
|
||||||
if (executable_abspath[i] == '\0') {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (executable_abspath[i] == '\\') {
|
|
||||||
executable_abspath[i] = '/';
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Define 'executable_dirpath' to be the path to the parent folder of the
|
|
||||||
// executable.
|
|
||||||
strcpy(executable_dirpath, executable_abspath);
|
|
||||||
executable_dirpath[executable_dirpath_len] = '\0';
|
|
||||||
|
|
||||||
// Debug output
|
|
||||||
// avrdude_message(MSG_INFO, "executable_abspath = %s\n", executable_abspath);
|
|
||||||
// avrdude_message(MSG_INFO, "executable_abspath_len = %i\n", executable_abspath_len);
|
|
||||||
// avrdude_message(MSG_INFO, "executable_dirpath = %s\n", executable_dirpath);
|
|
||||||
// avrdude_message(MSG_INFO, "executable_dirpath_len = %i\n", executable_dirpath_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* SYSTEM CONFIG
|
|
||||||
* -------------
|
|
||||||
* Determine the location of 'avrdude.conf'. Check in this order:
|
|
||||||
* 1. <dirpath of executable>/../etc/avrdude.conf
|
|
||||||
* 2. <dirpath of executable>/avrdude.conf
|
|
||||||
* 3. CONFIG_DIR/avrdude.conf
|
|
||||||
*
|
|
||||||
* When found, write the result into the 'sys_config' variable.
|
|
||||||
*/
|
|
||||||
if (executable_abspath_found) {
|
|
||||||
// 1. Check <dirpath of executable>/../etc/avrdude.conf
|
|
||||||
strcpy(sys_config, executable_dirpath);
|
|
||||||
sys_config[PATH_MAX - 1] = '\0';
|
|
||||||
i = strlen(sys_config);
|
|
||||||
if (i && (sys_config[i - 1] != '/'))
|
|
||||||
strcat(sys_config, "/");
|
|
||||||
strcat(sys_config, "../etc/avrdude.conf");
|
|
||||||
sys_config[PATH_MAX - 1] = '\0';
|
|
||||||
if (access(sys_config, F_OK) == 0) {
|
|
||||||
sys_config_found = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// 2. Check <dirpath of executable>/avrdude.conf
|
|
||||||
strcpy(sys_config, executable_dirpath);
|
|
||||||
sys_config[PATH_MAX - 1] = '\0';
|
|
||||||
i = strlen(sys_config);
|
|
||||||
if (i && (sys_config[i - 1] != '/'))
|
|
||||||
strcat(sys_config, "/");
|
|
||||||
strcat(sys_config, "avrdude.conf");
|
|
||||||
sys_config[PATH_MAX - 1] = '\0';
|
|
||||||
if (access(sys_config, F_OK) == 0) {
|
|
||||||
sys_config_found = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!sys_config_found) {
|
|
||||||
// 3. Check CONFIG_DIR/avrdude.conf
|
|
||||||
#if defined(WIN32NATIVE)
|
|
||||||
win_sys_config_set(sys_config);
|
|
||||||
#else
|
|
||||||
strcpy(sys_config, CONFIG_DIR);
|
|
||||||
i = strlen(sys_config);
|
|
||||||
if (i && (sys_config[i - 1] != '/'))
|
|
||||||
strcat(sys_config, "/");
|
|
||||||
strcat(sys_config, "avrdude.conf");
|
|
||||||
#endif
|
|
||||||
if (access(sys_config, F_OK) == 0) {
|
|
||||||
sys_config_found = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Debug output
|
|
||||||
// avrdude_message(MSG_INFO, "sys_config = %s\n", sys_config);
|
|
||||||
// avrdude_message(MSG_INFO, "sys_config_found = %s\n", sys_config_found ? "true" : "false");
|
|
||||||
// avrdude_message(MSG_INFO, "\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* USER CONFIG
|
|
||||||
* -----------
|
|
||||||
* Determine the location of '.avrduderc'. Nothing changed here.
|
|
||||||
*/
|
|
||||||
#if defined(WIN32NATIVE)
|
|
||||||
win_usr_config_set(usr_config);
|
|
||||||
#else
|
|
||||||
usr_config[0] = 0;
|
|
||||||
homedir = getenv("HOME");
|
|
||||||
if (homedir != NULL) {
|
|
||||||
strcpy(usr_config, homedir);
|
|
||||||
i = strlen(usr_config);
|
|
||||||
if (i && (usr_config[i - 1] != '/'))
|
|
||||||
strcat(usr_config, "/");
|
|
||||||
strcat(usr_config, ".avrduderc");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
len = strlen(progname) + 2;
|
len = strlen(progname) + 2;
|
||||||
for (i=0; i<len; i++)
|
for (i=0; i<len; i++)
|
||||||
progbuf[i] = ' ';
|
progbuf[i] = ' ';
|
||||||
|
@ -764,6 +652,122 @@ int main(int argc, char * argv [])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* search for system configuration file unless -C conffile was given */
|
||||||
|
if (strlen(sys_config) == 0) {
|
||||||
|
/*
|
||||||
|
* EXECUTABLE ABSPATH
|
||||||
|
* ------------------
|
||||||
|
* Determine the absolute path to avrdude executable. This will be used to
|
||||||
|
* locate the 'avrdude.conf' file later.
|
||||||
|
*/
|
||||||
|
int executable_dirpath_len;
|
||||||
|
int executable_abspath_len = wai_getExecutablePath(
|
||||||
|
executable_abspath,
|
||||||
|
PATH_MAX,
|
||||||
|
&executable_dirpath_len
|
||||||
|
);
|
||||||
|
if (
|
||||||
|
(executable_abspath_len != -1) &&
|
||||||
|
(executable_abspath_len != 0) &&
|
||||||
|
(executable_dirpath_len != -1) &&
|
||||||
|
(executable_dirpath_len != 0)
|
||||||
|
) {
|
||||||
|
// All requirements satisfied, executable path was found
|
||||||
|
executable_abspath_found = true;
|
||||||
|
|
||||||
|
// Make sure the string is null terminated
|
||||||
|
executable_abspath[executable_abspath_len] = '\0';
|
||||||
|
|
||||||
|
replace_backslashes(executable_abspath);
|
||||||
|
|
||||||
|
// Define 'executable_dirpath' to be the path to the parent folder of the
|
||||||
|
// executable.
|
||||||
|
strcpy(executable_dirpath, executable_abspath);
|
||||||
|
executable_dirpath[executable_dirpath_len] = '\0';
|
||||||
|
|
||||||
|
// Debug output
|
||||||
|
avrdude_message(MSG_DEBUG, "executable_abspath = %s\n", executable_abspath);
|
||||||
|
avrdude_message(MSG_DEBUG, "executable_abspath_len = %i\n", executable_abspath_len);
|
||||||
|
avrdude_message(MSG_DEBUG, "executable_dirpath = %s\n", executable_dirpath);
|
||||||
|
avrdude_message(MSG_DEBUG, "executable_dirpath_len = %i\n", executable_dirpath_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SYSTEM CONFIG
|
||||||
|
* -------------
|
||||||
|
* Determine the location of 'avrdude.conf'. Check in this order:
|
||||||
|
* 1. <dirpath of executable>/../etc/avrdude.conf
|
||||||
|
* 2. <dirpath of executable>/avrdude.conf
|
||||||
|
* 3. CONFIG_DIR/avrdude.conf
|
||||||
|
*
|
||||||
|
* When found, write the result into the 'sys_config' variable.
|
||||||
|
*/
|
||||||
|
if (executable_abspath_found) {
|
||||||
|
// 1. Check <dirpath of executable>/../etc/avrdude.conf
|
||||||
|
strcpy(sys_config, executable_dirpath);
|
||||||
|
sys_config[PATH_MAX - 1] = '\0';
|
||||||
|
i = strlen(sys_config);
|
||||||
|
if (i && (sys_config[i - 1] != '/'))
|
||||||
|
strcat(sys_config, "/");
|
||||||
|
strcat(sys_config, "../etc/" SYSTEM_CONF_FILE);
|
||||||
|
sys_config[PATH_MAX - 1] = '\0';
|
||||||
|
if (access(sys_config, F_OK) == 0) {
|
||||||
|
sys_config_found = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 2. Check <dirpath of executable>/avrdude.conf
|
||||||
|
strcpy(sys_config, executable_dirpath);
|
||||||
|
sys_config[PATH_MAX - 1] = '\0';
|
||||||
|
i = strlen(sys_config);
|
||||||
|
if (i && (sys_config[i - 1] != '/'))
|
||||||
|
strcat(sys_config, "/");
|
||||||
|
strcat(sys_config, SYSTEM_CONF_FILE);
|
||||||
|
sys_config[PATH_MAX - 1] = '\0';
|
||||||
|
if (access(sys_config, F_OK) == 0) {
|
||||||
|
sys_config_found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!sys_config_found) {
|
||||||
|
// 3. Check CONFIG_DIR/avrdude.conf
|
||||||
|
#if defined(WIN32NATIVE)
|
||||||
|
win_sys_config_set(sys_config);
|
||||||
|
#else
|
||||||
|
strcpy(sys_config, CONFIG_DIR);
|
||||||
|
i = strlen(sys_config);
|
||||||
|
if (i && (sys_config[i - 1] != '/'))
|
||||||
|
strcat(sys_config, "/");
|
||||||
|
strcat(sys_config, SYSTEM_CONF_FILE);
|
||||||
|
#endif
|
||||||
|
if (access(sys_config, F_OK) == 0) {
|
||||||
|
sys_config_found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Debug output
|
||||||
|
avrdude_message(MSG_DEBUG, "sys_config = %s\n", sys_config);
|
||||||
|
avrdude_message(MSG_DEBUG, "sys_config_found = %s\n", sys_config_found ? "true" : "false");
|
||||||
|
avrdude_message(MSG_DEBUG, "\n");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USER CONFIG
|
||||||
|
* -----------
|
||||||
|
* Determine the location of '.avrduderc'.
|
||||||
|
*/
|
||||||
|
#if defined(WIN32NATIVE)
|
||||||
|
win_usr_config_set(usr_config);
|
||||||
|
#else
|
||||||
|
usr_config[0] = 0;
|
||||||
|
homedir = getenv("HOME");
|
||||||
|
if (homedir != NULL) {
|
||||||
|
strcpy(usr_config, homedir);
|
||||||
|
i = strlen(usr_config);
|
||||||
|
if (i && (usr_config[i - 1] != '/'))
|
||||||
|
strcat(usr_config, "/");
|
||||||
|
strcat(usr_config, USER_CONF_FILE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (quell_progress == 0) {
|
if (quell_progress == 0) {
|
||||||
if (isatty (STDERR_FILENO))
|
if (isatty (STDERR_FILENO))
|
||||||
update_progress = update_progress_tty;
|
update_progress = update_progress_tty;
|
||||||
|
|
Loading…
Reference in New Issue