/* This code will allow you to compress an decompress strings into memory. It is important to note how you must free. string_compress() will not free what you pass to it. It will return a malloced string that you are responsable for. string_uncompress() will not free what you pass to it. It will return a static buffer that does not need be freed. In fact, if you do it will crash. This is only useful for large strings like descriptions. It has a good compression rate. If you are interested in saving ram on your text based game you might consider it. I added it into my mud for rooms and character descriptions. It has saved a few megs. If you want to talk to me about compression send me a message on aim at jeffreybasurto or email me at auadmin@feltain.org. Thanks, Runter */ #include #include #include #include #include #include "merc.h" #include "zlib.h" char *string_compress(char *string) { int len = strlen(string)+1, comprLen = MSL+MSL; static char compr[MSL+MSL]; char *ptr; int i; memset(compr, 0, MSL+MSL); compress((Bytef*)compr, (uLong *)&comprLen, (const Bytef*)string, len); ptr = (char *)malloc(comprLen+1); for(i = 0;i < comprLen;++i) { ptr[i] = compr[i]; } ptr[i] = 0; return ptr; } char *string_uncompress(char *string) { int comprLen = MSL+MSL; char *ptr; static char uncompr[MSL+MSL]; int uncomprLen = MSL+MSL; memset(uncompr, 0, MSL+MSL); uncompress((Bytef*) uncompr, (uLong*)&uncomprLen, (Bytef*)string, comprLen); return uncompr; }