aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2020-04-24 12:29:49 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2020-04-24 12:29:49 -0400
commit436ce68ecd41ad66e7a0605b47b5814582db8538 (patch)
tree4c54676d3ef16f3cae4244f94bdb1cb23a514926
parentd570692d29d5dade7882ee19ca8d992a8960201d (diff)
downloadspmc-436ce68ecd41ad66e7a0605b47b5814582db8538.tar.gz
Consolidate platform detection preprocessor checks
-rw-r--r--include/spm.h22
-rw-r--r--lib/config_global.c6
-rw-r--r--lib/error_handler.c1
-rw-r--r--lib/extern/url.c2
-rw-r--r--lib/internal_cmd.c4
-rw-r--r--lib/mime.c2
-rw-r--r--tests/test_error_handler_spm_strerror.c4
-rw-r--r--tests/test_error_handler_spmerrno_cause.c4
8 files changed, 31 insertions, 14 deletions
diff --git a/include/spm.h b/include/spm.h
index f9b2201..5382378 100644
--- a/include/spm.h
+++ b/include/spm.h
@@ -4,6 +4,22 @@
#ifndef SPM_SPM_H
#define SPM_SPM_H
+// Define some platform detection shortcuts
+#define OS_DARWIN 0
+#define OS_WINDOWS 0
+#define OS_LINUX 0
+
+#if defined(__APPLE__) && defined(__MACH__)
+#undef OS_DARWIN
+#define OS_DARWIN 1
+#elif defined(_WIN32)
+#undef OS_WINDOWS
+#define OS_WINDOWS 1
+#elif defined(__linux) || defined(__linux__)
+#undef OS_LINUX
+#define OS_LINUX 1
+#endif
+
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
@@ -19,7 +35,7 @@
#include <openssl/md5.h>
#include <openssl/sha.h>
-#if !defined(_WIN32)
+#if !OS_WINDOWS
#include <fts.h>
#include <glob.h>
#include <unistd.h>
@@ -65,7 +81,7 @@ extern spm_vars SPM_GLOBAL;
#define DIRSEPS_UNIX "/"
#define PATHSEP_UNIX ';'
#define PATHSEPS_UNIX ";"
-#if defined(_WIN32)
+#if OS_WINDOWS
#define DIRSEP DIRSEP_WIN32
#define DIRSEPS DIRSEPS_WIN32
#define NOT_DIRSEP DIRSEP_UNIX
@@ -98,7 +114,7 @@ _1________________________________________________"
// GLOBALS
-#ifdef __APPLE__
+#if OS_DARWIN
extern char **environ;
#define __environ environ
#endif
diff --git a/lib/config_global.c b/lib/config_global.c
index 52589d4..95302c3 100644
--- a/lib/config_global.c
+++ b/lib/config_global.c
@@ -129,11 +129,11 @@ void check_runtime_environment(void) {
int bad_rt = 0;
char *required[] = {
"file",
-#if defined(__linux) || defined(__linux__)
+#if OS_LINUX
"patchelf",
-#elif defined(__APPLE__) && defined(__MACH__)
+#elif OS_DARWIN
"install_name_tool",
-#elif defined(__WIN32__)
+#elif OS_WINDOWS
// TODO: Does windows provide some kind of equivalent?
#endif
"objdump",
diff --git a/lib/error_handler.c b/lib/error_handler.c
index cb2ef51..aa48274 100644
--- a/lib/error_handler.c
+++ b/lib/error_handler.c
@@ -13,6 +13,7 @@ const char *SPM_ERR_STRING[] = {
"Failed to fetch package",
"Manifest has no header",
"Manifest has no data",
+ "Parsing error",
NULL,
};
diff --git a/lib/extern/url.c b/lib/extern/url.c
index fe54db2..c39b314 100644
--- a/lib/extern/url.c
+++ b/lib/extern/url.c
@@ -137,7 +137,7 @@ static int fill_buffer(URL_FILE *file, size_t want) {
curl_multi_fdset() doc. */
if (maxfd == -1) {
-#ifdef _WIN32
+#ifdef _WIN32 // OS_WINDOWS not available at this level
Sleep(100);
rc = 0;
#else
diff --git a/lib/internal_cmd.c b/lib/internal_cmd.c
index e5f875f..6f6b1c6 100644
--- a/lib/internal_cmd.c
+++ b/lib/internal_cmd.c
@@ -237,9 +237,9 @@ int mkruntime_interface(int argc, char **argv) {
}
runtime_set(rt, "CFLAGS", "-I$SPM_INCLUDE $CFLAGS");
-#if defined(__APPLE__) && defined (__MACH__)
+#if OS_DARWIN
runtime_set(rt, "LDFLAGS", "-rpath $SPM_LIB:$SPM_LIB64 -L$SPM_LIB -L$SPM_LIB64 $LDFLAGS");
-#elif defined(__linux) || defined (__linux__)
+#elif OS_LINUX
runtime_set(rt, "LDFLAGS", "-Wl,-rpath=$SPM_LIB:$SPM_LIB64 -L$SPM_LIB -L$SPM_LIB64 $LDFLAGS");
#else
// TODO: Windows?
diff --git a/lib/mime.c b/lib/mime.c
index 9e4bdce..9d0205c 100644
--- a/lib/mime.c
+++ b/lib/mime.c
@@ -14,7 +14,7 @@ Process *file_command(const char *_filename) {
Process *proc_info = NULL;
char sh_cmd[PATH_MAX];
sh_cmd[0] = '\0';
-#ifdef __APPLE__
+#if OS_DARWIN
const char *fmt_cmd = "file -I \"%s\" 2>&1";
#else // GNU
const char *fmt_cmd = "file -i \"%s\" 2>&1";
diff --git a/tests/test_error_handler_spm_strerror.c b/tests/test_error_handler_spm_strerror.c
index 2164f93..4a40571 100644
--- a/tests/test_error_handler_spm_strerror.c
+++ b/tests/test_error_handler_spm_strerror.c
@@ -3,10 +3,10 @@
const char *testFmt = "translated error code '%d': returned '%s', expected '%s'\n";
struct TestCase testCase[] = {
-#if defined(__APPLE__) && defined(__MACH__)
+#if OS_DARWIN
{.caseValue.signed_integer = 0, .truthValue.sptr = "Undefined error: 0", .arg[0].signed_integer = 0},
{.caseValue.signed_integer = -1, .truthValue.sptr = "Unknown error: -1", .arg[0].signed_integer = 0},
-#elif defined(__linux) || defined(__linux__)
+#elif OS_LINUX
{.caseValue.signed_integer = 0, .truthValue.sptr = "Success", .arg[0].signed_integer = 0},
{.caseValue.signed_integer = -1, .truthValue.sptr = "Unknown error -1", .arg[0].signed_integer = 0},
#endif
diff --git a/tests/test_error_handler_spmerrno_cause.c b/tests/test_error_handler_spmerrno_cause.c
index c24b996..a8b47a0 100644
--- a/tests/test_error_handler_spmerrno_cause.c
+++ b/tests/test_error_handler_spmerrno_cause.c
@@ -3,10 +3,10 @@
const char *testFmt = "translated error code '%d': returned '%s', expected '%s'\n";
struct TestCase testCase[] = {
-#if defined(__APPLE__) && defined(__MACH__)
+#if OS_DARWIN
{.caseValue.signed_integer = 0, .truthValue.sptr = "Undefined error: 0 (winning)", .arg[0].signed_integer = 0, .arg[1].sptr = "winning"},
{.caseValue.signed_integer = -1, .truthValue.sptr = "Unknown error: -1 (not winning)", .arg[0].signed_integer = 0, .arg[1].sptr = "not winning"},
-#elif defined(__linux) || defined(__linux__)
+#elif OS_LINUX
{.caseValue.signed_integer = 0, .truthValue.sptr = "Success (winning)", .arg[0].signed_integer = 0, .arg[1].sptr = "winning"},
{.caseValue.signed_integer = -1, .truthValue.sptr = "Unknown error -1 (not winning)", .arg[0].signed_integer = 0, .arg[1].sptr = "not winning"},
#endif