diff options
| -rw-r--r-- | lib/libalpm/alpm.h | 1 | ||||
| -rw-r--r-- | lib/libalpm/deps.c | 34 | ||||
| -rw-r--r-- | src/pacman/add.c | 18 | ||||
| -rw-r--r-- | src/pacman/remove.c | 4 | ||||
| -rw-r--r-- | src/pacman/sync.c | 18 | 
5 files changed, 44 insertions, 31 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 880bbeb0..2000db4a 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -379,6 +379,7 @@ pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss);  pmdepmod_t alpm_dep_get_mod(pmdepend_t *dep);  const char *alpm_dep_get_name(pmdepend_t *dep);  const char *alpm_dep_get_version(pmdepend_t *dep); +char *alpm_dep_get_string(pmdepend_t *dep);  /*   * File conflicts diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 69c675cd..7f4fb0b5 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -838,4 +838,38 @@ const char SYMEXPORT *alpm_dep_get_version(pmdepend_t *dep)  	return dep->version;  } +/* the return-string must be freed! */ +char SYMEXPORT *alpm_dep_get_string(pmdepend_t *dep) +{ +	ALPM_LOG_FUNC; + +	/* Sanity checks */ +	ASSERT(handle != NULL, return(NULL)); +	ASSERT(dep != NULL, return(NULL)); + +	char *ptr; +	char *depstring = malloc(sizeof(pmdepend_t)); +	if(depstring == NULL) { +		_alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes\n"), sizeof(pmdepend_t)); +		return NULL; +	} + +	strcpy(depstring, dep->name); +	ptr = depstring + strlen(depstring); +	switch(dep->mod) { +		case PM_DEP_MOD_ANY: +			break; +		case PM_DEP_MOD_EQ: +			sprintf(ptr, "=%s", dep->version); +			break; +		case PM_DEP_MOD_GE: +			sprintf(ptr, ">=%s", dep->version); +			break; +		case PM_DEP_MOD_LE: +			sprintf(ptr, "<=%s", dep->version); +			break; +	} + +	return(depstring); +}  /* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/add.c b/src/pacman/add.c index 0b59a236..f883a6bd 100644 --- a/src/pacman/add.c +++ b/src/pacman/add.c @@ -137,26 +137,14 @@ int pacman_add(alpm_list_t *targets)  				for(i = data; i; i = alpm_list_next(i)) {  					pmdepmissing_t *miss = alpm_list_getdata(i);  					pmdepend_t *dep = alpm_miss_get_dep(miss); +					char *depstring = alpm_dep_get_string(dep);  					/* TODO indicate if the error was a virtual package or not:  					 *		:: %s: requires %s, provided by %s  					 */  					printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss), -							alpm_dep_get_name(dep)); -					switch(alpm_dep_get_mod(dep)) { -						case PM_DEP_MOD_ANY: -							break; -						case PM_DEP_MOD_EQ: -							printf("=%s", alpm_dep_get_version(dep)); -							break; -						case PM_DEP_MOD_GE: -							printf(">=%s", alpm_dep_get_version(dep)); -							break; -						case PM_DEP_MOD_LE: -							printf("<=%s", alpm_dep_get_version(dep)); -							break; -					} -					printf("\n"); +							depstring); +					free(depstring);  				}  				break;  			case PM_ERR_CONFLICTING_DEPS: diff --git a/src/pacman/remove.c b/src/pacman/remove.c index 860bf491..dce479ec 100644 --- a/src/pacman/remove.c +++ b/src/pacman/remove.c @@ -129,8 +129,10 @@ int pacman_remove(alpm_list_t *targets)  				for(i = data; i; i = alpm_list_next(i)) {  					pmdepmissing_t *miss = alpm_list_getdata(i);  					pmdepend_t *dep = alpm_miss_get_dep(miss); +					char *depstring = alpm_dep_get_string(dep);  					printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss), -							alpm_dep_get_name(dep)); +							depstring); +					free(depstring);  				}  				alpm_list_free(data);  				break; diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 30834a10..9e4b0ada 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -559,22 +559,10 @@ int sync_trans(alpm_list_t *targets, int sync_only)  				for(i = data; i; i = alpm_list_next(i)) {  					pmdepmissing_t *miss = alpm_list_getdata(i);  					pmdepend_t *dep = alpm_miss_get_dep(miss); +					char *depstring = alpm_dep_get_string(dep);  					printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss), -							alpm_dep_get_name(dep)); -					switch(alpm_dep_get_mod(dep)) { -						case PM_DEP_MOD_ANY: -							break; -						case PM_DEP_MOD_EQ: -							printf("=%s", alpm_dep_get_version(dep)); -							break; -						case PM_DEP_MOD_GE: -							printf(">=%s", alpm_dep_get_version(dep)); -							break; -						case PM_DEP_MOD_LE: -							printf("<=%s", alpm_dep_get_version(dep)); -							break; -					} -					printf("\n"); +							depstring); +					free(depstring);  				}  				break;  			case PM_ERR_CONFLICTING_DEPS:  | 
