$OpenBSD: patch-provider_libserver_ECDatabaseUtils_cpp,v 1.10 2016/04/20 18:38:41 robert Exp $
--- provider/libserver/ECDatabaseUtils.cpp.orig	Wed Apr 20 13:13:54 2016
+++ provider/libserver/ECDatabaseUtils.cpp	Wed Apr 20 19:54:13 2016
@@ -535,7 +535,9 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 	std::string	strData;
 	unsigned int type = atoi(lpRow[FIELD_NR_TYPE]);
 	unsigned int ulPropTag;
+#ifndef __OpenBSD__
 	locale_t loc = createlocale(LC_NUMERIC, "C");
+#endif
 
 	if((type & MVI_FLAG) == MVI_FLAG) {
 		// Treat MVI as normal property
@@ -567,7 +569,11 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 			goto exit;
 		}
 		lpPropVal->__union = SOAP_UNION_propValData_flt;
+#ifndef __OpenBSD__
 		lpPropVal->Value.flt = (float)strtod_l(lpRow[FIELD_NR_DOUBLE], NULL, loc);
+#else
+		lpPropVal->Value.flt = (float)strtod(lpRow[FIELD_NR_DOUBLE], NULL);
+#endif
 		break;
 	case PT_BOOLEAN:
 		if(lpRow[FIELD_NR_ULONG] == NULL) {
@@ -583,7 +589,11 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 			goto exit;
 		}
 		lpPropVal->__union = SOAP_UNION_propValData_dbl;
+#ifndef __OpenBSD__
 		lpPropVal->Value.dbl = strtod_l(lpRow[FIELD_NR_DOUBLE], NULL, loc);
+#else
+		lpPropVal->Value.dbl = strtod(lpRow[FIELD_NR_DOUBLE], NULL);
+#endif
 		break;
 	case PT_CURRENCY:
 		if(lpRow[FIELD_NR_HI] == NULL || lpRow[FIELD_NR_LO] == NULL) {
@@ -601,7 +611,11 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 			goto exit;
 		}
 		lpPropVal->__union = SOAP_UNION_propValData_dbl;
+#ifndef __OpenBSD__
 		lpPropVal->Value.dbl = strtod_l(lpRow[FIELD_NR_DOUBLE], NULL, loc);
+#else
+		lpPropVal->Value.dbl = strtod(lpRow[FIELD_NR_DOUBLE], NULL);
+#endif
 		break;
 	case PT_SYSTIME:
 		if(lpRow[FIELD_NR_HI] == NULL || lpRow[FIELD_NR_LO] == NULL) {
@@ -697,7 +711,11 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 		ulLastPos = 0;
 		for (i = 0; i < lpPropVal->Value.mvflt.__size; ++i) {
 			ParseMVProp(lpRow[FIELD_NR_DOUBLE], lpLen[FIELD_NR_DOUBLE], &ulLastPos, &strData);
+#ifndef __OpenBSD__
 			lpPropVal->Value.mvflt.__ptr[i] = (float)strtod_l(strData.c_str(), NULL, loc);
+#else
+			lpPropVal->Value.mvflt.__ptr[i] = (float)strtod(strData.c_str(), NULL);
+#endif
 		}
 		break;
 	case PT_MV_DOUBLE:
@@ -713,7 +731,11 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 		ulLastPos = 0;
 		for (i = 0; i < lpPropVal->Value.mvdbl.__size; ++i) {
 			ParseMVProp(lpRow[FIELD_NR_DOUBLE], lpLen[FIELD_NR_DOUBLE], &ulLastPos, &strData);
+#ifndef __OpenBSD__
 			lpPropVal->Value.mvdbl.__ptr[i] = strtod_l(strData.c_str(), NULL, loc);
+#else
+			lpPropVal->Value.mvdbl.__ptr[i] = strtod(strData.c_str(), NULL);
+#endif
 		}
 		break;
 	case PT_MV_CURRENCY:
@@ -795,7 +817,9 @@ ECRESULT CopyDatabasePropValToSOAPPropVal(struct soap 
 	lpPropVal->ulPropTag = ulPropTag;
 
 exit:
+#ifndef __OpenBSD__
 	freelocale(loc);
+#endif
 	return er;
 }
 
