Minimize define hell

Skipping a 20 KB stub in OS-specific non-windows builds and omitting a few very fast if checks isn't worth the code quality degradation that involves all of the ifdef options.

ifdefs should be reserved for stuff that either doesn't compile whatsoever in some specific configurations (NETFRAMEWORK), or is required to make logical decisions based on the compiler input (e.g. DEBUG for detecting debugging builds or ASF_VARIANT_* for hardcoding the platform identifier to use for auto-updates)

In all other situations, we should use OperatingSystem if condition, even if it's equal to hitting them on the platforms that are unlikely to hit them.

And I say unlikely, because nothing stops me from downloading a win-x64 build and running it like a generic one on windows, what you gonna do?
This commit is contained in:
Archi
2021-11-10 19:03:05 +01:00
parent e62234892a
commit 0964cdac96
9 changed files with 11 additions and 68 deletions

View File

@@ -217,7 +217,6 @@ namespace ArchiSteamFarm.Helpers {
throw new ArgumentNullException(nameof(encryptedString));
}
#if TARGET_GENERIC || TARGET_WINDOWS
if (!OperatingSystem.IsWindows()) {
return null;
}
@@ -235,9 +234,6 @@ namespace ArchiSteamFarm.Helpers {
return null;
}
#else
return null;
#endif
}
private static string? EncryptAES(string decryptedString) {
@@ -268,7 +264,6 @@ namespace ArchiSteamFarm.Helpers {
throw new ArgumentNullException(nameof(decryptedString));
}
#if TARGET_GENERIC || TARGET_WINDOWS
if (!OperatingSystem.IsWindows()) {
return null;
}
@@ -286,9 +281,6 @@ namespace ArchiSteamFarm.Helpers {
return null;
}
#else
return null;
#endif
}
public enum ECryptoMethod : byte {

View File

@@ -19,12 +19,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#if TARGET_GENERIC || TARGET_WINDOWS
using System.Security.AccessControl;
#endif
using System;
using System.Diagnostics;
using System.IO;
using System.Security.AccessControl;
using System.Threading;
using System.Threading.Tasks;
using ArchiSteamFarm.Core;
@@ -167,7 +165,6 @@ namespace ArchiSteamFarm.Helpers {
if (!Directory.Exists(directoryPath)) {
Directory.CreateDirectory(directoryPath);
#if TARGET_GENERIC || TARGET_WINDOWS
if (OperatingSystem.IsWindows()) {
DirectoryInfo directoryInfo = new(directoryPath);
@@ -179,20 +176,14 @@ namespace ArchiSteamFarm.Helpers {
// Non-critical, user might have no rights to manage the resource
ASF.ArchiLogger.LogGenericDebuggingException(e);
}
}
#endif
#if TARGET_GENERIC || !TARGET_WINDOWS
if (OperatingSystem.IsFreeBSD() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) {
} else if (OperatingSystem.IsFreeBSD() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) {
OS.UnixSetFileAccess(directoryPath!, OS.EUnixPermission.Combined777);
}
#endif
}
try {
new FileStream(FilePath, FileMode.CreateNew).Dispose();
#if TARGET_GENERIC || TARGET_WINDOWS
if (OperatingSystem.IsWindows()) {
FileInfo fileInfo = new(FilePath);
@@ -204,14 +195,9 @@ namespace ArchiSteamFarm.Helpers {
// Non-critical, user might have no rights to manage the resource
ASF.ArchiLogger.LogGenericDebuggingException(e);
}
}
#endif
#if TARGET_GENERIC || !TARGET_WINDOWS
if (OperatingSystem.IsFreeBSD() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) {
} else if (OperatingSystem.IsFreeBSD() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) {
OS.UnixSetFileAccess(FilePath, OS.EUnixPermission.Combined777);
}
#endif
} catch (IOException) {
// Ignored, if the file was already created in the meantime by another instance, this is fine
}