This file is indexed.

/usr/include/xview_private/ei.h is in xviewg-dev 3.2p1.4-28.1.

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*	@(#)ei.h 20.21 93/06/28 SMI	*/

/*
 *	(c) Copyright 1989 Sun Microsystems, Inc. Sun design patents 
 *	pending in the U.S. and foreign countries. See LEGAL NOTICE 
 *	file for terms of the license.
 */

#ifndef suntool_entity_interpreter_DEFINED
#define suntool_entity_interpreter_DEFINED

/*
 * This defines the programmer interface to the entity interpreter abstraction.
 *
 * Each instance of an entity interpreter is expected to be paired with an
 *   instance of an entity stream.
 */

#					ifndef pr_rop
#include <pixrect/pixrect.h>
#					endif
#					ifndef rect_right
#include <xview/rect.h>
#					endif

#					ifndef sunwindow_attr_DEFINED
#include <xview/attrol.h>
#					endif
#					ifndef suntool_entity_stream_DEFINED
#include <xview_private/es.h>
#					endif

struct ei_object {
	struct ei_ops	*ops;
	caddr_t		 data;
};
typedef struct ei_object *Ei_handle;

struct ei_process_result {
	struct pr_pos	pos;		/* origin of next char */
	struct rect	bounds;		/* boundary of ink */
	unsigned long	break_reason;
	Es_index	last_plus_one;	/* 1st char not painted */
	Es_index	considered;	/* last char considered for paint */
};
	/*
	 * Flag bits returned in ei_process_result.break_reason.
	 * More than one bit may be on, thus break_reason acts as a mask of
	 *   status bits rather than a single status.
	 */
#define EI_PR_END_OF_STREAM	0x00000001
    /* Forward scan exhausted the entity stream. */
#define EI_PR_BUF_EMPTIED	0x00000002
    /* Forward scan exhausted the buffer or exceeded specified limit. */
#define EI_PR_NEWLINE		0x00000004
    /* A character in the newline class was encountered. */
#define EI_PR_BUF_FULL		0x00000008
    /* In ei_expand(), the output buffer filled up */
#define EI_PR_HIT_LEFT		0x00000010
#define EI_PR_HIT_TOP		0x00000020
#define EI_PR_HIT_RIGHT		0x00000040
#define EI_PR_HIT_BOTTOM	0x00000080
    /*
     *  Above four reasons indicate attempt to paint ink in violation of
     *   the corresponding boundary of the bounds rectangle.
     */
#define EI_PR_NEXT_FREE		0x00000100
#define EI_PR_CLIENT_REASON(client_mask) 				\
	( (unsigned long)(0x80000000|client_mask) )
    /*
     * Client code must test for client defined reasons (using == or !=) before
     *   applying bit tests (e.g., reason & EI_PR_NEWLINE) in order to avoid
     *   false matches (e.g., above test would match EI_PR_CLIENT_REASON(4)).
     */

#define EI_OP_CHAR		0x00000001
#define EI_OP_WORD		0x00000002
#define EI_OP_DARK_GRAY		0x00000010
#define EI_OP_LIGHT_GRAY	0x00000020
#define EI_OP_STRIKE_THRU	0x00000040
#define EI_OP_DOTS_UNDER	0x00000080
#define EI_OP_STRIKE_UNDER	0x00000100
#define EI_OP_INVERT		0x00000200
#define EI_OP_CLEAR_FRONT	0x01000000	/* default has caller clear */
#define EI_OP_CLEAR_INTERIOR	0x02000000	/* default has caller clear */
#define EI_OP_CLEAR_BACK	0x04000000	/* default has caller clear */
#define EI_OP_CLEARED_RECT	0x08000000	/* caller pre-cleared */
#define EI_OP_MEASURE		0x80000000	/* default is paint */


struct ei_span_result {
	Es_index	first;
	Es_index	last_plus_one;
	unsigned	flags;
};
#define EI_SPAN_NOT_IN_CLASS		0x00000001
#define EI_SPAN_RIGHT_HIT_NEXT_LEVEL	0x00000002
#define EI_SPAN_LEFT_HIT_NEXT_LEVEL	0x00000004
#define EI_SPAN_HIT_NEXT_LEVEL						\
		(EI_SPAN_RIGHT_HIT_NEXT_LEVEL|EI_SPAN_LEFT_HIT_NEXT_LEVEL)


struct ei_ops {
  Ei_handle			(*destroy)();
  caddr_t			(*get)();
  int				(*line_height)();
  int				(*lines_in_rect)();
  struct ei_process_result	(*process)();
  int				(*set)();
  struct ei_span_result		(*span_of_group)();
  struct ei_process_result	(*expand)();
};

#define	EI_SPAN_INFO_MASK	0x0000000F
#define	EI_SPAN_CLASS_MASK	0x000000F0

#define EI_SPAN_RIGHT_ONLY	0x00000001
#define EI_SPAN_LEFT_ONLY	0x00000002
#define EI_SPAN_IN_CLASS_ONLY	0x00000004
#define EI_SPAN_NOT_CLASS_ONLY	0x00000008
#define EI_SPAN_CHAR		0x00000010
#define EI_SPAN_MORPHENE	0x00000020
#define EI_SPAN_WORD		0x00000030
#define EI_SPAN_PATH_NAME	0x00000040
#define EI_SPAN_LINE		0x00000050
#define EI_SPAN_SENTENCE	0x00000060
#define EI_SPAN_PARAGRAPH	0x00000070
#define EI_SPAN_SECTION		0x00000080
#define EI_SPAN_CHAPTER		0x00000090
#define EI_SPAN_DOCUMENT	0x000000A0
#define EI_SPAN_SP_AND_TAB	0x000000B0
#define EI_SPAN_CLIENT1		0x000000C0
#define EI_SPAN_CLIENT2		0x000000D0
#define EI_SPAN_POINT           0x000000E0 /* laf */

/* Valid attributes for ei_get/set */
#define EI_ATTR(type, ordinal)	ATTR(ATTR_PKG_ENTITY, type, ordinal)
#define EI_ATTR_LIST(ltype, type, ordinal)	\
	EI_ATTR(ATTR_LIST_INLINE((ltype), (type)), (ordinal))
typedef enum {
	EI_CONTROL_CHARS_USE_FONT	= EI_ATTR(ATTR_BOOLEAN,		 10),
	EI_FONT				= EI_ATTR(ATTR_PIXFONT_PTR,	 20),
#ifdef OW_I18N
	EI_LOCALE_IS_ALE		= EI_ATTR(ATTR_INT,		 25),
#ifdef FULL_R5
	EI_LINE_SPACE			= EI_ATTR(ATTR_INT,		 26),
#endif /* FULL_R5 */
#endif /* OW_I18N */
	EI_SPANW			= EI_ATTR(ATTR_OPAQUE,		 30),
	EI_SPAN1			= EI_ATTR(ATTR_OPAQUE,		 40),
	EI_SPAN2			= EI_ATTR(ATTR_OPAQUE,		 50),
	EI_TAB_WIDTH			= EI_ATTR(ATTR_INT,		 60),
	EI_TAB_WIDTHS			= EI_ATTR_LIST(ATTR_NULL, ATTR_INT,	 70)
} Ei_attribute;

#define ei_destroy(eih)							\
	(*(eih)->ops->destroy)(eih)
#define ei_get(eih, attr)						\
	(*(eih)->ops->get)(eih, attr)
#define ei_line_height(eih)						\
	(*(eih)->ops->line_height)(eih)
#define ei_lines_in_rect(eih, rect)					\
	(*(eih)->ops->lines_in_rect)(eih, rect)
#define ei_process(eih, op, esbuf, x, y, rop, pw, rect, tab_origin)	\
	(*(eih)->ops->process)(eih, op, esbuf, x, y, rop, pw, rect, tab_origin)
#define ei_expand(eih, esbuf, rect, x, obuf, obuf_len, tab_origin)	\
	(*(eih)->ops->expand)(eih, esbuf, rect, x, obuf, obuf_len, tab_origin)
/* VARARGS */
EXTERN_FUNCTION( int ei_set, (Ei_handle eih, DOTDOTDOT));
#define ei_span_of_group(eih, esbuf, group_spec, index)			\
	(*(eih)->ops->span_of_group)(eih, esbuf, group_spec, index)


#endif