MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / create_test_targz

Function create_test_targz

tests/test_cli.c:68–136  ·  view source on GitHub ↗

Helper: create tar.gz with a single file */

Source from the content-addressed store, hash-verified

66
67/* Helper: create tar.gz with a single file */
68static unsigned char *create_test_targz(const char *filename, const unsigned char *content,
69 int content_len, int *out_len) {
70 /* Build tar data: 512-byte header + content padded to 512-byte boundary + 2x512 zero blocks */
71 int data_blocks = (content_len + 511) / 512;
72 int tar_size = 512 + data_blocks * 512 + 1024; /* header + data + end-of-archive */
73 unsigned char *tar = calloc(1, (size_t)tar_size);
74 if (!tar)
75 return NULL;
76
77 /* Filename (bytes 0-99) */
78 strncpy((char *)tar, filename, 99);
79
80 /* Mode (bytes 100-107): octal 0700 */
81 memcpy(tar + 100, "0000700\0", 8);
82
83 /* UID/GID (bytes 108-123): 0 */
84 memcpy(tar + 108, "0000000\0", 8);
85 memcpy(tar + 116, "0000000\0", 8);
86
87 /* Size (bytes 124-135): octal */
88 char size_str[12];
89 snprintf(size_str, sizeof(size_str), "%011o", content_len);
90 memcpy(tar + 124, size_str, 11);
91
92 /* Mtime (bytes 136-147): 0 */
93 memcpy(tar + 136, "00000000000\0", 12);
94
95 /* Type flag (byte 156): '0' = regular file */
96 tar[156] = '0';
97
98 /* Checksum (bytes 148-155): compute over header with checksum field as spaces */
99 memset(tar + 148, ' ', 8);
100 unsigned int checksum = 0;
101 for (int i = 0; i < 512; i++)
102 checksum += tar[i];
103 snprintf((char *)tar + 148, 7, "%06o", checksum);
104 tar[154] = '\0';
105
106 /* File content */
107 memcpy(tar + 512, content, (size_t)content_len);
108
109 /* Compress with gzip */
110 z_stream strm = {0};
111 if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 16 + MAX_WBITS, 8,
112 Z_DEFAULT_STRATEGY) != Z_OK) {
113 free(tar);
114 return NULL;
115 }
116
117 size_t gz_cap = (size_t)tar_size + 256;
118 unsigned char *gz = malloc(gz_cap);
119 if (!gz) {
120 deflateEnd(&strm);
121 free(tar);
122 return NULL;
123 }
124
125 strm.next_in = tar;

Callers 1

test_cli.cFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected