[pacman-dev] alpm_list_last

Sebastian Nowicki sebnow at gmail.com
Mon Apr 21 02:33:37 EDT 2008

On 21/04/2008, at 2:04 PM, Xavier wrote:
> Sebastian Nowicki wrote:
>> I noticed that alpm_list_last simply returns a pointer to the  
>> previous
>> node. Is this expected behavior? My interpretation of "last" would be
>> to return the absolute last node, as the comment suggests. In my
>> opinion the function as it is now should be called alpm_list_prev.
>> From alpm_list.c:
>>> alpm_list_t SYMEXPORT *alpm_list_last(const alpm_list_t *list)
>>> {
>>> 	if(list) {
>>> 		return(list->prev);
>>> 	} else {
>>> 		return(NULL);
>>> 	}
>>> }
> That's because a alpm_list_t element is not really a list, but a  
> list node.
> So when you use a list in alpm (with alpm_list_t *list), it's actually
> just the head node that you manipulate.
> And head->prev == tail.
> _______________________________________________
> pacman-dev mailing list
> pacman-dev at archlinux.org
> http://archlinux.org/mailman/listinfo/pacman-dev

Ok, but there's also alpm_list_first and alpm_list_next. According to  
your description alpm_list_first should be the same as alpm_list_next,  
unless I misunderstood you. Since alpm_list_t is a node in a double  
linked list, it is possible to be somewhere in the middle of a list.  
Using alpm_list_last somewhere in a progrem, I would expect to go to  
the absolute last node within the list in general. The doxygen comment  
seems to suggest this as well, as it talks about a list in general,  
and not the node (alpm_list_t). It just seems a bit confusing/ 
misleading to me, and possibly others looking at the documentation.

Sebastian Nowicki

More information about the pacman-dev mailing list