From 5b3e480be3c61ea790ee2a39727ffad1c3487178 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Sat, 20 Oct 2012 02:31:06 +0300 Subject: [PATCH] Added a function to check if specific OS features are available linux.c, macos.c, windows.c now contain subsurface_os_feature_available() that can accept an enum type os_feature_t defined in dive.h. The function can be useful to check if a specific global feature is available on a certain OS version. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- dive.h | 6 ++++++ linux.c | 5 +++++ macos.c | 5 +++++ windows.c | 15 +++++++++++++++ 4 files changed, 31 insertions(+) diff --git a/dive.h b/dive.h index d88ee1d92..940e5388a 100644 --- a/dive.h +++ b/dive.h @@ -437,10 +437,16 @@ const char *monthname(int mon); #define FIVE_STARS UTF8_BLACKSTAR UTF8_BLACKSTAR UTF8_BLACKSTAR UTF8_BLACKSTAR UTF8_BLACKSTAR extern const char *star_strings[]; +/* enum holding list of OS features */ +typedef enum { + UTF8_FONT_WITH_STARS +} os_feature_t; + extern const char *default_filename; extern const char *existing_filename; extern const char *subsurface_default_filename(void); extern const char *subsurface_gettext_domainpath(char *); +extern gboolean subsurface_os_feature_available(os_feature_t); extern void subsurface_command_line_init(gint *, gchar ***); extern void subsurface_command_line_exit(gint *, gchar ***); #define AIR_PERMILLE 209 diff --git a/linux.c b/linux.c index c11bc2f0c..b32bde8c1 100644 --- a/linux.c +++ b/linux.c @@ -112,3 +112,8 @@ void subsurface_command_line_exit(gint *argc, gchar ***argv) { /* this is a no-op */ } + +gboolean subsurface_os_feature_available(os_feature_t f) +{ + return TRUE; +} diff --git a/macos.c b/macos.c index fb760887f..6727c1053 100644 --- a/macos.c +++ b/macos.c @@ -172,3 +172,8 @@ void subsurface_command_line_exit(gint *argc, gchar ***argv) { /* this is a no-op */ } + +gboolean subsurface_os_feature_available(os_feature_t f) +{ + return TRUE; +} diff --git a/windows.c b/windows.c index 1c8cd0a01..2127614bd 100644 --- a/windows.c +++ b/windows.c @@ -223,3 +223,18 @@ void subsurface_command_line_exit(gint *argc, gchar ***argv) g_free((*argv)[i]); g_free(*argv); } + +/* check if we are running a newer OS version */ +gboolean subsurface_os_feature_available(os_feature_t f) +{ + switch (f) { + case UTF8_FONT_WITH_STARS: + if ((GetVersion() & 0xff) < 6) + return FALSE; /* version less than Vista */ + else + return TRUE; + break; + default: + return TRUE; + } +}