- wxFSFile *fi;
- wxFileSystem fsys;
- wxInputStream *s;
- wxString bookFull;
-
- int sz;
- char *buff, *lineptr;
- char linebuf[300];
-
- wxString title = _("noname"),
- safetitle,
- start = wxEmptyString,
- contents = wxEmptyString,
- index = wxEmptyString,
- charset = wxEmptyString;
-
-#ifdef __WXMAC__
- if (wxIsAbsolutePath(book)) bookFull = book;
- else bookFull = wxGetCwd() + book; // no slash or dot
- wxFileName fn( bookFull );
- bookFull = fn.GetFullPath( wxPATH_UNIX );
-#else
- if (wxIsAbsolutePath(book)) bookFull = book;
- else bookFull = wxGetCwd() + "/" + book;
-#endif
-
- fi = fsys.OpenFile(bookFull);
- if (fi == NULL)
- {
- wxLogError(_("Cannot open HTML help book: %s"), bookFull.c_str());
- return FALSE;
- }
- fsys.ChangePathTo(bookFull);
- s = fi->GetStream();
- sz = s->GetSize();
- buff = new char[sz + 1];
- buff[sz] = 0;
- s->Read(buff, sz);
- lineptr = buff;
-
- do {
- lineptr = ReadLine(lineptr, linebuf);
-
- if (strstr(linebuf, "Title=") == linebuf)
- title = linebuf + strlen("Title=");
- if (strstr(linebuf, "Default topic=") == linebuf)
- start = linebuf + strlen("Default topic=");
- if (strstr(linebuf, "Index file=") == linebuf)
- index = linebuf + strlen("Index file=");
- if (strstr(linebuf, "Contents file=") == linebuf)
- contents = linebuf + strlen("Contents file=");
- if (strstr(linebuf, "Charset=") == linebuf)
- charset = linebuf + strlen("Charset=");
- } while (lineptr != NULL);
- delete[] buff;
-
- wxFontEncoding enc;
- if (charset == wxEmptyString) enc = wxFONTENCODING_SYSTEM;
- else enc = wxTheFontMapper->CharsetToEncoding(charset);
- bool rtval = AddBookParam(*fi, enc,
- title, contents, index, start, fsys.GetPath());
- delete fi;
- return rtval;