summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am3
-rw-r--r--client.c23
-rw-r--r--icclient/client.h1
-rw-r--r--icclient/product.h10
-rw-r--r--ord.c4
-rw-r--r--product.c21
6 files changed, 37 insertions, 25 deletions
diff --git a/Makefile.am b/Makefile.am
index 7a82730..0ac0146 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -3,9 +3,10 @@ lib_LTLIBRARIES = libicclient.la
libicclient_la_SOURCES = \
request.h \
request.c \
+ product.c \
+ ord.c \
login.h \
login.c \
- ord.c \
member.c \
admin.c \
client.c
diff --git a/client.c b/client.c
index 9af1be5..604e849 100644
--- a/client.c
+++ b/client.c
@@ -89,7 +89,7 @@ void icclient_order(icclient_ord_order **orderptr, const char *sku
icclient_product *product = *(icclient_product **)bsearch(&key_product
, products, catalog->length, sizeof(icclient_product *)
, prodcmp);
- icclient_freeproduct(key_product);
+ icclient_product_free(key_product);
icclient_ord_order *order = *orderptr;
icclient_ord_item *item = NULL;
@@ -167,29 +167,10 @@ void icclient_page(const char *path, size_t (*handler)(void *, size_t, size_t
request(handler, (void *)dataptr, NULL, "%s", path);
}
-void icclient_freeproduct(icclient_product *product)
-{
- if (product->author)
- free(product->author);
- if (product->prodgroup)
- free(product->prodgroup);
- if (product->image)
- free(product->image);
- if (product->thumb)
- free(product->thumb);
- if (product->comment)
- free(product->comment);
- if (product->description)
- free(product->description);
- free(product->sku);
- free(product);
- product = NULL;
-}
-
void icclient_freecatalog(icclient_catalog *catalog)
{
for (size_t i = 0; i < catalog->length; i++)
- icclient_freeproduct(catalog->products[i]);
+ icclient_product_free(catalog->products[i]);
free(catalog);
catalog = NULL;
}
diff --git a/icclient/client.h b/icclient/client.h
index 995c948..4a9ac6a 100644
--- a/icclient/client.h
+++ b/icclient/client.h
@@ -73,7 +73,6 @@ extern "C" {
size_t (*handler)(void *contents, size_t size,
size_t nmemb, void *userdata),
void **dataptr);
- void icclient_freeproduct(struct icclient_product *product);
void icclient_freecatalog(struct icclient_catalog *catalog);
void icclient_cleanup();
diff --git a/icclient/product.h b/icclient/product.h
index 4d7f0c7..ba999b3 100644
--- a/icclient/product.h
+++ b/icclient/product.h
@@ -19,4 +19,14 @@ struct icclient_product {
struct icclient_product_crosssell *crosssell;
};
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void icclient_product_free(struct icclient_product *product);
+
+#ifdef __cplusplus
+}
+#endif
+
#endif // ICCLIENT_PRODUCT_H
diff --git a/ord.c b/ord.c
index 4122b57..c1c2d4c 100644
--- a/ord.c
+++ b/ord.c
@@ -1,10 +1,10 @@
#include <stdlib.h>
#include <stdbool.h>
-#include "icclient/client.h"
+#include "icclient/product.h"
#include "icclient/ord.h"
void icclient_ord_free(struct icclient_ord_order *order)
{
for (size_t i = 0; i < order->nitems; i++)
- icclient_freeproduct(order->items[i]->product);
+ icclient_product_free(order->items[i]->product);
}
diff --git a/product.c b/product.c
new file mode 100644
index 0000000..6fb70b6
--- /dev/null
+++ b/product.c
@@ -0,0 +1,21 @@
+#include <stdlib.h>
+#include "icclient/product.h"
+
+void icclient_product_free(struct icclient_product *product)
+{
+ if (product->author)
+ free(product->author);
+ if (product->prodgroup)
+ free(product->prodgroup);
+ if (product->image)
+ free(product->image);
+ if (product->thumb)
+ free(product->thumb);
+ if (product->comment)
+ free(product->comment);
+ if (product->description)
+ free(product->description);
+ free(product->sku);
+ free(product);
+ product = NULL;
+}