Index: third_party/bson_c/src/encoding.c |
diff --git a/third_party/bson_c/src/encoding.c b/third_party/bson_c/src/encoding.c |
deleted file mode 100644 |
index 8d2da1502f1323342e207787344ba6a6936cb461..0000000000000000000000000000000000000000 |
--- a/third_party/bson_c/src/encoding.c |
+++ /dev/null |
@@ -1,148 +0,0 @@ |
-/* |
- * Copyright 2009-2011 10gen, Inc. |
- * |
- * Licensed under the Apache License, Version 2.0 (the "License"); |
- * you may not use this file except in compliance with the License. |
- * You may obtain a copy of the License at |
- * |
- * http://www.apache.org/licenses/LICENSE-2.0 |
- * |
- * Unless required by applicable law or agreed to in writing, software |
- * distributed under the License is distributed on an "AS IS" BASIS, |
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
- * See the License for the specific language governing permissions and |
- * limitations under the License. |
- */ |
- |
-/* |
- * Portions Copyright 2001 Unicode, Inc. |
- * |
- * Disclaimer |
- * |
- * This source code is provided as is by Unicode, Inc. No claims are |
- * made as to fitness for any particular purpose. No warranties of any |
- * kind are expressed or implied. The recipient agrees to determine |
- * applicability of information provided. If this file has been |
- * purchased on magnetic or optical media from Unicode, Inc., the |
- * sole remedy for any claim will be exchange of defective media |
- * within 90 days of receipt. |
- * |
- * Limitations on Rights to Redistribute This Code |
- * |
- * Unicode, Inc. hereby grants the right to freely use the information |
- * supplied in this file in the creation of products supporting the |
- * Unicode Standard, and to make copies of this file in any form |
- * for internal or external distribution as long as this notice |
- * remains attached. |
- */ |
- |
- |
-#include "bson.h" |
-#include "encoding.h" |
- |
-/* |
- * Index into the table below with the first byte of a UTF-8 sequence to |
- * get the number of trailing bytes that are supposed to follow it. |
- */ |
-static const char trailingBytesForUTF8[256] = { |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
- 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 |
-}; |
- |
-/* --------------------------------------------------------------------- */ |
- |
-/* |
- * Utility routine to tell whether a sequence of bytes is legal UTF-8. |
- * This must be called with the length pre-determined by the first byte. |
- * The length can be set by: |
- * length = trailingBytesForUTF8[*source]+1; |
- * and the sequence is illegal right away if there aren't that many bytes |
- * available. |
- * If presented with a length > 4, this returns 0. The Unicode |
- * definition of UTF-8 goes up to 4-byte sequences. |
- */ |
-static int isLegalUTF8( const unsigned char *source, int length ) { |
- unsigned char a; |
- const unsigned char *srcptr = source + length; |
- switch ( length ) { |
- default: |
- return 0; |
- /* Everything else falls through when "true"... */ |
- case 4: |
- if ( ( a = ( *--srcptr ) ) < 0x80 || a > 0xBF ) return 0; |
- case 3: |
- if ( ( a = ( *--srcptr ) ) < 0x80 || a > 0xBF ) return 0; |
- case 2: |
- if ( ( a = ( *--srcptr ) ) > 0xBF ) return 0; |
- switch ( *source ) { |
- /* no fall-through in this inner switch */ |
- case 0xE0: |
- if ( a < 0xA0 ) return 0; |
- break; |
- case 0xF0: |
- if ( a < 0x90 ) return 0; |
- break; |
- case 0xF4: |
- if ( a > 0x8F ) return 0; |
- break; |
- default: |
- if ( a < 0x80 ) return 0; |
- } |
- case 1: |
- if ( *source >= 0x80 && *source < 0xC2 ) return 0; |
- if ( *source > 0xF4 ) return 0; |
- } |
- return 1; |
-} |
- |
-static int bson_validate_string( bson *b, const unsigned char *string, |
- const int length, const char check_utf8, const char check_dot, |
- const char check_dollar ) { |
- |
- int position = 0; |
- int sequence_length = 1; |
- |
- if( check_dollar && string[0] == '$' ) { |
- b->err |= BSON_FIELD_INIT_DOLLAR; |
- } |
- |
- while ( position < length ) { |
- if ( check_dot && *( string + position ) == '.' ) { |
- b->err |= BSON_FIELD_HAS_DOT; |
- } |
- |
- if ( check_utf8 ) { |
- sequence_length = trailingBytesForUTF8[*( string + position )] + 1; |
- if ( ( position + sequence_length ) > length ) { |
- b->err |= BSON_NOT_UTF8; |
- return BSON_ERROR; |
- } |
- if ( !isLegalUTF8( string + position, sequence_length ) ) { |
- b->err |= BSON_NOT_UTF8; |
- return BSON_ERROR; |
- } |
- } |
- position += sequence_length; |
- } |
- |
- return BSON_OK; |
-} |
- |
- |
-int bson_check_string( bson *b, const char *string, |
- const int length ) { |
- |
- return bson_validate_string( b, ( const unsigned char * )string, length, 1, 0, 0 ); |
-} |
- |
-int bson_check_field_name( bson *b, const char *string, |
- const int length ) { |
- |
- return bson_validate_string( b, ( const unsigned char * )string, length, 1, 1, 1 ); |
-} |