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 */
static int _settings_browse_folder(Settings * settings, Config * config,
char const * folder);
static void _settings_rtrim(String * string, char c);
static int _settings_browse(Settings * settings)
{
@ -181,6 +182,7 @@ static int _settings_browse(Settings * settings)
for(i = 0, j = 0;; i++)
if(p[i] == '\0')
{
_settings_rtrim(&p[j], '/');
_settings_browse_folder(settings, config,
&p[j]);
datadir |= (strcmp(&p[j], DATADIR) == 0);
@ -189,6 +191,7 @@ static int _settings_browse(Settings * settings)
else if(p[i] == ':')
{
p[i] = '\0';
_settings_rtrim(&p[j], '/');
_settings_browse_folder(settings, config,
&p[j]);
datadir |= (strcmp(&p[j], DATADIR) == 0);
@ -306,6 +309,17 @@ static int _settings_browse_folder(Settings * settings, Config * config,
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 */
static int _settings_error(char const * message, int ret)