Stricter verification of redundant parsing

The pathnames should really be canonified instead.
This commit is contained in:
Pierre Pronchery 2015-06-16 02:04:57 -04:00
parent 32cc272976
commit 77f121e0a1

View File

@ -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)