mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed multiple occurrences of the same directory in the recordings list in case there are directories that only differ in non-alphanumeric characters
This commit is contained in:
		@@ -1006,6 +1006,8 @@ Andreas Mair <amair.sob@googlemail.com>
 | 
				
			|||||||
 for fixing the type of MBperMinute in cVideoDiskUsage::HasChanged()
 | 
					 for fixing the type of MBperMinute in cVideoDiskUsage::HasChanged()
 | 
				
			||||||
 for reporting a bug in sorting recordings in case two folders have the same name,
 | 
					 for reporting a bug in sorting recordings in case two folders have the same name,
 | 
				
			||||||
 but one of them ends in an additional digit, as in "abc" and "abc2"
 | 
					 but one of them ends in an additional digit, as in "abc" and "abc2"
 | 
				
			||||||
 | 
					 for reporting multiple occurrences of the same directory in the recordings list ini
 | 
				
			||||||
 | 
					 case there are directories that only differ in non-alphanumeric characters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Olivier Jacques <jacquesolivier@hotmail.com>)
 | 
					Olivier Jacques <jacquesolivier@hotmail.com>)
 | 
				
			||||||
 for translating OSD texts to the French language
 | 
					 for translating OSD texts to the French language
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								HISTORY
									
									
									
									
									
								
							@@ -7494,7 +7494,7 @@ Video Disk Recorder Revision History
 | 
				
			|||||||
  use it.
 | 
					  use it.
 | 
				
			||||||
- Added maximum SNR value for PCTV Systems PCTV 73ESE (thanks to Cedric Dewijs).
 | 
					- Added maximum SNR value for PCTV Systems PCTV 73ESE (thanks to Cedric Dewijs).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2013-01-15: Version 1.7.36
 | 
					2013-01-16: Version 1.7.36
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Added maximum SNR value for PCTV Systems nanoStick T2 290e (thanks to Antti
 | 
					- Added maximum SNR value for PCTV Systems nanoStick T2 290e (thanks to Antti
 | 
				
			||||||
  Hartikainen).
 | 
					  Hartikainen).
 | 
				
			||||||
@@ -7520,3 +7520,6 @@ Video Disk Recorder Revision History
 | 
				
			|||||||
- The SVDRP command LSTR now knows the additional parameter "path", which can be
 | 
					- The SVDRP command LSTR now knows the additional parameter "path", which can be
 | 
				
			||||||
  given to get the actual file name of a recording's directory (suggested by
 | 
					  given to get the actual file name of a recording's directory (suggested by
 | 
				
			||||||
  Stefan Stolz).
 | 
					  Stefan Stolz).
 | 
				
			||||||
 | 
					- Fixed multiple occurrences of the same directory in the recordings list in case there
 | 
				
			||||||
 | 
					  are directories that only differ in non-alphanumeric characters (reported by Andreas
 | 
				
			||||||
 | 
					  Mair).
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								menu.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 * See the main source file 'vdr.c' for copyright information and
 | 
					 * See the main source file 'vdr.c' for copyright information and
 | 
				
			||||||
 * how to reach the author.
 | 
					 * how to reach the author.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * $Id: menu.c 2.72 2012/12/21 11:11:14 kls Exp $
 | 
					 * $Id: menu.c 2.73 2013/01/16 15:58:58 kls Exp $
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "menu.h"
 | 
					#include "menu.h"
 | 
				
			||||||
@@ -2273,7 +2273,6 @@ void cMenuRecordings::Set(bool Refresh)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  const char *CurrentRecording = cReplayControl::LastReplayed();
 | 
					  const char *CurrentRecording = cReplayControl::LastReplayed();
 | 
				
			||||||
  cMenuRecordingItem *LastItem = NULL;
 | 
					  cMenuRecordingItem *LastItem = NULL;
 | 
				
			||||||
  char *LastItemText = NULL;
 | 
					 | 
				
			||||||
  cThreadLock RecordingsLock(&Recordings);
 | 
					  cThreadLock RecordingsLock(&Recordings);
 | 
				
			||||||
  if (Refresh) {
 | 
					  if (Refresh) {
 | 
				
			||||||
     if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()))
 | 
					     if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current()))
 | 
				
			||||||
@@ -2285,23 +2284,32 @@ void cMenuRecordings::Set(bool Refresh)
 | 
				
			|||||||
  for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
 | 
					  for (cRecording *recording = Recordings.First(); recording; recording = Recordings.Next(recording)) {
 | 
				
			||||||
      if (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == FOLDERDELIMCHAR)) {
 | 
					      if (!base || (strstr(recording->Name(), base) == recording->Name() && recording->Name()[strlen(base)] == FOLDERDELIMCHAR)) {
 | 
				
			||||||
         cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
 | 
					         cMenuRecordingItem *Item = new cMenuRecordingItem(recording, level);
 | 
				
			||||||
         if (*Item->Text() && (!Item->IsDirectory() || (!LastItem || !LastItem->IsDirectory() || strcmp(Item->Text(), LastItemText) != 0))) {
 | 
					         cMenuRecordingItem *LastDir = NULL;
 | 
				
			||||||
 | 
					         if (Item->IsDirectory()) {
 | 
				
			||||||
 | 
					            // Sorting may ignore non-alphanumeric characters, so we need to explicitly handle directories in case they only differ in such characters:
 | 
				
			||||||
 | 
					            for (cMenuRecordingItem *p = LastItem; p; p = dynamic_cast<cMenuRecordingItem *>(p->Prev())) {
 | 
				
			||||||
 | 
					                if (p->Name() && strcmp(p->Name(), Item->Name()) == 0) {
 | 
				
			||||||
 | 
					                   LastDir = p;
 | 
				
			||||||
 | 
					                   break;
 | 
				
			||||||
 | 
					                   }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					         if (*Item->Text() && !LastDir) {
 | 
				
			||||||
            Add(Item);
 | 
					            Add(Item);
 | 
				
			||||||
            LastItem = Item;
 | 
					            LastItem = Item;
 | 
				
			||||||
            free(LastItemText);
 | 
					            if (Item->IsDirectory())
 | 
				
			||||||
            LastItemText = strdup(LastItem->Text()); // must use a copy because of the counters!
 | 
					               LastDir = Item;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
         else
 | 
					         else
 | 
				
			||||||
            delete Item;
 | 
					            delete Item;
 | 
				
			||||||
         if (LastItem) {
 | 
					         if (LastItem) {
 | 
				
			||||||
            if (CurrentRecording && strcmp(CurrentRecording, recording->FileName()) == 0)
 | 
					            if (CurrentRecording && strcmp(CurrentRecording, recording->FileName()) == 0)
 | 
				
			||||||
               SetCurrent(LastItem);
 | 
					               SetCurrent(LastItem);
 | 
				
			||||||
            if (LastItem->IsDirectory())
 | 
					 | 
				
			||||||
               LastItem->IncrementCounter(recording->IsNew());
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					         if (LastDir)
 | 
				
			||||||
 | 
					            LastDir->IncrementCounter(recording->IsNew());
 | 
				
			||||||
         }
 | 
					         }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
  free(LastItemText);
 | 
					 | 
				
			||||||
  if (Refresh)
 | 
					  if (Refresh)
 | 
				
			||||||
     Display();
 | 
					     Display();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user