Below given is my part of code that used to work some (long) time back. When I need this code, I find it works no more. The compilation is clean, bur when run gives the error as:

[lx@localhost listDir]$ ./listDir /home/lux/Downloads/xfrd/raw /home/lx/Downloads/xfrd/rawConv/
04. qStrDir: /home/lx/Downloads/xfrd/raw, qFileInfoDirInfo->fileName: raw01
05. Before QFileInfoListIterator filesIterator( *filesList ): 0
Segmentation fault (core dumped)

The problem seems to be inconsistency by way of new version of the Qt. Please help to make this code work.

Qt Code:
  1. QDir qDirFindLargest, qDirLargestFile, qDirFilesChange;
  2. QFile qf;
  3. QString qStrDir, qStrDir2, qStrTemp; // a.argv()[i] == argv[i]
  4. qStrTemp = a.argv()[0];
  5. qStrDir = a.argv()[1];
  6. qStrDir2 = a.argv()[2];
  7. //cout << "Total agrc: " << argc << ", Directories 0: " << qStrTemp << ", 1: " << qStrDir << ", 2: " << qStrDir2 << endl;
  8.  
  9. qDirFindLargest.setPath ( qStrDir );
  10. qDirFindLargest.setFilter( QDir::Dirs ); // sets only the directory: shows the directories only
  11. qDirFindLargest.setSorting( QDir::Name | QDir::Reversed );
  12.  
  13. const QFileInfoList *qFileInfoDirList = qDirFindLargest.entryInfoList();
  14. QFileInfoListIterator qFileInfoListIteratorDir( *qFileInfoDirList );
  15. QFileInfo *qFileInfoDirInfo;
  16.  
  17. QString qFileName;
  18. int fileNumber = 0;
  19.  
  20. while ( ( qFileInfoDirInfo = qFileInfoListIteratorDir.current() ) != 0 ) {
  21. if (qFileInfoDirInfo->fileName() == "." ) { // first item in the directory: . (let pass)
  22. ++qFileInfoListIteratorDir;
  23. }
  24. else if (qFileInfoDirInfo->fileName() == ".." ) { // first item in the directory: .. (let pass)
  25. ++qFileInfoListIteratorDir;
  26. }
  27. else {
  28. qDirLargestFile.setPath ( qStrDir + qFileInfoDirInfo->fileName() );
  29. qDirLargestFile.setFilter( QDir::Files ); // qFiles to only show the files
  30. qDirLargestFile.setSorting( QDir::Name | QDir::Reversed ); // sorting the files in the directory in reverse order: to find the last file alphabetically
  31. cout << "04. qStrDir: " << qStrDir << ", qFileInfoDirInfo->fileName: " << qFileInfoDirInfo->fileName() << endl;
  32. const QFileInfoList *filesList = qDirLargestFile.entryInfoList();
  33. cout << "05. Before QFileInfoListIterator filesIterator( *filesList );" << endl;
  34.  
  35. QFileInfoListIterator filesIterator( *filesList );
  36. cout << "06. After QFileInfoListIterator filesIterator( *filesList );" << endl;
  37. QFileInfo *files;
  38. cout << "07. After QFileInfo *files;" << endl;
  39. files = filesIterator.current();
  40. cout << "07A. After files = filesIterator.current(), files = filesIterator.current(): " << filesIterator.current() << endl;
  41. cout << "08. After files = filesIterator.current(), files->fileName: " << files->fileName() << endl;
  42.  
  43. ... }
To copy to clipboard, switch view to plain text mode