3 * Copyright 1998,1999 The OpenLDAP Foundation, Redwood City, California, USA
6 * Redistribution and use in source and binary forms are permitted only
7 * as authorized by the OpenLDAP Public License. A copy of this
8 * license is available at http://www.OpenLDAP.org/license.html or
9 * in file LICENSE in the top-level directory of the distribution.
12 * Copyright (c) 1996 Regents of the University of Michigan.
13 * All rights reserved.
15 * Redistribution and use in source and binary forms are permitted
16 * provided that this notice is preserved and that due credit is given
17 * to the University of Michigan at Ann Arbor. The name of the University
18 * may not be used to endorse or promote products derived from this
19 * software without specific prior written permission. This software
20 * is provided ``as is'' without express or implied warranty.
26 #include <ldap_cdefs.h>
30 extern int ldif_debug;
32 #define LDIF_LINE_WIDTH 76 /* maximum length of LDIF lines */
35 * Macro to calculate maximum number of bytes that the base64 equivalent
36 * of an item that is "len" bytes long will take up. Base64 encoding
37 * uses one byte for every six bits in the value plus up to two pad bytes.
39 #define LDIF_BASE64_LEN(len) (((len) * 4 / 3 ) + 3)
42 * Macro to calculate maximum size that an LDIF-encoded type (length
43 * tlen) and value (length vlen) will take up: room for type + ":: " +
44 * first newline + base64 value + continued lines. Each continued line
45 * needs room for a newline and a leading space character.
47 #define LDIF_SIZE_NEEDED(nlen,vlen) \
48 ((nlen) + 4 + LDIF_BASE64_LEN(vlen) \
49 + ((LDIF_BASE64_LEN(vlen) + (nlen) + 3) / LDIF_LINE_WIDTH * 2 ))
54 # define LDAP_F_PRE extern __declspec(LIBLDIF_DECL)
56 # define LDAP_F_PRE extern
61 ldif_parse_line LDAP_P((
62 LDAP_CONST char *line,
68 ldif_fetch_url LDAP_P((
69 LDAP_CONST char *line,
74 ldif_getline LDAP_P(( char **next ));
77 ldif_read_record LDAP_P((
84 #define LDIF_PUT_NOVALUE 0x0000 /* no value */
85 #define LDIF_PUT_VALUE 0x0001 /* value w/ auto detection */
86 #define LDIF_PUT_TEXT 0x0002 /* assume text */
87 #define LDIF_PUT_BINARY 0x0004 /* assume binary (convert to base64) */
88 #define LDIF_PUT_B64 0x0008 /* pre-converted base64 value */
90 #define LDIF_PUT_COMMENT 0x0010 /* comment */
91 #define LDIF_PUT_URL 0x0020 /* url */
92 #define LDIF_PUT_SEP 0x0040 /* separator */
98 LDAP_CONST char *name,
105 LDAP_CONST char *name,
106 LDAP_CONST char *val,
110 ldif_is_not_printable LDAP_P((
111 LDAP_CONST char *val,