1N/A/*********************************************************************** 1N/A* This software is part of the ast package * 1N/A* Copyright (c) 1985-2011 AT&T Intellectual Property * 1N/A* and is licensed under the * 1N/A* Common Public License, Version 1.0 * 1N/A* by AT&T Intellectual Property * 1N/A* A copy of the License is available at * 1N/A* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 1N/A* Information and Software Systems Research * 1N/A* Glenn Fowler <gsf@research.att.com> * 1N/A* David Korn <dgk@research.att.com> * 1N/A* Phong Vo <kpv@research.att.com> * 1N/A***********************************************************************/ 1N/A/* Public header file for the sfio library 1N/A** Written by Kiem-Phong Vo 1N/A#
endif /* _PACKAGE_ast */ 1N/A/* Sfoff_t should be large enough for largest file address */ 1N/A/* discipline structure */ 1N/A/* formatting environment */ 1N/A char*
form;
/* format string to stack */ 1N/A int fmt;
/* format character */ 1N/A#
define SFFMT_SET 0
17777770 /* flags settable on calling extf */ 1N/A/* for sfmutex() call */ 1N/A/* various constants */ 1N/A/* bits for various types of files */ 1N/A#
define SF_SHARE 0000
100 /* stream with shared file descriptor */ 1N/A#
define SF_STATIC 000
1000 /* a stream that cannot be freed */ 1N/A#
define SF_PUBLIC 000
4000 /* SF_SHARE and follow physical seek */ 1N/A#
define SF_FLAGS 0
177177 /* PUBLIC FLAGS PASSABLE TO SFNEW() */ 1N/A#
define SF_SETS 0
177163 /* flags passable to sfset() */ 1N/A#
define SF_LOCKR 00000
10 /* lock record, stop access to stream */ 1N/A#
define SF_LASTR 00000
20 /* get the last incomplete record */ 1N/A/* exception events: SF_NEW(0), SF_READ(1), SF_WRITE(2) and the below */ 1N/A#
define SF_DPUSH 5 /* when discipline is being pushed */ 1N/A#
define SF_DPOP 6 /* when discipline is being popped */ 1N/A#
define SF_FINAL 11 /* closing is done except stream free */ 1N/A/* for stack and disciplines */ 1N/A/* for the notify function and discipline exception */ 1N/A#
define SF_SETFD (-
1)
/* about to set the file descriptor */ 1N/A/* namespace incursion workarounds -- migrate to the new names */ 1N/A/* mutex locking for thread-safety */ 1N/A/* io functions with discipline continuation */ 1N/A/* portable handling of primitive types */ 1N/A/* miscellaneous function analogues of fast in-line functions */ 1N/A/* coding long integers in a portable and compact fashion */ 1N/A#
endif /*__INLINE__*/ 1N/A (((p) < 0 || (p) > (f)->
_size) ? (
char*)0 : \
1N/A ( ((p) > 0 || (f)->
_size+(p) < 0) ? (
char*)0 : \
1N/A ((f)->
_data == (
unsigned char*)(b) ? 0 : -
1) \
1N/A#
endif /* _SFSTR_H */