Stricter verification of redundant parsing
The pathnames should really be canonified instead.
This commit is contained in:
parent
32cc272976
commit
77f121e0a1
|
@ -155,6 +155,7 @@ static void _settings_on_item_activated(GtkWidget * widget, GtkTreePath * path,
|
||||||
/* settings_browse */
|
/* settings_browse */
|
||||||
static int _settings_browse_folder(Settings * settings, Config * config,
|
static int _settings_browse_folder(Settings * settings, Config * config,
|
||||||
char const * folder);
|
char const * folder);
|
||||||
|
static void _settings_rtrim(String * string, char c);
|
||||||
|
|
||||||
static int _settings_browse(Settings * settings)
|
static int _settings_browse(Settings * settings)
|
||||||
{
|
{
|
||||||
|
@ -181,6 +182,7 @@ static int _settings_browse(Settings * settings)
|
||||||
for(i = 0, j = 0;; i++)
|
for(i = 0, j = 0;; i++)
|
||||||
if(p[i] == '\0')
|
if(p[i] == '\0')
|
||||||
{
|
{
|
||||||
|
_settings_rtrim(&p[j], '/');
|
||||||
_settings_browse_folder(settings, config,
|
_settings_browse_folder(settings, config,
|
||||||
&p[j]);
|
&p[j]);
|
||||||
datadir |= (strcmp(&p[j], DATADIR) == 0);
|
datadir |= (strcmp(&p[j], DATADIR) == 0);
|
||||||
|
@ -189,6 +191,7 @@ static int _settings_browse(Settings * settings)
|
||||||
else if(p[i] == ':')
|
else if(p[i] == ':')
|
||||||
{
|
{
|
||||||
p[i] = '\0';
|
p[i] = '\0';
|
||||||
|
_settings_rtrim(&p[j], '/');
|
||||||
_settings_browse_folder(settings, config,
|
_settings_browse_folder(settings, config,
|
||||||
&p[j]);
|
&p[j]);
|
||||||
datadir |= (strcmp(&p[j], DATADIR) == 0);
|
datadir |= (strcmp(&p[j], DATADIR) == 0);
|
||||||
|
@ -306,6 +309,17 @@ static int _settings_browse_folder(Settings * settings, Config * config,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _settings_rtrim(String * string, char c)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
for(len = string_length(string); len > 0; len--)
|
||||||
|
if(string[len - 1] == c)
|
||||||
|
string[len - 1] = '\0';
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* settings_error */
|
/* settings_error */
|
||||||
static int _settings_error(char const * message, int ret)
|
static int _settings_error(char const * message, int ret)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user