note: if/when OpenBSD gets LC_NUMERIC locale support, the code should be
revisited to use threads locale functions (see uselocale(3)), because a
mutex is not enough to prevent unsupported usage of non thread-safe 
locale functions from dumping core!

Index: src/framework/mlt_property.c
--- src/framework/mlt_property.c.orig
+++ src/framework/mlt_property.c
@@ -320,7 +320,7 @@ static int time_clock_to_frames( mlt_property self, co
 	s = copy;
 	pos = strrchr( s, ':' );
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 	char *orig_localename = NULL;
 	if ( locale )
 	{
@@ -336,7 +336,7 @@ static int time_clock_to_frames( mlt_property self, co
 #endif
 
 	if ( pos ) {
-#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L)
+#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale )
 			seconds = strtod_l( pos + 1, NULL, locale );
 		else
@@ -354,7 +354,7 @@ static int time_clock_to_frames( mlt_property self, co
 		}
 	}
 	else {
-#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L)
+#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale )
 			seconds = strtod_l( s, NULL, locale );
 		else
@@ -362,7 +362,7 @@ static int time_clock_to_frames( mlt_property self, co
 			seconds = strtod( s, NULL );
 	}
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 	if ( locale ) {
 		// Restore the current locale
 		setlocale( LC_NUMERIC, orig_localename );
@@ -539,11 +539,11 @@ static double mlt_property_atof( mlt_property self, do
 		char *end = NULL;
 		double result;
 
-#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L)
+#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale )
 			result = strtod_l( value, &end, locale );
 		else
-#elif !defined(_WIN32)
+#elif !defined(_WIN32) && !defined(__OpenBSD__)
 		char *orig_localename = NULL;
 		if ( locale ) {
 			// Protect damaging the global locale from a temporary locale on another thread.
@@ -561,7 +561,7 @@ static double mlt_property_atof( mlt_property self, do
 		if ( end && end[0] == '%' )
 			result /= 100.0;
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale ) {
 			// Restore the current locale
 			setlocale( LC_NUMERIC, orig_localename );
@@ -804,7 +804,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
 	}
 	else if ( ! ( self->types & mlt_prop_string ) )
 	{
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__OpenBSD__)
 		// TODO: when glibc gets sprintf_l, start using it! For now, hack on setlocale.
 		// Save the current locale
 #if defined(__APPLE__)
@@ -850,7 +850,7 @@ char *mlt_property_get_string_l_tf( mlt_property self,
 			self->types |= mlt_prop_string;
 			self->prop_string = self->serialiser( self->data, self->length );
 		}
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__OpenBSD__)
 		// Restore the current locale
 		setlocale( LC_NUMERIC, orig_localename );
 		free( orig_localename );
@@ -1062,7 +1062,7 @@ static void time_clock_from_frames( int frames, double
 
 char *mlt_property_get_time( mlt_property self, mlt_time_format format, double fps, locale_t locale )
 {
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__OpenBSD__)
 	char *orig_localename = NULL;
 #endif
 	int frames = 0;
@@ -1075,7 +1075,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
 	if ( format == mlt_time_frames )
 		return mlt_property_get_string_l( self, locale );
 
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__OpenBSD__)
 	// Use the specified locale
 	if ( locale )
 	{
@@ -1134,7 +1134,7 @@ char *mlt_property_get_time( mlt_property self, mlt_ti
 	else // Use smpte drop frame by default
 		time_smpte_from_frames( frames, fps, self->prop_string, 1 );
 
-#if !defined(_WIN32)
+#if !defined(_WIN32) && !defined(__OpenBSD__)
 	// Restore the current locale
 	if ( locale )
 	{
@@ -1174,11 +1174,11 @@ static int is_property_numeric( mlt_property self, loc
 	{
 		char *p = NULL;
 
-#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L)
+#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale )
 			strtod_l( self->prop_string, &p, locale );
 		else
-#elif !defined(_WIN32)
+#elif !defined(_WIN32) && !defined(__OpenBSD__)
 		char *orig_localename = NULL;
 		if ( locale ) {
 			// Protect damaging the global locale from a temporary locale on another thread.
@@ -1194,7 +1194,7 @@ static int is_property_numeric( mlt_property self, loc
 
 		strtod( self->prop_string, &p );
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale ) {
 			// Restore the current locale
 			setlocale( LC_NUMERIC, orig_localename );
@@ -1688,7 +1688,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
 		char *p = NULL;
 		int count = 0;
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		char *orig_localename = NULL;
 		if ( locale ) {
 			// Protect damaging the global locale from a temporary locale on another thread.
@@ -1705,7 +1705,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
 		while ( *value )
 		{
 			double temp;
-#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L)
+#if defined(__GLIBC__) || defined(__APPLE__) || defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 			if ( locale )
 				temp = strtod_l( value, &p, locale );
             else
@@ -1740,7 +1740,7 @@ mlt_rect mlt_property_get_rect( mlt_property self, loc
 			count ++;
 		}
 
-#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L)
+#if !defined(__GLIBC__) && !defined(__APPLE__) && !defined(_WIN32) && !defined(HAVE_STRTOD_L) && !defined(__OpenBSD__)
 		if ( locale ) {
 			// Restore the current locale
 			setlocale( LC_NUMERIC, orig_localename );
