Skip to content

Commit

Permalink
MediaPriority: Replace C macro by proper string comparison
Browse files Browse the repository at this point in the history
Avoids use of C macro that is discouraged by C++ Core
gGidlines. Performance should be not crucial in this case.

Fixes a warning found by Clang (Wstring-plus-int).
  • Loading branch information
gruenich committed Feb 6, 2025
1 parent fcb0d9b commit 5d026c4
Showing 1 changed file with 52 additions and 18 deletions.
70 changes: 52 additions & 18 deletions zypp/media/MediaPriority.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace zypp

/**
* 4: local: file,dir,hd
* 3: remote: nfs,cifs,smb
* 3: remote: nfs,nfs4,cifs,smb
* ?: download: http,https,ftp,sftp, tftp
* ?: volatile: cd,dvd
* 0: the rest
Expand All @@ -41,44 +41,78 @@ namespace zypp
{
switch ( scheme_r[0] )
{
#define RETURN_IF(scheme,value) \
if ( ::strcmp( scheme+1, scheme_r.c_str()+1 ) == 0 ) return value;
case 'c':
RETURN_IF( "cd", ZConfig::instance().download_media_prefer_download() ? 1 : 2 );
RETURN_IF( "cifs", 3 );
if ( scheme_r.compare("cd") == 0 )
{
return ZConfig::instance().download_media_prefer_download() ? 1 : 2;
}
if ( scheme_r.compare("cifs") == 0 )
{
return 3;
}
break;

case 'd':
RETURN_IF( "dvd", ZConfig::instance().download_media_prefer_download() ? 1 : 2 );
RETURN_IF( "dir", 4 );
if ( scheme_r.compare("dvd") == 0 )
{
return ZConfig::instance().download_media_prefer_download() ? 1 : 2;
}
if ( scheme_r.compare("dir") == 0 )
{
return 4;
}
break;

case 'f':
RETURN_IF( "file", 4 );
RETURN_IF( "ftp", ZConfig::instance().download_media_prefer_download() ? 2 : 1);
if ( scheme_r.compare("ftp") == 0 )
{
return ZConfig::instance().download_media_prefer_download() ? 2 : 1;
}
if ( scheme_r.compare("file") == 0 )
{
return 4;
}
break;

case 't':
RETURN_IF( "tftp", ZConfig::instance().download_media_prefer_download() ? 2 : 1);
if ( scheme_r.compare("tftp") == 0 )
{
return ZConfig::instance().download_media_prefer_download() ? 2 : 1;
}
break;

case 'h':
RETURN_IF( "http", ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
RETURN_IF( "https", ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
RETURN_IF( "hd", 4 );
if ( (scheme_r.compare("http") == 0 )
|| ( scheme_r.compare("https") == 0 ) )
{
return ZConfig::instance().download_media_prefer_download() ? 2 : 1;
}
if ( scheme_r.compare("hd") == 0 )
{
return 4;
}
break;

case 'n':
RETURN_IF( "nfs", 3 );
RETURN_IF( "nfs4", 3 );
if ( (scheme_r.compare("nfs") == 0 )
|| ( scheme_r.compare("nfs4") == 0 ) )
{
return 3;
}
break;

case 's':
RETURN_IF( "sftp", ZConfig::instance().download_media_prefer_download() ? 2 : 1 );
RETURN_IF( "smb", 3 );
if (scheme_r.compare("sftp") == 0 )
{
return ZConfig::instance().download_media_prefer_download() ? 2 : 1;
}
if ( scheme_r.compare("smb") == 3 )
{
return 4;
}
break;
#undef RETURN_IF
}
// the rest
return 0;
}

Expand Down

0 comments on commit 5d026c4

Please sign in to comment.