static void test_ops(void) { Set *s1 = set_create(); Set *s2 = set_create(); Set *s3 = set_create(); if (s1 == 0 || s2 == 0 || s3 == 0) err_syserr("Out of memory\n"); load_set(s1, 1, 3, 4, 6); dump_set("S1", s1); load_set(s2, 2, 5, 7, 9); dump_set("S2", s2); set_union(s1, s2, s3); dump_set("S1 union S2", s3); set_empty(s3); set_intersect(s1, s2, s3); dump_set("S1 intersect S2", s3); set_empty(s3); set_difference(s1, s2, s3); dump_set("S1 minus S2", s3); set_empty(s3); set_difference(s2, s1, s3); dump_set("S2 minus S1", s3); set_destroy(s1); set_destroy(s2); set_destroy(s3); }
void descramble(unsigned char *fh, unsigned char *ptr, unsigned long filesz) { unsigned long chunksz; load_set(fh); my_srand(filesz); /* Descramble 2 meg blocks for as long as possible, then gradually reduce the window down to 32 bytes (1 slice) */ for(chunksz = MAXCHUNK; chunksz >= 32; chunksz >>= 1) { while(filesz >= chunksz) { load_chunk(ptr, chunksz); filesz -= chunksz; ptr += chunksz; } } /* Load final incomplete slice */ if(filesz) { load(ptr, filesz); } }
static void test_set(void) { Set *set = set_create(); if (set == 0) err_syserr("Out of memory\n"); load_set(set, 1, 3, 4, 6); dump_set("S0", set); set_destroy(set); }