Updated.
[yaz-moved-to-github.git] / odr / ber_null.c
1 /*
2  * Copyright (c) 1995, Index Data
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: ber_null.c,v $
7  * Revision 1.8  1995-09-29 17:12:18  quinn
8  * Smallish
9  *
10  * Revision 1.7  1995/09/27  15:02:55  quinn
11  * Modified function heads & prototypes.
12  *
13  * Revision 1.6  1995/05/22  11:32:01  quinn
14  * Fixing Interface to odr_null.
15  *
16  * Revision 1.5  1995/05/16  08:50:46  quinn
17  * License, documentation, and memory fixes
18  *
19  * Revision 1.4  1995/04/18  08:15:16  quinn
20  * Added dynamic memory allocation on encoding (whew). Code is now somewhat
21  * neater. We'll make the same change for decoding one day.
22  *
23  * Revision 1.3  1995/03/08  12:12:09  quinn
24  * Added better error checking.
25  *
26  * Revision 1.2  1995/02/09  15:51:46  quinn
27  * Works better now.
28  *
29  * Revision 1.1  1995/02/02  16:21:52  quinn
30  * First kick.
31  *
32  */
33
34 #include <odr.h>
35
36 /*
37  * BER-en/decoder for NULL type.
38  */
39 int ber_null(ODR o)
40 {
41     switch (o->direction)
42     {
43         case ODR_ENCODE:
44             if (odr_putc(o, 0X00) < 0)
45                 return 0;
46 #ifdef ODR_DEBUG
47             fprintf(stderr, "[NULL]\n");
48 #endif
49             return 1;
50         case ODR_DECODE:
51             if (*(o->bp++) != 0X00)
52             {
53                 o->error = OPROTO;
54                 return 0;
55             }
56             o->left--;
57 #ifdef ODR_DEBUG
58             fprintf(stderr, "[NULL]\n");
59 #endif
60             return 1;
61         case ODR_PRINT: return 1;
62         default: o->error = OOTHER; return 0;
63     }
64 }