1 /** 2 * @file winber.h 3 * Copyright 2012, 2013 MinGW.org project 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 */ 24 /* Written by Filip Navara <xnavara@volny.cz> */ 25 #ifndef _WINBER_H 26 #define _WINBER_H 27 #pragma GCC system_header 28 #include <_mingw.h> 29 30 /* 31 * LDAP Basic Encoding Rules API 32 * References: 33 * The C LDAP Application Program Interface 34 * http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt 35 * 36 * Lightweight Directory Access Protocol Reference 37 * http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp 38 */ 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 #ifndef WINBERAPI 45 #define WINBERAPI DECLSPEC_IMPORT 46 #endif 47 48 typedef struct berelement BerElement; 49 typedef ULONG ber_len_t; 50 #include <pshpack4.h> 51 typedef struct berval { 52 ber_len_t bv_len; 53 char *bv_val; 54 } BerValue, LDAP_BERVAL, *PLDAP_BERVAL, BERVAL, *PBERVAL; 55 #include <poppack.h> 56 57 typedef ULONG ber_tag_t; 58 typedef INT ber_int_t; 59 typedef UINT ber_uint_t; 60 typedef INT ber_slen_t; 61 62 #define LBER_ERROR ((ber_tag_t)-1) 63 #define LBER_DEFAULT ((ber_tag_t)-1) 64 #define LBER_USE_DER 0x01 65 66 WINBERAPI BerElement *ber_init(const BerValue*); 67 WINBERAPI int ber_printf(BerElement*,const char*,...); 68 WINBERAPI int ber_flatten(BerElement*,BerValue**); 69 WINBERAPI ber_tag_t ber_scanf(BerElement*,const char*,...); 70 WINBERAPI ber_tag_t ber_peek_tag(BerElement*,ber_len_t*); 71 WINBERAPI ber_tag_t ber_skip_tag(BerElement*,ber_len_t*); 72 WINBERAPI ber_tag_t ber_first_element(BerElement*,ber_len_t*,char**); 73 WINBERAPI ber_tag_t ber_next_element(BerElement*,ber_len_t*,char*); 74 WINBERAPI void ber_bvfree(BerValue*); 75 WINBERAPI void ber_bvecfree(BerValue**); 76 WINBERAPI void ber_free(BerElement*,int); 77 WINBERAPI BerValue *ber_bvdup(BerValue*); 78 WINBERAPI BerElement *ber_alloc_t(int); 79 80 #ifdef __cplusplus 81 } 82 #endif 83 84 #endif /* _WINBER_H */ 85