Browse Source
Bug #20748: Configuration files should not be read more than once
Bug #20748: Configuration files should not be read more than once
A user could not override system-wide settings in their ~/.my.cnf, because the DEFAULT_SYSCONFDIR was being searched last. Also, in some configurations (especially when the --sysconfdir compile-time option is set to /etc or /etc/mysql), the system-wide my.cnf file was read multiple times, causing confusion and potential problems. Rearrange default directories to conform to the manual and logic. Move --sysconfdir=<path> (DEFAULT_SYSCONFDIR) from the last default directory to the middle of the list. $HOME/.my.cnf should be last, so the user is able to override the system-wide settings. Change init_default_directories() to remove duplicates from the list.pull/73/head
6 changed files with 195 additions and 66 deletions
-
2include/my_sys.h
-
2libmysql/Makefile.shared
-
2mysys/CMakeLists.txt
-
2mysys/Makefile.am
-
192mysys/default.c
-
61mysys/mf_arr_appstr.c
@ -0,0 +1,61 @@ |
|||
/* Copyright (C) 2007 MySQL AB |
|||
|
|||
This program is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation; version 2 of the License. |
|||
|
|||
This program is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this program; if not, write to the Free Software |
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ |
|||
|
|||
#include "mysys_priv.h" |
|||
#include <m_string.h> /* strcmp() */ |
|||
|
|||
|
|||
/** |
|||
Append str to array, or move to the end if it already exists |
|||
|
|||
@param str String to be appended |
|||
@param array The array, terminated by a NULL element, all unused elements |
|||
pre-initialized to NULL |
|||
@param size Size of the array; array must be terminated by a NULL |
|||
pointer, so can hold size - 1 elements |
|||
|
|||
@retval FALSE Success |
|||
@retval TRUE Failure, array is full |
|||
*/ |
|||
|
|||
my_bool array_append_string_unique(const char *str, |
|||
const char **array, size_t size) |
|||
{ |
|||
const char **p; |
|||
/* end points at the terminating NULL element */ |
|||
const char **end= array + size - 1; |
|||
DBUG_ASSERT(*end == NULL); |
|||
|
|||
for (p= array; *p; ++p) |
|||
{ |
|||
if (strcmp(*p, str) == 0) |
|||
break; |
|||
} |
|||
if (p >= end) |
|||
return TRUE; /* Array is full */ |
|||
|
|||
DBUG_ASSERT(*p == NULL || strcmp(*p, str) == 0); |
|||
|
|||
while (*(p + 1)) |
|||
{ |
|||
*p= *(p + 1); |
|||
++p; |
|||
} |
|||
|
|||
DBUG_ASSERT(p < end); |
|||
*p= str; |
|||
|
|||
return FALSE; /* Success */ |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue