{"id":19096924,"url":"https://github.com/zocker-160/libdcl","last_synced_at":"2026-05-26T22:30:16.169Z","repository":{"id":106358438,"uuid":"579000611","full_name":"zocker-160/libDCL","owner":"zocker-160","description":"FOSS lib which combines blast.c and implode.c into one easy to use library","archived":false,"fork":false,"pushed_at":"2022-12-16T13:33:22.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-03T00:27:56.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zocker-160.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-16T12:10:23.000Z","updated_at":"2022-12-16T13:20:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd74d7d8-0ad6-4417-87bf-9cc2f48d841e","html_url":"https://github.com/zocker-160/libDCL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FlibDCL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FlibDCL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FlibDCL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zocker-160%2FlibDCL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zocker-160","download_url":"https://codeload.github.com/zocker-160/libDCL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240149843,"owners_count":19755753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T03:38:13.098Z","updated_at":"2026-05-26T22:30:16.099Z","avatar_url":"https://github.com/zocker-160.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libDCL\n\nFOSS lib for PKWare's DCL compresseion algorithm, supports both compression and decompression.\n\nCombines blast.c and implode.c into one easy to use library, should also make bindings to other languages easier.\n\n## Build\n\nThere is a makefile, you can do it!\n\n## Examples\n### Decompression\n```c\n#include \u003cstdio.h\u003e\n#include \"libDCL.h\"\n\n//-- both should give the same output\n//char compressedData[] = { 0x00, 0x04, 0x82, 0x24, 0x25, 0x8F, 0x80, 0x7F };\nchar compressedData[] = { 0x00, 0x04, 0x82, 0x24, 0x25, 0x0F, 0x00, 0x01, 0xFF };\n\nchar decompressedData[100];\nint decompressedLength = 0;\n\nint err = decompressBytes(\n    compressedData, sizeof(compressedData),\n    decompressedData, \u0026decompressedLength\n);\nprintf(\"decompress return value: %i \\n\", err);\n\nif (err != 0) {\n    printf(\"decompression failed!\");\n    return;\n}\n\n// should be: AIAIAIAIAIAIA with length 14\nprintf(\"decompressed data: %s with length %i \\n\", decompressedData, decompressedLength);\n```\n\n### Compression\n```c\n#include \u003cstdio.h\u003e\n#include \"libDCL.h\"\n\nchar orgData[] = \"AIAIAIAIAIAIA\";\n\nchar compressedData[sizeof(orgData)*2];\nint compressedLength = 0;\n\nint err = compressBytes(\n    orgData, sizeof(orgData),\n    compressedData, \u0026compressedLength,\n    CMP_BINARY, CMP_IMPLODE_DICT_SIZE3\n);\nprintf(\"compress return value: %i \\n\", err);\n\nif (err != CMP_NO_ERROR) {\n    printf(\"decompression failed!\");\n    return;\n}\n\n// should be 00:06:82:24:25:0F:00:04:FC:03 with length 10\nprintf(\"decompressed data: \");\nfor (int i = 0; i \u003c compressedLength; i++) {\n    if (i \u003e 0) printf(\":\");\n    printf(\"%02X\", (unsigned char)compressedData[i]);\n}\nprintf(\" with length %i \\n\", compressedLength);\n```\n\n### Credits\n\n- [blast.c by mark adler](https://github.com/madler/zlib/tree/master/contrib/blast)\n- [implode.c by Ladislav Zezula](https://github.com/ladislav-zezula/StormLib/blob/master/src/pklib/implode.c)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzocker-160%2Flibdcl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzocker-160%2Flibdcl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzocker-160%2Flibdcl/lists"}