+// utility function: read a wxString from a wxInputStream
+static void ReadString(wxString& str, wxInputStream* s, wxMBConv& conv)
+{
+ size_t streamSize = s->GetSize();
+
+ if (streamSize == ~(size_t)0)
+ {
+ const size_t bufSize = 4095;
+ char buffer[bufSize+1];
+ size_t lastRead;
+
+ do
+ {
+ s->Read(buffer, bufSize);
+ lastRead = s->LastRead();
+ buffer[lastRead] = 0;
+ str.Append(wxString(buffer, conv));
+ }
+ while (lastRead == bufSize);
+ }
+ else
+ {
+ char* src = new char[streamSize+1];
+ s->Read(src, streamSize);
+ src[streamSize] = 0;
+ str = wxString(src, conv);
+ delete[] src;
+ }
+}