[PATCH 1/2] Added a function to check if specific OS features are available

Lubomir I. Ivanov neolit123 at gmail.com
Fri Oct 19 16:31:06 PDT 2012


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

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 <neolit123 at gmail.com>
---
 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 d88ee1d..940e538 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 c11bc2f..b32bde8 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 fb76088..6727c10 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 1c8cd0a..2127614 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;
+	}
+}
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list