/usr/include/snacc/c/asn-len.h is in libsnacc-dev 1.3bbn-11ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | /*
* asn_len.h
*
* Warning: many of these routines are MACROs for performance reasons
* - be carful where you use them. Don't use more than one per
* assignment statement -
* (eg itemLen += BEncEoc (b) + BEncFoo (b) ..; this
* will break the code)
*
* MS 92
* Copyright (C) 1992 Michael Sample and the University of British Columbia
*
* This library is free software; you can redistribute it and/or
* modify it provided that this copyright/license information is retained
* in original form.
*
* If you modify this file, you must clearly indicate your changes.
*
* This source code is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Header: /usr/app/odstb/CVS/snacc/c-lib/inc/asn-len.h,v 1.2 1995/07/27 08:42:40 rj Exp $
* $Log: asn-len.h,v $
* Revision 1.2 1995/07/27 08:42:40 rj
* cpp macro TBL changed to TTBL since some type table code uses TBL as a type name.
*
* changed `_' to `-' in file names.
*
* Revision 1.1 1994/08/28 09:21:29 rj
* first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog.
*
*/
#ifndef _asn_len_h_
#define _asn_len_h_
typedef unsigned long int AsnLen;
/* max unsigned value - used for internal rep of indef len */
#define INDEFINITE_LEN ~0L
#ifdef USE_INDEF_LEN
#define BEncEocIfNec( b) BEncEoc (b)
/*
* include len for EOC (2 must be first due to BEncIndefLen
* - ack! ugly macros!)
*/
#define BEncConsLen( b, len) 2 + BEncIndefLen(b)
#else /* use definite length - faster?/smaller encodings */
/* do nothing since only using definite lens */
#define BEncEocIfNec( b)
#define BEncConsLen( b, len) BEncDefLen(b, len)
#endif
/*
* writes indefinite length byte to buffer. 'returns' encoded len (1)
*/
#define BEncIndefLen( b)\
1;\
BufPutByteRvs (b, 0x80);
#define BEncEoc( b)\
2;\
BufPutByteRvs (b, 0);\
BufPutByteRvs (b, 0);
/*
* use if you know the encoded length will be 0 >= len <= 127
* Eg for booleans, nulls, any resonable integers and reals
*
* NOTE: this particular Encode Routine does NOT return the length
* encoded (1).
*/
#define BEncDefLenTo127( b, len)\
BufPutByteRvs (b, (unsigned char) len)
#define BDEC_2ND_EOC_OCTET( b, bytesDecoded, env)\
{\
if ((BufGetByte (b) != 0) || BufReadError (b)) {\
Asn1Error ("ERROR - second octet of EOC not zero\n");\
longjmp (env, -28);}\
(*bytesDecoded)++;\
}
AsnLen BEncDefLen PROTO ((BUF_TYPE b, AsnLen len));
AsnLen BDecLen PROTO ((BUF_TYPE b, AsnLen *bytesDecoded, ENV_TYPE env));
/*
AsnLen BEncEoc PROTO ((BUF_TYPE b));
*/
void BDecEoc PROTO ((BUF_TYPE b, AsnLen *bytesDecoded, ENV_TYPE env));
#if TTBL
int PeekEoc PROTO ((BUF_TYPE b));
#endif
#endif /* conditional include */
|