- int chars = 0;
- int blanks = 0;
- for (DocIterator dit = from ; dit != to ; dit.forwardPos()) {
-
- if (!dit.inTexted()) continue;
- Paragraph const & par = dit.paragraph();
- pos_type const pos = dit.pos();
-
- if (pos != dit.lastpos() && !par.isDeleted(pos)) {
- if (Inset const * ins = par.getInset(pos)) {
- if (ins->isLetter())
- ++chars;
- else if (with_blanks && ins->isSpace())
- ++blanks;
- } else {
- char_type const c = par.getChar(pos);
- if (isPrintableNonspace(c))
- ++chars;
- else if (isSpace(c) && with_blanks)
- ++blanks;
- }
+ Buffer * buffer = theBufferList().getBuffer(fname);
+ if (!buffer) {
+ if (!fname.exists() && !LyXVC::fileInVC(fname))
+ return 0;
+
+ buffer = theBufferList().newBuffer(fname.absFileName());
+ if (!buffer)
+ // Buffer creation is not possible.
+ return 0;
+
+ if (buffer->loadLyXFile() != Buffer::ReadSuccess) {
+ //close the buffer we just opened
+ theBufferList().release(buffer);
+ return 0;