diff options
| -rw-r--r-- | src/pacman/conf.c | 65 | 
1 files changed, 39 insertions, 26 deletions
| diff --git a/src/pacman/conf.c b/src/pacman/conf.c index e9a29e37..ca49749d 100644 --- a/src/pacman/conf.c +++ b/src/pacman/conf.c @@ -752,6 +752,43 @@ struct section_t {  	alpm_list_t *servers;  }; +static int _parse_repo(const char *key, char *value, const char *file, +		int line, struct section_t *section) +{ +	int ret = 0; + +	if(strcmp(key, "Server") == 0) { +		if(!value) { +			pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: directive '%s' needs a value\n"), +					file, line, key); +			ret = 1; +		} else { +			section->servers = alpm_list_add(section->servers, strdup(value)); +		} +	} else if(strcmp(key, "SigLevel") == 0) { +		if(!value) { +			pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: directive '%s' needs a value\n"), +					file, line, key); +		} else { +			alpm_list_t *values = NULL; +			setrepeatingoption(value, "SigLevel", &values); +			if(values) { +				if(section->siglevel == ALPM_SIG_USE_DEFAULT) { +					section->siglevel = config->siglevel; +				} +				ret = process_siglevel(values, §ion->siglevel, file, line); +				FREELIST(values); +			} +		} +	} else { +		pm_printf(ALPM_LOG_WARNING, +				_("config file %s, line %d: directive '%s' in section '%s' not recognized.\n"), +				file, line, key, section->name); +	} + +	return ret; +} +  /**   * Wrap up a section once we have reached the end of it. This should be called   * when a subsequent section is encountered, or when we have reached the end of @@ -946,32 +983,8 @@ static int _parseconfig(const char *file, struct section_t *section, int depth)  			}  		} else if(!section->parse_options && !section->is_options) {  			/* ... or in a repo section */ -			if(strcmp(key, "Server") == 0) { -				if(value == NULL) { -					pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: directive '%s' needs a value\n"), -							file, linenum, key); -					ret = 1; -					goto cleanup; -				} -				section->servers = alpm_list_add(section->servers, strdup(value)); -			} else if(strcmp(key, "SigLevel") == 0) { -				alpm_list_t *values = NULL; -				setrepeatingoption(value, "SigLevel", &values); -				if(values) { -					if(section->siglevel == ALPM_SIG_USE_DEFAULT) { -						section->siglevel = config->siglevel; -					} -					if(process_siglevel(values, §ion->siglevel, file, linenum)) { -						FREELIST(values); -						ret = 1; -						goto cleanup; -					} -					FREELIST(values); -				} -			} else { -				pm_printf(ALPM_LOG_WARNING, -						_("config file %s, line %d: directive '%s' in section '%s' not recognized.\n"), -						file, linenum, key, section->name); +			if((ret = _parse_repo(key, value, file, linenum, section)) != 0) { +				goto cleanup;  			}  		}  	} | 
