char *wf_get_query_content(const char *msg) { if (msg == NULL) return NULL; char *compressedData = strstr(msg, "compressedData='"); if (!compressedData) return get_info(msg, "urn:cryonline:k01'>", "</query>", NULL); compressedData += sizeof ("compressedData='") - 1; char *originalSize = strstr(msg, "originalSize='"); if (!originalSize) return NULL; originalSize += sizeof ("originalSize='") - 1; size_t outsize = strtol(originalSize, NULL, 10); size_t insize = strstr(compressedData, "'") - compressedData + 1; char *ret = zlibb64decode(compressedData, insize, outsize); #ifdef DEBUG if (ret != NULL) { xprintf("##(%3u/%3u)-< \033[1;36m%s\033[0m\n", (unsigned) outsize, (unsigned) insize, ret); } #endif return ret; }
char *wf_get_query_content(const char *msg) { char *compressedData = strstr(msg, "compressedData='"); if (!compressedData) return get_info(msg, "urn:cryonline:k01'>", "</query>", NULL); compressedData += sizeof ("compressedData='") - 1; char *originalSize = strstr(msg, "originalSize='"); if (!originalSize) return NULL; originalSize += sizeof ("originalSize='") - 1; size_t outsize = strtol(originalSize, NULL, 10); size_t insize = strstr(compressedData, "'") - compressedData + 1; return zlibb64decode(compressedData, insize, outsize); }