Commit a7da2bd6 authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Bug 702491 - UTF-16LE BOM not handled by source browser and \snippet

parent 4c50bd75
Loading
Loading
Loading
Loading
+18 −4
Original line number Original line Diff line number Diff line
@@ -2420,6 +2420,19 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
      err("file `%s' not found\n",name);
      err("file `%s' not found\n",name);
      return "";
      return "";
    }
    }
    BufStr buf(fi.size());
    fileOpened=readInputFile(name,buf,filter,isSourceCode);
    if (fileOpened)
    {
      int s = buf.size();
      if (s>1 && buf.at(s-2)!='\n')
      {
        buf.at(s-1)='\n';
        buf.addChar(0);
      }
      return buf.data();
    }
#if 0
    QCString filterName = getFileFilter(name,isSourceCode);
    QCString filterName = getFileFilter(name,isSourceCode);
    if (filterName.isEmpty() || !filter)
    if (filterName.isEmpty() || !filter)
    {
    {
@@ -2472,6 +2485,7 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
      Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",contents.data());
      Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",contents.data());
      return transcodeCharacterStringToUTF8(contents);
      return transcodeCharacterStringToUTF8(contents);
    }
    }
#endif
  }
  }
  if (!fileOpened)  
  if (!fileOpened)  
  {
  {
@@ -7345,7 +7359,7 @@ static int transcodeCharacterBuffer(const char *fileName,BufStr &srcBuf,int size
}
}


//! read a file name \a fileName and optionally filter and transcode it
//! read a file name \a fileName and optionally filter and transcode it
bool readInputFile(const char *fileName,BufStr &inBuf)
bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceCode)
{
{
  // try to open file
  // try to open file
  int size=0;
  int size=0;
@@ -7354,8 +7368,8 @@ bool readInputFile(const char *fileName,BufStr &inBuf)


  QFileInfo fi(fileName);
  QFileInfo fi(fileName);
  if (!fi.exists()) return FALSE;
  if (!fi.exists()) return FALSE;
  QCString filterName = getFileFilter(fileName,FALSE);
  QCString filterName = getFileFilter(fileName,isSourceCode);
  if (filterName.isEmpty())
  if (filterName.isEmpty() || !filter)
  {
  {
    QFile f(fileName);
    QFile f(fileName);
    if (!f.open(IO_ReadOnly))
    if (!f.open(IO_ReadOnly))
@@ -7432,7 +7446,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf)
    inBuf.shrink(newSize); // resize the array
    inBuf.shrink(newSize); // resize the array
    //printf(".......resizing from %d to %d result=[%s]\n",oldPos+size,oldPos+newSize,dest.data());
    //printf(".......resizing from %d to %d result=[%s]\n",oldPos+size,oldPos+newSize,dest.data());
  }
  }
  inBuf.at(inBuf.curPos())='\0';
  inBuf.addChar(0);
  return TRUE;
  return TRUE;
}
}


+2 −1
Original line number Original line Diff line number Diff line
@@ -372,7 +372,8 @@ QCString convertCharEntitiesToUTF8(const QCString &s);


void stackTrace();
void stackTrace();


bool readInputFile(const char *fileName,BufStr &inBuf);
bool readInputFile(const char *fileName,BufStr &inBuf,
                   bool filter=TRUE,bool isSourceCode=FALSE);
QCString filterTitle(const QCString &title);
QCString filterTitle(const QCString &title);


bool patternMatch(const QFileInfo &fi,const QStrList *patList);
bool patternMatch(const QFileInfo &fi,const QStrList *patList);