about summary refs log blame commit diff stats
path: root/config.default.h
blob: 2808ddb56bfcdfcd3ed051449828817d8ba22fdc (plain) (tree)
1
2
3
4
5
6
7
8
9




                                                              
              
                                                       

                                                    

                                     
 
                                       

                                         

                                         


                                         
                                                
                                        

              
                      
                                                                                      


                                                                                                    
                                                                                  

                                                                                         



                                                                                       
                                                                                       



                                                                                       
                                                                                       

                                                                                  
pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .hi
/*
 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
 * See LICENSE file for license details.
 */

#define TAGS \
const char *tags[] = { "1", "2", "3", "4", "5", NULL };

#define DEFMODE			dotile /* dofloat */
#define FLOATSYMBOL		"><>"
#define TILESYMBOL		"[]="

#define FONT			"fixed"
#define NORMBGCOLOR		"#333366"
#define NORMFGCOLOR		"#cccccc"
#define SELBGCOLOR		"#666699"
#define SELFGCOLOR		"#eeeeee"
#define STATUSBGCOLOR		"#dddddd"
#define STATUSFGCOLOR		"#222222"

#define MASTERW			60 /* percent */
#define MODKEY			Mod1Mask

#define KEYS \
static Key key[] = { \
	/* modifier			key		function	arguments */ \
	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \
	{ MODKEY,			XK_Tab,		focusnext,	{ 0 } }, \
	{ MODKEY|ShiftMask,		XK_Tab,		focusprev,	{ 0 } }, \
	{ MODKEY,			XK_Return,	zoom,		{ 0 } }, \
	{ MODKEY,			XK_g,		resizecol,	{ .i = 20 } }, \
	{ MODKEY,			XK_s,		resizecol,	{ .i = -20 } }, \
	{ MODKEY|ShiftMask,		XK_1,		tag,		{ .i = 0 } }, \
	{ MODKEY|ShiftMask,		XK_2,		tag,		{ .i = 1 } }, \
	{ MODKEY|ShiftMask,		XK_3,		tag,		{ .i = 2 } }, \
	{ MODKEY|ShiftMask,		XK_4,		tag,		{ .i = 3 } }, \
	{ MODKEY|ShiftMask,		XK_5,		tag,		{ .i = 4 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	{ .i = 0 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	{ .i = 1 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	{ .i = 2 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	{ .i = 3 } }, \
	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	{ .i = 4 } }, \
	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
	{ MODKEY,			XK_space,	togglemode,	{ 0 } }, \
	{ MODKEY,			XK_0,		viewall,	{ 0 } }, \
	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
	{ MODKEY,			XK_3,		view,		{ .i = 2 } }, \
	{ MODKEY,			XK_4,		view,		{ .i = 3 } }, \
	{ MODKEY,			XK_5,		view,		{ .i = 4 } }, \
	{ MODKEY|ControlMask,		XK_1,		toggleview,	{ .i = 0 } }, \
	{ MODKEY|ControlMask,		XK_2,		toggleview,	{ .i = 1 } }, \
	{ MODKEY|ControlMask,		XK_3,		toggleview,	{ .i = 2 } }, \
	{ MODKEY|ControlMask,		XK_4,		toggleview,	{ .i = 3 } }, \
	{ MODKEY|ControlMask,		XK_5,		toggleview,	{ .i = 4 } }, \
	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \
};

/* Query class:instance:title for regex matching info with following command:
 * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
#define RULES \
static Rule rule[] = { \
	/* class:instance:title regex	tags regex	isfloat */ \
	{ "Firefox.*",			"2",		False }, \
	{ "Gimp.*",			NULL,		True}, \
};
ch); char *string_downcase(char *word); /*----------------------------------------------------------------------*/ /* * Routines originally from ZUtil.c -- FM * *----------------------------------------------------------------------*/ /* Data types / constants */ /* bytes to leave for the header size info */ #define HEADER_LEN (size_t)2 typedef long pdu_type; #define initAPDU (pdu_type)20 #define initResponseAPDU (pdu_type)21 #define searchAPDU (pdu_type)22 #define searchResponseAPDU (pdu_type)23 #define presentAPDU (pdu_type)24 #define presentResponseAPDU (pdu_type)25 #define deteteAPDU (pdu_type)26 #define deleteResponseAPDU (pdu_type)27 #define accessControlAPDU (pdu_type)28 #define accessControlResponseAPDU (pdu_type)29 #define resourceControlAPDU (pdu_type)30 #define resourceControlResponseAPDU (pdu_type)31 typedef struct any { /* an any is a non-ascii string of characters */ unsigned long size; char *bytes; } any; typedef any bit_map; /* a bit_map is a group of packed bits */ typedef unsigned long data_tag; #define DT_PDUType (data_tag)1 #define DT_ReferenceID (data_tag)2 #define DT_ProtocolVersion (data_tag)3 #define DT_Options (data_tag)4 #define DT_PreferredMessageSize (data_tag)5 #define DT_MaximumRecordSize (data_tag)6 #define DT_IDAuthentication (data_tag)7 #define DT_ImplementationID (data_tag)8 #define DT_ImplementationName (data_tag)9 #define DT_ImplementationVersion (data_tag)10 #define DT_UserInformationField (data_tag)11 #define DT_Result (data_tag)12 #define DT_SmallSetUpperBound (data_tag)13 #define DT_LargeSetLowerBound (data_tag)14 #define DT_MediumSetPresentNumber (data_tag)15 #define DT_ReplaceIndicator (data_tag)16 #define DT_ResultSetName (data_tag)17 #define DT_DatabaseNames (data_tag)18 #define DT_ElementSetNames (data_tag)19 #define DT_QueryType (data_tag)20 #define DT_Query (data_tag)21 #define DT_SearchStatus (data_tag)22 #define DT_ResultCount (data_tag)23 #define DT_NumberOfRecordsReturned (data_tag)24 #define DT_NextResultSetPosition (data_tag)25 #define DT_ResultSetStatus (data_tag)26 #define DT_PresentStatus (data_tag)27 #define DT_DatabaseDiagnosticRecords (data_tag)28 #define DT_NumberOfRecordsRequested (data_tag)29 #define DT_ResultSetStartPosition (data_tag)30 #define DT_ResultSetID (data_tag)31 #define DT_DeleteOperation (data_tag)32 #define DT_DeleteStatus (data_tag)33 #define DT_NumberNotDeleted (data_tag)34 #define DT_BulkStatuses (data_tag)35 #define DT_DeleteMSG (data_tag)36 #define DT_SecurityChallenge (data_tag)37 #define DT_SecurityChallengeResponse (data_tag)38 #define DT_SuspendedFlag (data_tag)39 #define DT_ResourceReport (data_tag)40 #define DT_PartialResultsAvailable (data_tag)41 #define DT_ContinueFlag (data_tag)42 #define DT_ResultSetWanted (data_tag)43 #define UNUSED -1 /* number of bytes required to represent the following sizes in compressed integer format */ #define CompressedInt1Byte 128 /* 2 ^ 7 */ #define CompressedInt2Byte 16384 /* 2 ^ 14 */ #define CompressedInt3Byte 2097152 /* 2 ^ 21 */ /* others may follow ... */ /* types of query */ #define QT_0 "0" /* query whose non-standard format has been agreed upon client and server */ /* values for InitAPDU option element */ #define WILL_USE TRUE #define WILL_NOT_USE FALSE #define WILL_SUPPORT TRUE #define WILL_NOT_SUPPORT FALSE /* values for InitResponseAPDU result element */ #define ACCEPT TRUE #define REJECT FALSE /* values for SearchResponseAPDU search status element */ #define SUCCESS 0 /* intuitive huh? */ #define FAILURE 1 /* values for SearchResponseAPDU result set status element */ #define SUBSET 1 #define INTERIM 2 #define NONE 3 /* values for SearchResponseAPDU present status element */ /* SUCCESS already defined */ #define PARTIAL_1 1 #define PARTIAL_2 2 #define PARTIAL_3 3 #define PARTIAL_4 4 #define PS_NONE 5 /* can't use NONE since it was used by result set status */ #define DIAGNOSTIC_CODE_SIZE (size_t)3 typedef struct diagnosticRecord { boolean SURROGATE; char DIAG[DIAGNOSTIC_CODE_SIZE]; char *ADDINFO; } diagnosticRecord; #define D_PermanentSystemError "S1" #define D_TemporarySystemError "S2" #define D_UnsupportedSearch "S3" #define D_TermsOnlyStopWords "S5" #define D_TooManyArgumentWords "S6" #define D_TooManyBooleanOperators "S7" #define D_TooManyTruncatedWords "S8" #define D_TooMany IncompleteSubfields "S9" #define D_TruncatedWordsTooShort "SA" #define D_InvalidFormatForRecordNumber "SB" #define D_TooManyCharactersInSearch "SC" #define D_TooManyRecordsRetrieved "SD" #define D_PresentRequestOutOfRange "SF" #define D_SystemErrorInPresentRecords "SG" #define D_RecordNotAuthorizedToBeSent "SH" #define D_RecordExceedsPrefMessageSize "SI" #define D_RecordExceedsMaxRecordSize "SJ" #define D_ResultSetNotSuppAsSearchTerm "SK" #define D_OnlyOneRsltSetAsSrchTermSupp "SL" #define D_OnlyANDingOfASnglRsltSetSupp "SM" #define D_RsltSetExistsNoReplace "SN" #define D_ResultSetNamingNotSupported "SO" #define D_CombinationDatabasesNotSupp "SP" #define D_ElementSetNamesNotSupported "SQ" #define D_ElementSetNameNotValid "SR" #define D_OnlyASingleElmntSetNameSupp "SS" #define D_ResultSetDeletedByTarget "ST" #define D_ResultSetIsInUse "SU" #define D_DatabasesIsLocked "SV" #define D_TerminatedByNoContinueResp "SW" #define D_ResultSetDoesNotExist "SX" #define D_ResExNoResultsAvailable "SY" #define D_ResExUnpredictableResults "SZ" #define D_ResExValidSubsetOfResults "T1" #define D_AccessControlFailure "T2" #define D_SecurityNotIssuedReqTerm "T3" #define D_SecurityNotBeIssuedRecNotInc "T4" /*----------------------------------------------------------------------*/ /* for internal error handling */ extern char *readErrorPosition; /* pos where buf stoped making sense */ /* the following are macros so that they can return OUT of the function which calls them */ #define RETURN_ON_NULL(var) \ if (var == NULL) \ return(NULL); /* jump out of caller */ #define REPORT_READ_ERROR(pos) \ { readErrorPosition = (pos); \ return(NULL); /* jump out of caller */ \ } #define CHECK_FOR_SPACE_LEFT(spaceNeeded,spaceLeft) \ { if (*spaceLeft >= spaceNeeded) \ (*spaceLeft) -= spaceNeeded; \ else \ { *spaceLeft = 0; \ return(NULL); /* jump out of the caller */ \ } \ } /*----------------------------------------------------------------------*/ diagnosticRecord *makeDiag(boolean surrogate, char *code, char *addInfo); void freeDiag(diagnosticRecord * diag); char *writeDiag(diagnosticRecord * diag, char *buffer, long *len); char *readDiag(diagnosticRecord ** diag, char *buffer); char *writeCompressedInteger(unsigned long num, char *buf, long *len); char *readCompressedInteger(unsigned long *num, char *buf); char *writeCompressedIntWithPadding(unsigned long num, unsigned long size, char *buffer, long *len); unsigned long writtenCompressedIntSize(unsigned long num); char *writeTag(data_tag tag, char *buf, long *len); char *readTag(data_tag *tag, char *buf); data_tag peekTag(char *buf); unsigned long writtenTagSize(data_tag tag); any *makeAny(unsigned long size, char *data); void freeAny(any *a); any *duplicateAny(any *a); char *writeAny(any *a, data_tag tag, char *buffer, long *len); char *readAny(any **anAny, char *buffer); unsigned long writtenAnySize(data_tag tag, any *a); any *stringToAny(char *s); char *anyToString(any *a); unsigned long writtenStringSize(data_tag tag, char *s); any *longToAny(long Num); long anyToLong(any *a); char *writeString(char *s, data_tag tag, char *buffer, long *len); char *readString(char **s, char *buffer); bit_map *makeBitMap(unsigned long numBits,...); void freeBitMap(bit_map *bm); boolean bitAtPos(unsigned long pos, bit_map *bm); char *writeBitMap(bit_map *bm, data_tag tag, char *buffer, long *len); char *readBitMap(bit_map **bm, char *buffer); char *writeByte(unsigned long byte, char *buf, long *len); char *readByte(unsigned char *byte, char *buf); char *writeBoolean(boolean flag, char *buf, long *len); char *readBoolean(boolean *flag, char *buf); char *writePDUType(pdu_type pduType, char *buf, long *len); char *readPDUType(pdu_type *pduType, char *buf); pdu_type peekPDUType(char *buf); char *writeBinaryInteger(long num, unsigned long size, char *buf, long *len); char *readBinaryInteger(long *num, unsigned long size, char *buf); unsigned long writtenCompressedBinIntSize(long num); char *writeNum(long num, data_tag tag, char *buffer, long *len); char *readNum(long *num, char *buffer); unsigned long writtenNumSize(data_tag tag, long num); void doList(void **list, void (*func) (void *)); char *writeProtocolVersion(char *buf, long *len); char *defaultImplementationID(void); char *defaultImplementationName(void); char *defaultImplementationVersion(void); /*----------------------------------------------------------------------*/ /* * Routines originally from ZType1.c -- FM * *----------------------------------------------------------------------*/ /* This file implements the type 1 query defined in appendices B & C of the SR 1 spec. */ /*----------------------------------------------------------------------*/ /* types and constants */ /* new data tags */ #define DT_AttributeList (data_tag)44 #define DT_Term (data_tag)45 #define DT_Operator (data_tag)46 #define QT_BooleanQuery "1" /* standard boolean query */ /* general attribute code - use in place of any attribute */ #define IGNORE "ig" /* use value codes */ #define UV_ISBN "ub" #define CORPORATE_NAME "uc" #define ISSN "us" #define PERSONAL_NAME "up" #define SUBJECT "uj" #define TITLE "ut" #define GEOGRAPHIC_NAME "ug" #define CODEN "ud" #define SUBJECT_SUBDIVISION "ue" #define SERIES_TITLE "uf" #define MICROFORM_GENERATION "uh" #define PLACE_OF_PUBLICATION "ui" #define NUC_CODE "uk" #define LANGUAGE "ul" #define COMBINATION_OF_USE_VALUES "um" #define SYSTEM_CONTROL_NUMBER "un" #define DATE "uo" #define LC_CONTROL_NUMBER "ur" #define MUSIC_PUBLISHERS_NUMBER "uu" #define GOVERNMENT_DOCUMENTS_NUMBER "uv" #define SUBJECT_CLASSIFICATION "uw" #define RECORD_TYPE "uy" /* relation value codes */ #define EQUAL "re" #define GREATER_THAN "rg" #define GREATER_THAN_OR_EQUAL "ro" #define LESS_THAN "rl" #define LESS_THAN_OR_EQUAL "rp" #define NOT_EQUAL "rn" /* position value codes */ #define FIRST_IN_FIELD "pf" #define FIRST_IN_SUBFIELD "ps" #define FIRST_IN_A_SUBFIELD "pa" #define FIRST_IN_NOT_A_SUBFIELD "pt" #define ANY_POSITION_IN_FIELD "py" /* structure value codes */ #define PHRASE "sp" #define WORD "sw" #define KEY "sk" #define WORD_LIST "sl" /* truncation value codes */ #define NO_TRUNCATION "tn" #define RIGHT_TRUNCATION "tr" #define PROC_NUM_INCLUDED_IN_SEARCH_ARG "ti" /* completeness value codes */ #define INCOMPLETE_SUBFIELD "ci" #define COMPLETE_SUBFIELD "cs" #define COMPLETEFIELD "cf" /* operator codes */ #define AND "a" #define OR "o" #define AND_NOT "n" /* term types */ #define TT_Attribute 1 #define TT_ResultSetID 2 #define TT_Operator 3 #define ATTRIBUTE_SIZE 3 #define OPERATOR_SIZE 2 typedef struct query_term { /* type */ long TermType; /* for term */ char Use[ATTRIBUTE_SIZE + 1]; char Relation[ATTRIBUTE_SIZE + 1]; char Position[ATTRIBUTE_SIZE + 1]; char Structure[ATTRIBUTE_SIZE + 1]; char Truncation[ATTRIBUTE_SIZE + 1]; char Completeness[ATTRIBUTE_SIZE + 1]; any *Term; /* for result set */ any *ResultSetID; /* for operator */ char Operator[OPERATOR_SIZE]; } query_term; /*----------------------------------------------------------------------*/ /* functions */ query_term *makeAttributeTerm(char *use, char *relation, char *position, char *structure, char *truncation, char *completeness, any *term); query_term *makeResultSetTerm(any *resultSet); query_term *makeOperatorTerm(char *operatorCode); void freeTerm(void *qt); char *writeQueryTerm(query_term *qt, char *buffer, long *len); char *readQueryTerm(query_term **qt, char *buffer); any *writeQuery(query_term **terms); query_term **readQuery(any *info); /*----------------------------------------------------------------------*/ /* * Routines originally from UI.c -- FM * *----------------------------------------------------------------------*/ char *generate_retrieval_apdu(char *buff, long *buff_len, any *docID, long chunk_type, long start_line, long end_line, char *type, char *database_name); long interpret_message(char *request_message, long request_length, char *response_message, long response_buffer_length, /* length of the buffer (modified) */ long connection, boolean verbose); char *trim_junk(char *headline); /* * Routines originally from ZProt.c -- FM * *----------------------------------------------------------------------*/ /* APDU types */ typedef struct InitAPDU { pdu_type PDUType; boolean willSearch, willPresent, willDelete; boolean supportAccessControl, supportResourceControl; long PreferredMessageSize; long MaximumRecordSize; char *IDAuthentication; char *ImplementationID; char *ImplementationName; char *ImplementationVersion; any *ReferenceID; void *UserInformationField; } InitAPDU; typedef struct InitResponseAPDU { pdu_type PDUType; boolean Result; boolean willSearch, willPresent, willDelete; boolean supportAccessControl, supportResourceControl; long PreferredMessageSize; long MaximumRecordSize; char *IDAuthentication; char *ImplementationID; char *ImplementationName; char *ImplementationVersion; any *ReferenceID; void *UserInformationField; } InitResponseAPDU; typedef struct SearchAPDU { pdu_type PDUType; long SmallSetUpperBound; long LargeSetLowerBound; long MediumSetPresentNumber; boolean ReplaceIndicator; char *ResultSetName; char **DatabaseNames; char *QueryType; char **ElementSetNames; any *ReferenceID; void *Query; } SearchAPDU; typedef struct SearchResponseAPDU { pdu_type PDUType; long SearchStatus; long ResultCount; long NumberOfRecordsReturned; long NextResultSetPosition; long ResultSetStatus; long PresentStatus; any *ReferenceID; void *DatabaseDiagnosticRecords; } SearchResponseAPDU; typedef struct PresentAPDU { pdu_type PDUType; long NumberOfRecordsRequested; long ResultSetStartPosition; char *ResultSetID; char *ElementSetNames; any *ReferenceID; void *PresentInfo; } PresentAPDU; typedef struct PresentResponseAPDU { pdu_type PDUType; boolean PresentStatus; long NumberOfRecordsReturned; long NextResultSetPosition; any *ReferenceID; void *DatabaseDiagnosticRecords; } PresentResponseAPDU; /*----------------------------------------------------------------------*/ /* Functions */ InitAPDU *makeInitAPDU(boolean search, boolean present, boolean deleteIt, boolean accessControl, boolean resourceControl, long prefMsgSize, long maxMsgSize, char *auth, char *id, char *name, char *version, any *refID, void *userInfo); void freeInitAPDU(InitAPDU * init); char *writeInitAPDU(InitAPDU * init, char *buffer, long *len); char *readInitAPDU(InitAPDU ** init, char *buffer); InitResponseAPDU *makeInitResponseAPDU(boolean result, boolean search, boolean present, boolean deleteIt, boolean accessControl, boolean resourceControl, long prefMsgSize, long maxMsgSize, char *auth, char *id, char *name, char *version, any *refID, void *userInfo); void freeInitResponseAPDU(InitResponseAPDU *init); char *writeInitResponseAPDU(InitResponseAPDU *init, char *buffer, long *len); char *readInitResponseAPDU(InitResponseAPDU **init, char *buffer); InitResponseAPDU *replyToInitAPDU(InitAPDU * init, boolean result, void *userInfo); SearchAPDU *makeSearchAPDU(long small, long large, long medium, boolean replace, char *name, char **databases, char *type, char **elements, any *refID, void *queryInfo); void freeSearchAPDU(SearchAPDU *query); char *writeSearchAPDU(SearchAPDU *query, char *buffer, long *len); char *readSearchAPDU(SearchAPDU **query, char *buffer); SearchResponseAPDU *makeSearchResponseAPDU(long result, long count, long recordsReturned, long nextPos, long resultStatus, long presentStatus, any *refID, void *records); void freeSearchResponseAPDU(SearchResponseAPDU *queryResponse); char *writeSearchResponseAPDU(SearchResponseAPDU *queryResponse, char *buffer, long *len); char *readSearchResponseAPDU(SearchResponseAPDU **queryResponse, char *buffer); PresentAPDU *makePresentAPDU(long recsReq, long startPos, char *resultID, any *refID, void *info); void freePresentAPDU(PresentAPDU * present); char *writePresentAPDU(PresentAPDU * present, char *buffer, long *len); char *readPresentAPDU(PresentAPDU ** present, char *buffer); PresentResponseAPDU *makePresentResponseAPDU(boolean status, long recsRet, long nextPos, any *refID, void *records); void freePresentResponseAPDU(PresentResponseAPDU * present); char *writePresentResponseAPDU(PresentResponseAPDU * present, char *buffer, long *len); char *readPresentResponseAPDU(PresentResponseAPDU ** present, char *buffer); /*----------------------------------------------------------------------*/ /* user extension hooks: */ extern char *writeInitInfo(InitAPDU * init, char *buffer, long *len); extern char *readInitInfo(void **info, char *buffer); extern char *writeInitResponseInfo(InitResponseAPDU *init, char *buffer, long *len); extern char *readInitResponseInfo(void **info, char *buffer); extern char *writeSearchInfo(SearchAPDU *query, char *buffer, long *len); extern char *readSearchInfo(void **info, char *buffer); extern char *writeSearchResponseInfo(SearchResponseAPDU *query, char *buffer, long *len); extern char *readSearchResponseInfo(void **info, char *buffer); extern char *writePresentInfo(PresentAPDU * present, char *buffer, long *len); extern char *readPresentInfo(void **info, char *buffer); extern char *writePresentResponseInfo(PresentResponseAPDU * present, char *buffer, long *len); extern char *readPresentResponseInfo(void **info, char *buffer); #ifdef __cplusplus } #endif #endif /* HTVMSWAIS_H */