Posted to tcl by zoro2 at Mon Feb 08 12:42:43 GMT 2010view raw

  1. #if 0
  2. Tcl_Interp *tinterp = GetThreadInterp();
  3.  
  4. data = Tcl_NewObj();
  5. Tcl_IncrRefCount(data);
  6. count = Tcl_ReadChars(p->fileChannel, data, size, 0);
  7.  
  8. if (count != size) {
  9. Tcl_DecrRefCount(data);
  10. return NULL;
  11. }
  12.  
  13. Tcl_SetObjResult(tinterp, Tcl_NewObj());
  14. CookfsLog(printf("CookfsDecompressPage before inflate"))
  15. if (Tcl_ZlibInflate(tinterp, TCL_ZLIB_FORMAT_RAW, data, 0, NULL) == TCL_ERROR) {
  16. CookfsLog(printf("CookfsDecompressPage inflate FAILED"))
  17. return NULL;
  18. }
  19. CookfsLog(printf("CookfsDecompressPage after inflate"))
  20.  
  21. Tcl_DecrRefCount(data);
  22. cobj = Tcl_GetObjResult(tinterp);
  23. #else
  24. Tcl_ZlibStream zshandle;
  25. int bsize;
  26.  
  27. if (Tcl_ZlibStreamInit(NULL, TCL_ZLIB_STREAM_INFLATE, TCL_ZLIB_FORMAT_RAW, 9, NULL, &zshandle) != TCL_OK) {
  28. Tcl_Panic("Tcl_ZlibStreamInit failed!");
  29. }
  30. data = Tcl_NewObj();
  31. Tcl_IncrRefCount(data);
  32. count = Tcl_ReadChars(p->fileChannel, data, size, 0);
  33.  
  34. if (count != size) {
  35. Tcl_DecrRefCount(data);
  36. return NULL;
  37. }
  38.  
  39. printf("Read %d chars\n", count);
  40. if (Tcl_ZlibStreamPut(zshandle, data, TCL_ZLIB_FINALIZE) != TCL_OK) {
  41. Tcl_DecrRefCount(data);
  42. Tcl_Panic("Tcl_ZlibStreamPut failed");
  43. }
  44. Tcl_DecrRefCount(data);
  45. cobj = Tcl_NewObj();
  46. if (Tcl_ZlibStreamGet(zshandle, cobj, TCL_ZLIB_FINALIZE) != TCL_OK) {
  47. Tcl_Panic("Tcl_ZlibStreamPut failed");
  48. }
  49. Tcl_GetByteArrayFromObj(cobj, &bsize);
  50. printf("LEN: %d\n", bsize);
  51. Tcl_ZlibStreamClose(zshandle);
  52. #endif
  53.