#include #include #include #include #include #include #include #include "haggis.h" #include "mq.h" int main() { haggis_node *node0 = NULL, *node1 = NULL; haggis_linkmap *map = NULL; haggis_mq mq; haggis_msg *msg; char *orig = "Makefile"; char *lnk = "output/Makefile"; int ret = 0; map = haggis_linkmap_init(); assert(map != NULL); if (haggis_mq_init(&mq)) return errno; unlink(lnk); ret = link(orig, lnk); node0 = haggis_create_node(orig, sha256, map, &mq); assert(node0 != NULL); assert(node0->filetype.tag == normal); assert(memcmp(node0->name.name, orig, 8) == 0); if (ret) return ret; node1 = haggis_create_node(lnk, sha256, map, &mq); assert(node1 != NULL); assert(node1->filetype.tag == hardlink); assert(memcmp(node1->name.name, lnk, 15) == 0); ret = haggis_extract_node(node0, "output/extracted", &mq); assert(ret == 0); haggis_node_deinit(node0); ret = haggis_extract_node(node1, "output/extracted", &mq); assert(ret == 0); haggis_node_deinit(node1); msg = haggis_mq_pop(&mq); assert(msg->tag == NodeCreated); assert(memcmp(msg->body.f_name, orig, 8) == 0); haggis_msg_deinit(msg); msg = haggis_mq_pop(&mq); assert(msg->tag == NodeCreated); assert(memcmp(msg->body.f_name, lnk, 15) == 0); haggis_msg_deinit(msg); msg = haggis_mq_pop(&mq); assert(msg->tag == NodeExtracted); assert(memcmp(msg->body.f_name, orig, 8) == 0); haggis_msg_deinit(msg); msg = haggis_mq_pop(&mq); assert(msg->tag == NodeExtracted); assert(memcmp(msg->body.f_name, lnk, 15) == 0); haggis_msg_deinit(msg); haggis_linkmap_deinit(map); return 0; }