7d53fae7ee0cd9f8d4bcc00c21b07a0ffb3a77a1
Stefan Schuermans implement synchronization s...

Stefan Schuermans authored 10 years ago

1) /* Blinker
2)    Copyright 2011-2014 Stefan Schuermans <stefan@blinkenarea.org>
3)    Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
4)    a blinkenarea.org project */
5) 
6) #include "SyncRecv.h"
7) 
8) namespace Blinker {
9) 
Stefan Schuermans implement synchronization f...

Stefan Schuermans authored 10 years ago

10) /**
11)  * @brief check if playlist entry name matches sync name
12)  * @param[in] playlist name in playlist
13)  * @param[in] sync name from synchronization information
14)  * @return true if name matches, false otherwise
15)  */
16) bool SyncRecv::checkName(const std::string &playlist, const std::string &sync)
17) {
Stefan Schuermans change local file name pref...

Stefan Schuermans authored 10 years ago

18)   std::string::size_type pos, noprefix;
Stefan Schuermans implement synchronization f...

Stefan Schuermans authored 10 years ago

19)   std::string noext;
Stefan Schuermans change local file name pref...

Stefan Schuermans authored 10 years ago

20)   unsigned int underscore;
Stefan Schuermans implement synchronization f...

Stefan Schuermans authored 10 years ago

21) 
22)   // full match
23)   if (playlist == sync)
24)     return true;
25) 
26)   // match without file extension
27)   pos = playlist.rfind('.');
28)   noext = playlist.substr(0, pos);
29)   if (noext == sync)
30)     return true;
31) 
Stefan Schuermans change local file name pref...

Stefan Schuermans authored 10 years ago

32)   // match without ignore prefix ".*__"
33)   noprefix = 0;
34)   underscore = 0;
35)   for (pos = 0; pos < noext.length(); ++pos) {
36)     if (noext.at(pos) == '_') {
37)       underscore++;
38)       if (underscore >= 2)
39)         noprefix = pos + 1;
40)     } else {
41)       underscore = 0;
42)     }
43)   }
44)   if (noext.substr(noprefix) == sync)
Stefan Schuermans implement synchronization f...

Stefan Schuermans authored 10 years ago

45)     return true;
46) 
47)   // no match
48)   return false;
49) }
50)