diff options
Diffstat (limited to 'src/lib/libcrypto/buffer')
-rw-r--r-- | src/lib/libcrypto/buffer/Makefile.ssl | 44 | ||||
-rw-r--r-- | src/lib/libcrypto/buffer/buf_err.c | 123 | ||||
-rw-r--r-- | src/lib/libcrypto/buffer/buffer.c | 25 | ||||
-rw-r--r-- | src/lib/libcrypto/buffer/buffer.err | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/buffer/buffer.h | 21 |
5 files changed, 106 insertions, 116 deletions
diff --git a/src/lib/libcrypto/buffer/Makefile.ssl b/src/lib/libcrypto/buffer/Makefile.ssl index a5f150e523..b615c4c12d 100644 --- a/src/lib/libcrypto/buffer/Makefile.ssl +++ b/src/lib/libcrypto/buffer/Makefile.ssl | |||
@@ -7,23 +7,23 @@ TOP= ../.. | |||
7 | CC= cc | 7 | CC= cc |
8 | INCLUDES= -I.. -I../../include | 8 | INCLUDES= -I.. -I../../include |
9 | CFLAG=-g | 9 | CFLAG=-g |
10 | INSTALL_PREFIX= | ||
11 | OPENSSLDIR= /usr/local/ssl | ||
10 | INSTALLTOP=/usr/local/ssl | 12 | INSTALLTOP=/usr/local/ssl |
11 | MAKE= make -f Makefile.ssl | 13 | MAKE= make -f Makefile.ssl |
12 | MAKEDEPEND= makedepend -f Makefile.ssl | 14 | MAKEDEPEND= $(TOP)/util/domd $(TOP) |
13 | MAKEFILE= Makefile.ssl | 15 | MAKEFILE= Makefile.ssl |
14 | AR= ar r | 16 | AR= ar r |
15 | 17 | ||
16 | CFLAGS= $(INCLUDES) $(CFLAG) | 18 | CFLAGS= $(INCLUDES) $(CFLAG) |
17 | 19 | ||
18 | ERR=buffer | ||
19 | ERRC=buf_err | ||
20 | GENERAL=Makefile | 20 | GENERAL=Makefile |
21 | TEST= | 21 | TEST= |
22 | APPS= | 22 | APPS= |
23 | 23 | ||
24 | LIB=$(TOP)/libcrypto.a | 24 | LIB=$(TOP)/libcrypto.a |
25 | LIBSRC= buffer.c $(ERRC).c | 25 | LIBSRC= buffer.c buf_err.c |
26 | LIBOBJ= buffer.o $(ERRC).o | 26 | LIBOBJ= buffer.o buf_err.o |
27 | 27 | ||
28 | SRC= $(LIBSRC) | 28 | SRC= $(LIBSRC) |
29 | 29 | ||
@@ -39,24 +39,23 @@ all: lib | |||
39 | 39 | ||
40 | lib: $(LIBOBJ) | 40 | lib: $(LIBOBJ) |
41 | $(AR) $(LIB) $(LIBOBJ) | 41 | $(AR) $(LIB) $(LIBOBJ) |
42 | sh $(TOP)/util/ranlib.sh $(LIB) | 42 | $(RANLIB) $(LIB) |
43 | @touch lib | 43 | @touch lib |
44 | 44 | ||
45 | files: | 45 | files: |
46 | perl $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO | 46 | $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO |
47 | 47 | ||
48 | links: | 48 | links: |
49 | /bin/rm -f Makefile | 49 | @$(TOP)/util/point.sh Makefile.ssl Makefile |
50 | $(TOP)/util/point.sh Makefile.ssl Makefile; | 50 | @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) |
51 | $(TOP)/util/mklink.sh ../../include $(EXHEADER) | 51 | @$(PERL) $(TOP)/util/mklink.pl ../../test $(TEST) |
52 | $(TOP)/util/mklink.sh ../../test $(TEST) | 52 | @$(PERL) $(TOP)/util/mklink.pl ../../apps $(APPS) |
53 | $(TOP)/util/mklink.sh ../../apps $(APPS) | ||
54 | 53 | ||
55 | install: | 54 | install: |
56 | @for i in $(EXHEADER) ; \ | 55 | @for i in $(EXHEADER) ; \ |
57 | do \ | 56 | do \ |
58 | (cp $$i $(INSTALLTOP)/include/$$i; \ | 57 | (cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i; \ |
59 | chmod 644 $(INSTALLTOP)/include/$$i ); \ | 58 | chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl/$$i ); \ |
60 | done; | 59 | done; |
61 | 60 | ||
62 | tags: | 61 | tags: |
@@ -68,17 +67,20 @@ lint: | |||
68 | lint -DLINT $(INCLUDES) $(SRC)>fluff | 67 | lint -DLINT $(INCLUDES) $(SRC)>fluff |
69 | 68 | ||
70 | depend: | 69 | depend: |
71 | $(MAKEDEPEND) $(INCLUDES) $(PROGS) $(LIBSRC) | 70 | $(MAKEDEPEND) $(INCLUDES) $(DEPFLAG) $(PROGS) $(LIBSRC) |
72 | 71 | ||
73 | dclean: | 72 | dclean: |
74 | perl -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new | 73 | $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new |
75 | mv -f Makefile.new $(MAKEFILE) | 74 | mv -f Makefile.new $(MAKEFILE) |
76 | 75 | ||
77 | clean: | 76 | clean: |
78 | /bin/rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff | 77 | rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff |
79 | |||
80 | errors: | ||
81 | perl $(TOP)/util/err-ins.pl $(ERR).err $(ERR).h | ||
82 | perl ../err/err_genc.pl -s $(ERR).h $(ERRC).c | ||
83 | 78 | ||
84 | # DO NOT DELETE THIS LINE -- make depend depends on it. | 79 | # DO NOT DELETE THIS LINE -- make depend depends on it. |
80 | |||
81 | buf_err.o: ../../include/openssl/buffer.h ../../include/openssl/err.h | ||
82 | buffer.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h | ||
83 | buffer.o: ../../include/openssl/crypto.h ../../include/openssl/e_os.h | ||
84 | buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h | ||
85 | buffer.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h | ||
86 | buffer.o: ../../include/openssl/stack.h ../cryptlib.h | ||
diff --git a/src/lib/libcrypto/buffer/buf_err.c b/src/lib/libcrypto/buffer/buf_err.c index ff988852cc..7f9fd1f6c3 100644 --- a/src/lib/libcrypto/buffer/buf_err.c +++ b/src/lib/libcrypto/buffer/buf_err.c | |||
@@ -1,63 +1,65 @@ | |||
1 | /* lib/buf/buf_err.c */ | 1 | /* crypto/buffer/buf_err.c */ |
2 | /* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) | 2 | /* ==================================================================== |
3 | * All rights reserved. | 3 | * Copyright (c) 1999 The OpenSSL Project. All rights reserved. |
4 | * | 4 | * |
5 | * This package is an SSL implementation written | ||
6 | * by Eric Young (eay@cryptsoft.com). | ||
7 | * The implementation was written so as to conform with Netscapes SSL. | ||
8 | * | ||
9 | * This library is free for commercial and non-commercial use as long as | ||
10 | * the following conditions are aheared to. The following conditions | ||
11 | * apply to all code found in this distribution, be it the RC4, RSA, | ||
12 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation | ||
13 | * included with this distribution is covered by the same copyright terms | ||
14 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). | ||
15 | * | ||
16 | * Copyright remains Eric Young's, and as such any Copyright notices in | ||
17 | * the code are not to be removed. | ||
18 | * If this package is used in a product, Eric Young should be given attribution | ||
19 | * as the author of the parts of the library used. | ||
20 | * This can be in the form of a textual message at program startup or | ||
21 | * in documentation (online or textual) provided with the package. | ||
22 | * | ||
23 | * Redistribution and use in source and binary forms, with or without | 5 | * Redistribution and use in source and binary forms, with or without |
24 | * modification, are permitted provided that the following conditions | 6 | * modification, are permitted provided that the following conditions |
25 | * are met: | 7 | * are met: |
26 | * 1. Redistributions of source code must retain the copyright | 8 | * |
27 | * notice, this list of conditions and the following disclaimer. | 9 | * 1. Redistributions of source code must retain the above copyright |
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * | ||
28 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright |
29 | * notice, this list of conditions and the following disclaimer in the | 13 | * notice, this list of conditions and the following disclaimer in |
30 | * documentation and/or other materials provided with the distribution. | 14 | * the documentation and/or other materials provided with the |
31 | * 3. All advertising materials mentioning features or use of this software | 15 | * distribution. |
32 | * must display the following acknowledgement: | 16 | * |
33 | * "This product includes cryptographic software written by | 17 | * 3. All advertising materials mentioning features or use of this |
34 | * Eric Young (eay@cryptsoft.com)" | 18 | * software must display the following acknowledgment: |
35 | * The word 'cryptographic' can be left out if the rouines from the library | 19 | * "This product includes software developed by the OpenSSL Project |
36 | * being used are not cryptographic related :-). | 20 | * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" |
37 | * 4. If you include any Windows specific code (or a derivative thereof) from | 21 | * |
38 | * the apps directory (application code) you must include an acknowledgement: | 22 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to |
39 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" | 23 | * endorse or promote products derived from this software without |
40 | * | 24 | * prior written permission. For written permission, please contact |
41 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND | 25 | * openssl-core@OpenSSL.org. |
42 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 26 | * |
43 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 27 | * 5. Products derived from this software may not be called "OpenSSL" |
44 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | 28 | * nor may "OpenSSL" appear in their names without prior written |
45 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 29 | * permission of the OpenSSL Project. |
46 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | 30 | * |
47 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 31 | * 6. Redistributions of any form whatsoever must retain the following |
48 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | 32 | * acknowledgment: |
49 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 33 | * "This product includes software developed by the OpenSSL Project |
50 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 34 | * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" |
51 | * SUCH DAMAGE. | 35 | * |
52 | * | 36 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY |
53 | * The licence and distribution terms for any publically available version or | 37 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
54 | * derivative of this code cannot be changed. i.e. this code cannot simply be | 38 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
55 | * copied and put under another distribution licence | 39 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR |
56 | * [including the GNU Public Licence.] | 40 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
41 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
42 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
43 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
44 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | ||
45 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
46 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
47 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
48 | * ==================================================================== | ||
49 | * | ||
50 | * This product includes cryptographic software written by Eric Young | ||
51 | * (eay@cryptsoft.com). This product includes software written by Tim | ||
52 | * Hudson (tjh@cryptsoft.com). | ||
53 | * | ||
54 | */ | ||
55 | |||
56 | /* NOTE: this file was auto generated by the mkerr.pl script: any changes | ||
57 | * made to it will be overwritten when the script next updates this file. | ||
57 | */ | 58 | */ |
59 | |||
58 | #include <stdio.h> | 60 | #include <stdio.h> |
59 | #include "err.h" | 61 | #include <openssl/err.h> |
60 | #include "buffer.h" | 62 | #include <openssl/buffer.h> |
61 | 63 | ||
62 | /* BEGIN ERROR CODES */ | 64 | /* BEGIN ERROR CODES */ |
63 | #ifndef NO_ERR | 65 | #ifndef NO_ERR |
@@ -66,21 +68,26 @@ static ERR_STRING_DATA BUF_str_functs[]= | |||
66 | {ERR_PACK(0,BUF_F_BUF_MEM_GROW,0), "BUF_MEM_grow"}, | 68 | {ERR_PACK(0,BUF_F_BUF_MEM_GROW,0), "BUF_MEM_grow"}, |
67 | {ERR_PACK(0,BUF_F_BUF_MEM_NEW,0), "BUF_MEM_new"}, | 69 | {ERR_PACK(0,BUF_F_BUF_MEM_NEW,0), "BUF_MEM_new"}, |
68 | {ERR_PACK(0,BUF_F_BUF_STRDUP,0), "BUF_strdup"}, | 70 | {ERR_PACK(0,BUF_F_BUF_STRDUP,0), "BUF_strdup"}, |
69 | {ERR_PACK(0,BUF_F_PXYCLNT_READ,0), "PXYCLNT_READ"}, | 71 | {0,NULL} |
70 | {0,NULL}, | 72 | }; |
73 | |||
74 | static ERR_STRING_DATA BUF_str_reasons[]= | ||
75 | { | ||
76 | {0,NULL} | ||
71 | }; | 77 | }; |
72 | 78 | ||
73 | #endif | 79 | #endif |
74 | 80 | ||
75 | void ERR_load_BUF_strings() | 81 | void ERR_load_BUF_strings(void) |
76 | { | 82 | { |
77 | static int init=1; | 83 | static int init=1; |
78 | 84 | ||
79 | if (init); | 85 | if (init) |
80 | {; | 86 | { |
81 | init=0; | 87 | init=0; |
82 | #ifndef NO_ERR | 88 | #ifndef NO_ERR |
83 | ERR_load_strings(ERR_LIB_BUF,BUF_str_functs); | 89 | ERR_load_strings(ERR_LIB_BUF,BUF_str_functs); |
90 | ERR_load_strings(ERR_LIB_BUF,BUF_str_reasons); | ||
84 | #endif | 91 | #endif |
85 | 92 | ||
86 | } | 93 | } |
diff --git a/src/lib/libcrypto/buffer/buffer.c b/src/lib/libcrypto/buffer/buffer.c index 7e8af9e2fa..c3a108ea52 100644 --- a/src/lib/libcrypto/buffer/buffer.c +++ b/src/lib/libcrypto/buffer/buffer.c | |||
@@ -58,13 +58,13 @@ | |||
58 | 58 | ||
59 | #include <stdio.h> | 59 | #include <stdio.h> |
60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
61 | #include "buffer.h" | 61 | #include <openssl/buffer.h> |
62 | 62 | ||
63 | BUF_MEM *BUF_MEM_new() | 63 | BUF_MEM *BUF_MEM_new(void) |
64 | { | 64 | { |
65 | BUF_MEM *ret; | 65 | BUF_MEM *ret; |
66 | 66 | ||
67 | ret=(BUF_MEM *)Malloc(sizeof(BUF_MEM)); | 67 | ret=Malloc(sizeof(BUF_MEM)); |
68 | if (ret == NULL) | 68 | if (ret == NULL) |
69 | { | 69 | { |
70 | BUFerr(BUF_F_BUF_MEM_NEW,ERR_R_MALLOC_FAILURE); | 70 | BUFerr(BUF_F_BUF_MEM_NEW,ERR_R_MALLOC_FAILURE); |
@@ -76,9 +76,11 @@ BUF_MEM *BUF_MEM_new() | |||
76 | return(ret); | 76 | return(ret); |
77 | } | 77 | } |
78 | 78 | ||
79 | void BUF_MEM_free(a) | 79 | void BUF_MEM_free(BUF_MEM *a) |
80 | BUF_MEM *a; | ||
81 | { | 80 | { |
81 | if(a == NULL) | ||
82 | return; | ||
83 | |||
82 | if (a->data != NULL) | 84 | if (a->data != NULL) |
83 | { | 85 | { |
84 | memset(a->data,0,(unsigned int)a->max); | 86 | memset(a->data,0,(unsigned int)a->max); |
@@ -87,9 +89,7 @@ BUF_MEM *a; | |||
87 | Free(a); | 89 | Free(a); |
88 | } | 90 | } |
89 | 91 | ||
90 | int BUF_MEM_grow(str, len) | 92 | int BUF_MEM_grow(BUF_MEM *str, int len) |
91 | BUF_MEM *str; | ||
92 | int len; | ||
93 | { | 93 | { |
94 | char *ret; | 94 | char *ret; |
95 | unsigned int n; | 95 | unsigned int n; |
@@ -101,15 +101,15 @@ int len; | |||
101 | } | 101 | } |
102 | if (str->max >= len) | 102 | if (str->max >= len) |
103 | { | 103 | { |
104 | memset(&(str->data[str->length]),0,len-str->length); | 104 | memset(&str->data[str->length],0,len-str->length); |
105 | str->length=len; | 105 | str->length=len; |
106 | return(len); | 106 | return(len); |
107 | } | 107 | } |
108 | n=(len+3)/3*4; | 108 | n=(len+3)/3*4; |
109 | if (str->data == NULL) | 109 | if (str->data == NULL) |
110 | ret=(char *)Malloc(n); | 110 | ret=Malloc(n); |
111 | else | 111 | else |
112 | ret=(char *)Realloc(str->data,n); | 112 | ret=Realloc(str->data,n); |
113 | if (ret == NULL) | 113 | if (ret == NULL) |
114 | { | 114 | { |
115 | BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE); | 115 | BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE); |
@@ -124,8 +124,7 @@ int len; | |||
124 | return(len); | 124 | return(len); |
125 | } | 125 | } |
126 | 126 | ||
127 | char *BUF_strdup(str) | 127 | char *BUF_strdup(const char *str) |
128 | char *str; | ||
129 | { | 128 | { |
130 | char *ret; | 129 | char *ret; |
131 | int n; | 130 | int n; |
diff --git a/src/lib/libcrypto/buffer/buffer.err b/src/lib/libcrypto/buffer/buffer.err deleted file mode 100644 index 62b775e637..0000000000 --- a/src/lib/libcrypto/buffer/buffer.err +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | /* Error codes for the BUF functions. */ | ||
2 | |||
3 | /* Function codes. */ | ||
4 | #define BUF_F_BUF_MEM_GROW 100 | ||
5 | #define BUF_F_BUF_MEM_NEW 101 | ||
6 | #define BUF_F_BUF_STRDUP 102 | ||
7 | #define BUF_F_PXYCLNT_READ 103 | ||
8 | |||
9 | /* Reason codes. */ | ||
diff --git a/src/lib/libcrypto/buffer/buffer.h b/src/lib/libcrypto/buffer/buffer.h index 417548c04a..bff26bf391 100644 --- a/src/lib/libcrypto/buffer/buffer.h +++ b/src/lib/libcrypto/buffer/buffer.h | |||
@@ -70,36 +70,27 @@ typedef struct buf_mem_st | |||
70 | int max; /* size of buffer */ | 70 | int max; /* size of buffer */ |
71 | } BUF_MEM; | 71 | } BUF_MEM; |
72 | 72 | ||
73 | #ifndef NOPROTO | ||
74 | BUF_MEM *BUF_MEM_new(void); | 73 | BUF_MEM *BUF_MEM_new(void); |
75 | void BUF_MEM_free(BUF_MEM *a); | 74 | void BUF_MEM_free(BUF_MEM *a); |
76 | int BUF_MEM_grow(BUF_MEM *str, int len); | 75 | int BUF_MEM_grow(BUF_MEM *str, int len); |
77 | char * BUF_strdup(char *str); | 76 | char * BUF_strdup(const char *str); |
78 | 77 | ||
79 | void ERR_load_BUF_strings(void ); | 78 | void ERR_load_BUF_strings(void ); |
80 | 79 | ||
81 | #else | ||
82 | |||
83 | BUF_MEM *BUF_MEM_new(); | ||
84 | void BUF_MEM_free(); | ||
85 | int BUF_MEM_grow(); | ||
86 | char * BUF_strdup(); | ||
87 | |||
88 | void ERR_load_BUF_strings(); | ||
89 | |||
90 | #endif | ||
91 | |||
92 | /* BEGIN ERROR CODES */ | 80 | /* BEGIN ERROR CODES */ |
81 | /* The following lines are auto generated by the script mkerr.pl. Any changes | ||
82 | * made after this point may be overwritten when the script is next run. | ||
83 | */ | ||
84 | |||
93 | /* Error codes for the BUF functions. */ | 85 | /* Error codes for the BUF functions. */ |
94 | 86 | ||
95 | /* Function codes. */ | 87 | /* Function codes. */ |
96 | #define BUF_F_BUF_MEM_GROW 100 | 88 | #define BUF_F_BUF_MEM_GROW 100 |
97 | #define BUF_F_BUF_MEM_NEW 101 | 89 | #define BUF_F_BUF_MEM_NEW 101 |
98 | #define BUF_F_BUF_STRDUP 102 | 90 | #define BUF_F_BUF_STRDUP 102 |
99 | #define BUF_F_PXYCLNT_READ 103 | ||
100 | 91 | ||
101 | /* Reason codes. */ | 92 | /* Reason codes. */ |
102 | 93 | ||
103 | #ifdef __cplusplus | 94 | #ifdef __cplusplus |
104 | } | 95 | } |
105 | #endif | 96 | #endif |