# HG changeset patch # User William Ehlhardt # Date 1184317365 0 # Node ID d69355001a6e6a3f38f905e73c10604eaf7c1b65 # Parent e179e7e6ded72a034c1af5ac1a79112515648ded - Add purple_certificate_copy_list diff -r e179e7e6ded7 -r d69355001a6e libpurple/certificate.c --- a/libpurple/certificate.c Fri Jul 13 08:42:59 2007 +0000 +++ b/libpurple/certificate.c Fri Jul 13 09:02:45 2007 +0000 @@ -108,6 +108,22 @@ return (crt->scheme->copy_certificate)(crt); } +GList * +purple_certificate_copy_list(GList *crt_list) +{ + GList *new, *l; + + /* First, make a shallow copy of the list */ + new = g_list_copy(crt_list); + + /* Now go through and actually duplicate each certificate */ + for (l = new; l; l = l->next) { + l->data = purple_certificate_copy(l->data); + } + + return new; +} + void purple_certificate_destroy (PurpleCertificate *crt) { diff -r e179e7e6ded7 -r d69355001a6e libpurple/certificate.h --- a/libpurple/certificate.h Fri Jul 13 08:42:59 2007 +0000 +++ b/libpurple/certificate.h Fri Jul 13 09:02:45 2007 +0000 @@ -379,6 +379,15 @@ purple_certificate_copy(PurpleCertificate *crt); /** + * Duplicates an entire list of certificates + * + * @param crt_list List to duplicate + * @return New list copy + */ +GList * +purple_certificate_copy_list(GList *crt_list); + +/** * Destroys and free()'s a Certificate * * @param crt Instance to destroy. May be NULL.