[pacman-dev] alpm_list_* functions : public or private ?

Xavier shiningxc at gmail.com
Wed Jul 18 18:23:32 EDT 2007


On Wed, Jul 18, 2007 at 05:45:41PM -0400, Dan McGee wrote:
> On 7/18/07, Xavier <shiningxc at gmail.com> wrote:
> > The functions in alpm_list.c all start with alpm_list_,
> > but some of them don't have SYMEXPORT.
> >
> > By reading the rest of the code, I assumed that :
> > _alpm_* == private
> > alpm_* == public (so with SYMEXPORT)
> 
> Correct.
> 
> > Is this a real rule ?
> > If so, should all functions in alpm_list.c be symexported,
> > or should the ones without SYMEXPORT be renamed to _alpm_* ?
> 
> If they are in alpm_list.h, then they need to be SYMEXPORTed. I've
> made a few of these fixes in the past with other functions. Some of
> them were missed because they are not used externally by pacman, but
> could still be used by other applications using libalpm.
> 

Yes, that's how I noticed it, I wanted to use alpm_list_msort, and
compilation failed, I didn't understand why :)

here is a patch :


>From 6779cb0006e604e49c24dfb7302a79bfb8596137 Mon Sep 17 00:00:00 2001
From: Chantry Xavier <shiningxc at gmail.com>
Date: Thu, 19 Jul 2007 00:22:02 +0200
Subject: [PATCH] libalpm/alpm_list.c : add SYMEXPORT to all alpm_list_ functions.

Signed-off-by: Chantry Xavier <shiningxc at gmail.com>
---
 lib/libalpm/alpm_list.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c
index cd99f59..5671b4a 100644
--- a/lib/libalpm/alpm_list.c
+++ b/lib/libalpm/alpm_list.c
@@ -46,7 +46,7 @@
  *
  * @return a new alpm_list_t item, or NULL on failure
  */
-alpm_list_t *alpm_list_new()
+alpm_list_t SYMEXPORT *alpm_list_new()
 {
 	alpm_list_t *list = NULL;
 
@@ -143,7 +143,7 @@ alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
  *
  * @return the resultant list
  */
-alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
 {
 	if(!fn) {
 		return alpm_list_add(list, data);
@@ -187,7 +187,7 @@ alpm_list_t *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cm
  *
  * @return the resultant list
  */
-alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn)
 {
 	alpm_list_t *newlist, *lp;
 
@@ -242,7 +242,7 @@ alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_f
  *
  * @return the resultant list
  */
-alpm_list_t* alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
+alpm_list_t SYMEXPORT *alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
 {
 	if (n > 1) {
 		alpm_list_t *left = list;
@@ -268,7 +268,7 @@ alpm_list_t* alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn)
  *
  * @return the resultant list
  */
-alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
+alpm_list_t SYMEXPORT *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data)
 { /* TODO I modified this to remove ALL matching items.  Do we need a remove_first? */
 	alpm_list_t *i = haystack, *tmp = NULL;
 
@@ -316,7 +316,7 @@ alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_li
  *
  * @return the node which took the place of this one
  */
-alpm_list_t *alpm_list_remove_node(alpm_list_t *node)
+alpm_list_t SYMEXPORT *alpm_list_remove_node(alpm_list_t *node)
 {
 	if(!node) return(NULL);
 
@@ -367,7 +367,7 @@ alpm_list_t SYMEXPORT *alpm_list_remove_dupes(const alpm_list_t *list)
  *
  * @return a copy of the original list
  */
-alpm_list_t *alpm_list_strdup(const alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_strdup(const alpm_list_t *list)
 {
 	const alpm_list_t *lp = list;
 	alpm_list_t *newlist = NULL;
@@ -385,7 +385,7 @@ alpm_list_t *alpm_list_strdup(const alpm_list_t *list)
  *
  * @return a new list in reverse order
  */
-alpm_list_t *alpm_list_reverse(alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_reverse(alpm_list_t *list)
 { /* TODO any invalid free's from NOT duplicating data here? */
 	alpm_list_t *lp, *newlist = NULL;
 
@@ -419,7 +419,7 @@ inline alpm_list_t SYMEXPORT *alpm_list_first(const alpm_list_t *list)
  *
  * @return an alpm_list_t node for index `n`
  */
-alpm_list_t *alpm_list_nth(const alpm_list_t *list, int n)
+alpm_list_t SYMEXPORT *alpm_list_nth(const alpm_list_t *list, int n)
 {
 	const alpm_list_t *i = list;
 	while(n--) {
@@ -447,7 +447,7 @@ inline alpm_list_t SYMEXPORT *alpm_list_next(const alpm_list_t *node)
  *
  * @return the last element in the list
  */
-alpm_list_t *alpm_list_last(const alpm_list_t *list)
+alpm_list_t SYMEXPORT *alpm_list_last(const alpm_list_t *list)
 {
 	const alpm_list_t *i = list;
 	while(i && i->next) {
@@ -545,7 +545,7 @@ int SYMEXPORT alpm_list_find_str(const alpm_list_t *haystack, const char *needle
  *
  * @return a list containing all items in `lhs` not present in `rhs`
  */
-alpm_list_t *alpm_list_diff(const alpm_list_t *lhs,
+alpm_list_t SYMEXPORT *alpm_list_diff(const alpm_list_t *lhs,
 		const alpm_list_t *rhs, alpm_list_fn_cmp fn)
 {
 	const alpm_list_t *i, *j;
-- 
1.5.2.4





More information about the pacman-dev mailing list