File: ionl_wteol.c

package info (click to toggle)
fis-gtm 6.3-014-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 36,680 kB
  • sloc: ansic: 333,039; asm: 5,180; csh: 4,956; sh: 1,924; awk: 291; makefile: 66; sed: 13
file content (48 lines) | stat: -rwxr-xr-x 1,626 bytes parent folder | download | duplicates (5)
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
/****************************************************************
 *								*
 *	Copyright 2001, 2007 Fidelity Information Services, Inc	*
 *								*
 *	This source code contains the intellectual property	*
 *	of its copyright holder(s), and is made available	*
 *	under a license.  If you do not know the terms of	*
 *	the license, please stop and do not read further.	*
 *								*
 ****************************************************************/

#include "mdef.h"

#include "gtm_string.h"
#include "io.h"
#include "iottdef.h"

/* essentially the same as iott_wteol */
void ionl_wteol(int4 val, io_desc *io_ptr)
{
	mstr	eol;
	int	eol_cnt;

	assert(val);
	io_ptr->esc_state = START;
	eol.len = STRLEN(NATIVE_TTEOL);
	eol.addr = (char *)NATIVE_TTEOL;
	for (eol_cnt = val; eol_cnt--; )
	{
		io_ptr->dollar.x = 0; /* so that ionl_write doesn't try to wrap (based on escape state and width) */
		ionl_write(&eol);
	}
	/* $X is maintained in VMS without the below assignment (resetting to 0) because the NATIVE_TTEOL is \015\012
	 * and the <CR> (\015) triggers appropriate maintenance of $X.  In UNIX, NATIVE_TTEOL is \012, so
	 * FILTER=CHARACTER effectively turns off all $X maintenance (except for WRAP logic).
	 * In VMS the below assignment is not necessary, but harmless; it is always logically correct.
	 */
	io_ptr->dollar.x = 0;
	if (!(io_ptr->write_filter & CHAR_FILTER))
	{	/* If no FILTER and EOL, also maintain $Y;
		 * If FILTER, dollarx() of the linefeed character \012 takes care of this maintenance.
		 */
		io_ptr->dollar.y += val;
		if (io_ptr->length)
			io_ptr->dollar.y %= io_ptr->length;
	}
	return;
}