String *DocumentBuilder::consumeEntityRef(bool useExtEnt){ consume("&", 1); StringBuffer *sb = new StringBuffer(10); while(peek() != ';'){ sb->append(get()); } get(); const String *ent = entitiesHash.get(sb); const String *extEnt = null; if (useExtEnt){ extEnt = extEntitiesHash.get(sb); }; delete sb; if (ent == null && extEnt == null){ throw ParseException(DString("Undefined Entity Reference")); } if (ent != null){ return new StringBuffer(ent); } if (extEnt != null){ if (er == null) return null; InputSource *is = er->resolveEntity(null, extEnt); const byte *bytes = is->openStream(); int length = is->length(); src_overflow = new SString(DString(bytes, length)); delete is; return null; } return null; }
void ConsoleTools::forward(){ InputSource *fis = InputSource::newInstance(inputFileName); const byte *stream = fis->openStream(); DString eStream(stream, fis->length(), inputEncodingIndex); Writer *outputFile = null; try{ if (outputFileName != null) outputFile = new FileWriter(outputFileName, outputEncodingIndex, bomOutput); else outputFile = new StreamWriter(stdout, outputEncodingIndex, bomOutput); }catch(Exception &e){ fprintf(stderr, "can't open file '%s' for writing:", outputFileName->getChars()); fprintf(stderr, e.getMessage()->getChars()); return; } outputFile->write(eStream); delete outputFile; delete fis; }