int main(){ Node *tree; int codeTable[27], codeTable2[27]; int compress; char filename[20]; FILE *input, *output; buildHuffmanTree(&tree); fillTable(codeTable, tree, 0); invertCodes(codeTable,codeTable2); /*get input details from user*/ printf("Type the name of the file to process:\n"); scanf("%s",filename); printf("Type 1 to compress and 2 to decompress:\n"); scanf("%d",&compress); input = fopen(filename, "r"); output = fopen("output.txt","w"); if (compress==1) compressFile(input,output,codeTable2); else decompressFile(input,output, tree); return 0; }
static struct fblock *fb_huf_ctor(char *name) { int ret = 0; struct fblock *fb; struct fb_huf_priv *fb_priv; struct proc_dir_entry *fb_proc; Node *tree; fb = alloc_fblock(GFP_ATOMIC); if (!fb) return NULL; fb_priv = kzalloc(sizeof(*fb_priv), GFP_ATOMIC); if (!fb_priv) goto err; seqlock_init(&fb_priv->lock); rwlock_init(&fb_priv->klock); fb_priv->port[0] = IDP_UNKNOWN; fb_priv->port[1] = IDP_UNKNOWN; ret = init_fblock(fb, name, fb_priv); if (ret) goto err2; fb->netfb_rx = fb_huf_netrx; fb->event_rx = fb_huf_event; // fb->linearize = fb_aes_linearize; // fb->delinearize = fb_aes_delinearize; fb_proc = proc_create_data(fb->name, 0444, fblock_proc_dir, &fb_huf_proc_fops, (void *)(long) fb); if (!fb_proc) goto err3; ret = register_fblock_namespace(fb); if (ret) goto err4; __module_get(THIS_MODULE); buildHuffmanTree(&tree); fillTable(tree, 0); invertCodes(); return fb; err4: remove_proc_entry(fb->name, fblock_proc_dir); err3: cleanup_fblock_ctor(fb); err2: kfree(fb_priv); err: kfree_fblock(fb); return NULL; }