prepare v1.1.4
[awesomized/libmemcached] / src / libmemcachedprotocol / cache.c
index 1de8b0a6cf5614280204be5e7f3801c9836ed351..06cfcbf0430ef04492d1f43e3837fe7d91c9dc47 100644 (file)
@@ -1,6 +1,6 @@
 /*
     +--------------------------------------------------------------------+
-    | libmemcached - C/C++ Client Library for memcached                  |
+    | libmemcached-awesome - C/C++ Client Library for memcached          |
     +--------------------------------------------------------------------+
     | Redistribution and use in source and binary forms, with or without |
     | modification, are permitted under the terms of the BSD license.    |
@@ -9,7 +9,7 @@
     | the terms online at: https://opensource.org/licenses/BSD-3-Clause  |
     +--------------------------------------------------------------------+
     | Copyright (c) 2006-2014 Brian Aker   https://datadifferential.com/ |
-    | Copyright (c) 2020 Michael Wallner   <mike@php.net>                |
+    | Copyright (c) 2020-2021 Michael Wallner        https://awesome.co/ |
     +--------------------------------------------------------------------+
 */
 
 
 #ifndef HAVE_UMEM_H
 
+#  ifdef _MSC_VER
+typedef SECURITY_ATTRIBUTES pthread_mutexattr_t;
+
+static inline int pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *a) {
+    *m = CreateMutexA(a, FALSE, NULL);
+    return !*m;
+}
+static inline int pthread_mutex_destroy(pthread_mutex_t *m) {
+    return !CloseHandle(*m);
+}
+static inline int pthread_mutex_lock(pthread_mutex_t *m) {
+    if (WaitForSingleObject(*m, INFINITE)) {
+        return 0;
+    }
+    return GetLastError();
+}
+static inline int pthread_mutex_unlock(pthread_mutex_t *m) {
+    return !ReleaseMutex(*m);
+}
+#  endif
+
 #  ifndef NDEBUG
 #    include <signal.h>