diff --git a/apps/sam/c/inc/platform.h b/apps/sam/c/inc/platform.h
index be1de70104f5432bd8d299bf25b5d115f44d098d..f92b9ed2d44d88b17c15df7a6c84e44e77a4f2d8 100644
--- a/apps/sam/c/inc/platform.h
+++ b/apps/sam/c/inc/platform.h
@@ -28,26 +28,27 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef PLATFORM_H
-#define PLATFORM_H
+#ifndef LIBSAM_PLATFORM_H
+#define LIBSAM_PLATFORM_H
 
 /*
  * Operating system
  */
 #define FREEBSD	0  // FreeBSD
-#define MINGW	1  // Windows native (Mingw)
+#define CYGWIN	1  // Cygwin
 #define LINUX	2  // Linux
-#define CYGWIN	3  // Cygwin
+#define MINGW	3  // Windows native (Mingw)
+#define MSVC	4  // Windows native (Visual C++ 2003)
 
-#if OS == MINGW
+#if OS == CYGWIN
 	#define INET_ADDRSTRLEN 16
 	#define NO_GETHOSTBYNAME2
-	#define NO_INET_ATON  /* implies NO_INET_PTON */
 	#define NO_INET_NTOP
-	#define NO_SSIZE_T
+	#define NO_INET_PTON
+	#define NO_SNPRINTF
 	#define NO_STRL
+	#define NO_VSNPRINTF
 	#define NO_Z_FORMAT
-	#define WINSOCK
 #endif
 
 #if OS == LINUX
@@ -56,23 +57,23 @@
 	#define NO_Z_FORMAT
 #endif
 
-#if OS == CYGWIN
+#if OS == MINGW
 	#define INET_ADDRSTRLEN 16
 	#define NO_GETHOSTBYNAME2
+	#define NO_INET_ATON  // implies NO_INET_PTON
 	#define NO_INET_NTOP
-	#define NO_INET_PTON
-	#define NO_SNPRINTF
+	#define NO_SSIZE_T
 	#define NO_STRL
-	#define NO_VSNPRINTF
 	#define NO_Z_FORMAT
+	#define WINSOCK
 #endif
 
-/*
- * Standard C99 includes - if your compiler doesn't have these, it's time to
- * upgrade
- */
-#include <stdbool.h>  // bool
-#include <stddef.h>  // size_t
+#if OS == MSVC  // FIXME: doesn't work
+	#define NO_STDBOOL_H
+	#define NO_SSIZE_T
+	#define NO_STRL
+	#define WINSOCK
+#endif
 
 /*
  * System includes
@@ -141,4 +142,4 @@ typedef unsigned short ushort;
 	#include <ctype.h>
 #endif
 
-#endif  /* PLATFORM_H */
+#endif  /* LIBSAM_PLATFORM_H */
diff --git a/apps/sam/c/inc/sam.h b/apps/sam/c/inc/sam.h
index 9e1b170b69e157a70445b9d310369557fe78899b..0c58b9fa70176270298e30db29953a719e185ed6 100644
--- a/apps/sam/c/inc/sam.h
+++ b/apps/sam/c/inc/sam.h
@@ -28,17 +28,19 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef SAM_H
-#define SAM_H
+#ifndef LIBSAM_SAM_H
+#define LIBSAM_SAM_H
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/*
- * Standard C99 includes - if your compiler doesn't have these, it's time to
- * upgrade
- */
-#include <stdbool.h>  // bool
+#ifdef NO_STDBOOL_H
+	typedef int bool;
+	#define true 0
+	#define false 1
+#else
+	#include <stdbool.h>
+#endif
 #include <stddef.h>  // size_t
 
 
@@ -70,12 +72,6 @@ extern "C" {
  * Some LibSAM variable types
  */
 
-#ifdef WINSOCK
-	typedef SOCKET socket_t;
-#else
-	typedef int socket_t;
-#endif
-
 typedef enum {SAM_STREAM, SAM_DGRAM, SAM_RAW} sam_conn_t;  /* SAM connection */
 
 typedef char sam_pubkey_t[SAM_PUBKEY_LEN];  /* base 64 public key */
@@ -88,7 +84,7 @@ typedef struct {
 typedef long sam_sid_t;  /* stream id number */
 
 typedef struct {
-	socket_t sock;  /* the socket used for communications with SAM */
+	int sock;  /* the socket used for communications with SAM */
 	bool connected;  /* whether the socket is connected */
 	sam_sid_t prev_id;  /* the last stream id number we used */
 } sam_sess_t;  /* a SAM session */
@@ -166,4 +162,4 @@ void		(*sam_rawback)(sam_sess_t *session, void *data, size_t size);
 #ifdef __cplusplus
 }
 #endif
-#endif  /* SAM_H */
+#endif  /* LIBSAM_SAM_H */
diff --git a/apps/sam/c/inc/snprintf.h b/apps/sam/c/inc/snprintf.h
index 9faf1961a0724b5fd96dabf06a235fc2bad9d920..7308695a2c3ecadbf5e3f03af6b1864c023a2dd4 100644
--- a/apps/sam/c/inc/snprintf.h
+++ b/apps/sam/c/inc/snprintf.h
@@ -33,8 +33,8 @@
  * snprintf.c)
  */
 
-#ifndef SNPRINTF_H
-#define SNPRINTF_H
+#ifndef LIBSAM_SNPRINTF_H
+#define LIBSAM_SNPRINTF_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -46,4 +46,4 @@ int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
 #ifdef __cplusplus
 }
 #endif
-#endif  /* SNPRINTF_H */
+#endif  /* LIBSAM_SNPRINTF_H */
diff --git a/apps/sam/c/inc/strl.h b/apps/sam/c/inc/strl.h
index fece64212d159c69f5072529ddca87382fd30f29..30c0622b34429d0bc28e58048aba0050a11445ae 100644
--- a/apps/sam/c/inc/strl.h
+++ b/apps/sam/c/inc/strl.h
@@ -32,8 +32,8 @@
  * Note: The strl.c file retains its original license (at the top of strl.c)
  */
 
-#ifndef STRL_H
-#define STRL_H
+#ifndef LIBSAM_STRL_H
+#define LIBSAM_STRL_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -44,4 +44,4 @@ extern size_t strlcpy(char *dst, const char *src, size_t siz);
 #ifdef __cplusplus
 }
 #endif
-#endif  /* STRL_H */
+#endif  /* LIBSAM_STRL_H */