| 
					
				 | 
			
			
				@@ -0,0 +1,39 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Copyright (c) 2003-2004, Roger Dingledine 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Copyright (c) 2007-2018, The Tor Project, Inc. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* See LICENSE for licensing information */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifndef TOR_COMPAT_STRING_H 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define TOR_COMPAT_STRING_H 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "orconfig.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "lib/cc/compat_compiler.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <stddef.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* ===== String compatibility */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifdef _WIN32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* Windows names string functions differently from most other platforms. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define strncasecmp _strnicmp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define strcasecmp _stricmp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if defined __APPLE__ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/* On OSX 10.9 and later, the overlap-checking code for strlcat would 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * appear to have a severe bug that can sometimes cause aborts in Tor. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Instead, use the non-checking variants.  This is sad. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * See https://trac.torproject.org/projects/tor/ticket/15205 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#undef strlcat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#undef strlcpy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif /* defined __APPLE__ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifndef HAVE_STRLCAT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+size_t strlcat(char *dst, const char *src, size_t siz) ATTR_NONNULL((1,2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#ifndef HAVE_STRLCPY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+size_t strlcpy(char *dst, const char *src, size_t siz) ATTR_NONNULL((1,2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 |