diff options
-rw-r--r-- | include/spm.h | 22 | ||||
-rw-r--r-- | lib/config_global.c | 6 | ||||
-rw-r--r-- | lib/error_handler.c | 1 | ||||
-rw-r--r-- | lib/extern/url.c | 2 | ||||
-rw-r--r-- | lib/internal_cmd.c | 4 | ||||
-rw-r--r-- | lib/mime.c | 2 | ||||
-rw-r--r-- | tests/test_error_handler_spm_strerror.c | 4 | ||||
-rw-r--r-- | tests/test_error_handler_spmerrno_cause.c | 4 |
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? @@ -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 |