diff options
| -rw-r--r-- | lib/libalpm/alpm_list.c | 5 | ||||
| -rw-r--r-- | lib/libalpm/db.c | 8 | ||||
| -rw-r--r-- | lib/libalpm/group.c | 5 | ||||
| -rw-r--r-- | src/pacman/sync.c | 23 | 
4 files changed, 23 insertions, 18 deletions
| diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c index a43f8211..26fcb3dc 100644 --- a/lib/libalpm/alpm_list.c +++ b/lib/libalpm/alpm_list.c @@ -145,8 +145,10 @@ alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cm  		if(prev != NULL) {  			prev->next = add;       /*  In middle.  */ +		} else { +			list = add; /* At beginning, or new list */  		} - +		  		return(list);  	}  } @@ -369,6 +371,7 @@ alpm_list_t *alpm_list_last(alpm_list_t *list)   */  void *alpm_list_getdata(const alpm_list_t *entry)  { +	if(entry == NULL) return(NULL);  	return(entry->data);  } diff --git a/lib/libalpm/db.c b/lib/libalpm/db.c index 84c05ccc..363ce2a5 100644 --- a/lib/libalpm/db.c +++ b/lib/libalpm/db.c @@ -55,14 +55,14 @@ pmdb_t *_alpm_db_new(char *root, char* dbpath, char *treename)  {  	pmdb_t *db; -	db = (pmdb_t *)malloc(sizeof(pmdb_t)); +	db = calloc(1, sizeof(pmdb_t));  	if(db == NULL) {  		_alpm_log(PM_LOG_ERROR, _("malloc failed: could not allocate %d bytes"),  				  sizeof(pmdb_t));  		RET_ERR(PM_ERR_MEMORY, NULL);  	} -	db->path = (char *)malloc(strlen(root)+strlen(dbpath)+strlen(treename)+2); +	db->path = calloc(1, strlen(root)+strlen(dbpath)+strlen(treename)+2);  	if(db->path == NULL) {  		_alpm_log(PM_LOG_ERROR, _("malloc failed: could not allocate %d bytes"),  				  strlen(root)+strlen(dbpath)+strlen(treename)+2); @@ -73,10 +73,6 @@ pmdb_t *_alpm_db_new(char *root, char* dbpath, char *treename)  	STRNCPY(db->treename, treename, PATH_MAX); -	db->pkgcache = NULL; -	db->grpcache = NULL; -	db->servers = NULL; -  	return(db);  } diff --git a/lib/libalpm/group.c b/lib/libalpm/group.c index e0294ccb..3ec6338c 100644 --- a/lib/libalpm/group.c +++ b/lib/libalpm/group.c @@ -36,16 +36,13 @@ pmgrp_t *_alpm_grp_new()  {  	pmgrp_t* grp; -	grp = (pmgrp_t *)malloc(sizeof(pmgrp_t)); +	grp = calloc(1, sizeof(pmgrp_t));  	if(grp == NULL) {  		_alpm_log(PM_LOG_ERROR, _("malloc failure: could not allocate %d bytes"),  		                        sizeof(pmgrp_t));  		RET_ERR(PM_ERR_MEMORY, NULL);  	} -	grp->name[0] = '\0'; -	grp->packages = NULL; -  	return(grp);  } diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 7bb4a127..4df44087 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -248,14 +248,20 @@ static int sync_search(alpm_list_t *syncs, alpm_list_t *targets)  				continue;  			}  			for(j = ret; j; j = alpm_list_next(j)) { +				char *group = NULL; +				alpm_list_t *grp;  				pmpkg_t *pkg = alpm_list_getdata(j); -				char *group = (char *)alpm_list_getdata(alpm_pkg_get_groups(pkg)); -				printf("%s/%s %s %s%s%s\n    ", -							 alpm_db_get_name(db), -						   alpm_pkg_get_name(pkg), -						   alpm_pkg_get_version(pkg), -						   (group ? " (" : ""), (group ? group : ""), (group ? ") " : "")); +				printf("%s/%s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg), +						   alpm_pkg_get_version(pkg)); + +				if((grp = alpm_pkg_get_groups(pkg)) != NULL) { +						group = alpm_list_getdata(grp); +						printf(" (%s)\n    ", (char *)alpm_list_getdata(grp)); +				} else { +					printf("\n    "); +				} +				  				indentprint(alpm_pkg_get_desc(pkg), 4);  				printf("\n\n");  			} @@ -280,9 +286,12 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)  	if(targets) {  		for(i = targets; i; i = alpm_list_next(i)) { +			char *grpname = alpm_list_getdata(i);  			for(j = syncs; j; j = alpm_list_next(j)) {  				pmdb_t *db = alpm_list_getdata(j); -				pmgrp_t *grp = alpm_db_readgrp(db, alpm_list_getdata(i)); +				printf("searching '%s' for groups '%s'\n", alpm_db_get_name(db), grpname); +				fflush(stdout); +				pmgrp_t *grp = alpm_db_readgrp(db, grpname);  				if(grp) {  					MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp)); | 
