This file is indexed.

/usr/include/postgresql/ecpgtype.h is in libecpg-dev 9.6.11-0+deb9u1.

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
/*
 * This file implements a data structure that is built and maintained by the
 * preprocessor.
 *
 * All types that can be handled for host variable declarations has to
 * be handled eventually.
 *
 * src/interfaces/ecpg/include/ecpgtype.h
 */

/*
 * Here are all the types that we are to handle. Note that it is the type
 * that is registered and that has nothing whatsoever to do with the storage
 * class.
 *
 * Simple types
 * integers: char, short, int, long (signed and unsigned)
 * floats: float, double
 *
 * Complex types:
 * VARCHAR, VARCHAR2 - Strings with length (maxlen is given in the declaration)
 * Arrays of simple types and of VARCHAR, VARCHAR2 (size given in declaration)
 * Records build of simple types, arrays and other structs.
 *
 * Complicating things:
 * typedefs and struct names!
 *
 * Conclusion:
 * This is a typically recursive definition. A structure of typed list elements
 * would probably work fine:
 */

#ifndef _ECPGTYPE_H
#define _ECPGTYPE_H

#ifdef __cplusplus
extern		"C"
{
#endif

enum ECPGttype
{
	ECPGt_char = 1, ECPGt_unsigned_char, ECPGt_short, ECPGt_unsigned_short,
	ECPGt_int, ECPGt_unsigned_int, ECPGt_long, ECPGt_unsigned_long,
	ECPGt_long_long, ECPGt_unsigned_long_long,
	ECPGt_bool,
	ECPGt_float, ECPGt_double,
	ECPGt_varchar, ECPGt_varchar2,
	ECPGt_numeric,				/* this is a decimal that stores its digits in
								 * a malloced array */
	ECPGt_decimal,				/* this is a decimal that stores its digits in
								 * a fixed array */
	ECPGt_date,
	ECPGt_timestamp,
	ECPGt_interval,
	ECPGt_array,
	ECPGt_struct,
	ECPGt_union,
	ECPGt_descriptor,			/* sql descriptor, no C variable */
	ECPGt_char_variable,
	ECPGt_const,				/* a constant is needed sometimes */
	ECPGt_EOIT,					/* End of insert types. */
	ECPGt_EORT,					/* End of result types. */
	ECPGt_NO_INDICATOR,			/* no indicator */
	ECPGt_string,				/* trimmed (char *) type */
	ECPGt_sqlda					/* C struct descriptor */
};

 /* descriptor items */
enum ECPGdtype
{
	ECPGd_count = 1,
	ECPGd_data,
	ECPGd_di_code,
	ECPGd_di_precision,
	ECPGd_indicator,
	ECPGd_key_member,
	ECPGd_length,
	ECPGd_name,
	ECPGd_nullable,
	ECPGd_octet,
	ECPGd_precision,
	ECPGd_ret_length,
	ECPGd_ret_octet,
	ECPGd_scale,
	ECPGd_type,
	ECPGd_EODT,					/* End of descriptor types. */
	ECPGd_cardinality
};

#define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_interval) || ((type) == ECPGt_string))

/* we also have to handle different statement types */
enum ECPG_statement_type
{
	ECPGst_normal,
	ECPGst_execute,
	ECPGst_exec_immediate,
	ECPGst_prepnormal
};

#ifdef __cplusplus
}
#endif

#endif   /* _ECPGTYPE_H */