InputSource SourceFromStream(const char8 *description, FILE *file) { Entity e; e = NewExternalEntity("",0,description,0,0); if(!strchr8(description, '/')) EntitySetBaseURL(e, default_base_url()); return NewInputSource(e, MakeFILE16FromFILE(file, "r")); }
InputSource SourceFromFILE16(const char8 *description, FILE16 *file16) { Entity e; e = NewExternalEntity(0, 0, description, 0, 0); if(!strchr8(description, '/')) { char8 *base = default_base_url(); EntitySetBaseURL(e, base); Free(base); } return NewInputSource(e, file16); }
InputSource EntityOpen(Entity e) { FILE16 *f16; char8 *r_url; if(e->type == ET_external) { const char8 *url = EntityURL(e); if(!url || !(f16 = url_open(url, 0, "r", &r_url))) return 0; if(r_url && !e->base_url) EntitySetBaseURL(e, r_url); Free(r_url); } else { f16 = MakeFILE16FromString((char *)e->text, -1, "r"); } return NewInputSource(e, f16); }