diff options
Diffstat (limited to 'ord.c')
-rw-r--r-- | ord.c | 42 |
1 files changed, 19 insertions, 23 deletions
@@ -5,10 +5,6 @@ #include "icclient/member.h" #include "icclient/ord.h" -typedef struct icclient_catalog icclient_catalog; -typedef struct icclient_product icclient_product; -typedef struct icclient_ord_item icclient_ord_item; - void icclient_ord_init(struct icclient_ord_order *order) { order->subtotal = .0; @@ -19,40 +15,40 @@ void icclient_ord_init(struct icclient_ord_order *order) static int prodcmp(const void *product1, const void *product2) { - return strcmp((*(icclient_product * const *)product1)->sku - , (*(icclient_product * const *)product2)->sku); + return strcmp((*(struct icclient_product * const *)product1)->sku + , (*(struct icclient_product * const *)product2)->sku); } static int itemcmp(const void *item1, const void *item2) { - return strcmp((*(icclient_ord_item * const *)item1)->product->sku - , (*(icclient_ord_item * const *)item2)->product->sku); + return strcmp((*(struct icclient_ord_item * const *)item1)->product->sku + , (*(struct icclient_ord_item * const *)item2)->product->sku); } -void icclient_ord_order(const char *sku, const icclient_catalog *catalog, +void icclient_ord_order(const char *sku, const struct icclient_catalog *catalog, struct icclient_ord_order **orderptr) { - icclient_product **products = ((icclient_catalog *)catalog)->products; - qsort(products, catalog->length, sizeof(icclient_product *), prodcmp); - icclient_product *key_product = malloc(sizeof(icclient_product)); - memset(key_product, '\0', sizeof(icclient_product)); + struct icclient_product **products = ((struct icclient_catalog *)catalog)->products; + qsort(products, catalog->length, sizeof(struct icclient_product *), prodcmp); + struct icclient_product *key_product = malloc(sizeof(struct icclient_product)); + memset(key_product, '\0', sizeof(struct icclient_product)); key_product->sku = malloc(strlen(sku) + 1); strcpy(key_product->sku, sku); - icclient_product *product = *(icclient_product **)bsearch(&key_product - , products, catalog->length, sizeof(icclient_product *) + struct icclient_product *product = *(struct icclient_product **)bsearch(&key_product + , products, catalog->length, sizeof(struct icclient_product *) , prodcmp); icclient_free_product(key_product); struct icclient_ord_order *order = *orderptr; - icclient_ord_item *item = NULL; + struct icclient_ord_item *item = NULL; if (order) { - icclient_ord_item **items = order->items; - qsort(items, order->nitems, sizeof(icclient_ord_item *), itemcmp); - icclient_ord_item *key_item = malloc(sizeof(icclient_ord_item)); + struct icclient_ord_item **items = order->items; + qsort(items, order->nitems, sizeof(struct icclient_ord_item *), itemcmp); + struct icclient_ord_item *key_item = malloc(sizeof(struct icclient_ord_item)); key_item->product = product; - icclient_ord_item **itemptr = bsearch(&key_item, items - , order->nitems, sizeof(icclient_ord_item *) + struct icclient_ord_item **itemptr = bsearch(&key_item, items + , order->nitems, sizeof(struct icclient_ord_item *) , itemcmp); if (itemptr) item = *itemptr; @@ -68,9 +64,9 @@ void icclient_ord_order(const char *sku, const icclient_catalog *catalog, else { size_t i = order->nitems; *orderptr = realloc(order, sizeof(struct icclient_ord_order) - + (i + 1) * sizeof(icclient_ord_item)); + + (i + 1) * sizeof(struct icclient_ord_item)); order = *orderptr; - order->items[i] = malloc(sizeof(icclient_ord_item)); + order->items[i] = malloc(sizeof(struct icclient_ord_item)); order->nitems++; item = order->items[i]; item->product = product; |