Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs » InetSWIs

InetSWIs

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs
Filename: InetSWIs
Read OK:
File size: 7A54 bytes
Load address: 0000
Exec address: 0000
File contents
HELP(�����,����$DIR$��H����yw+J!RootLH���\��+�DNSResolver_�H����+,Ec_�H���N��+�HTMLDecode_#H������+LHTTP_�%H������+`Internet_(5H���^��+,KA9QAUN_6H���ӵ�+,Mbuf_�6H���G��+,SLIPdriver_\7H������+XSysLog_LOH������+URI_�XH���0��+,WebFTP_YH������+,WebGopher_|YG����(GԄ3!PreZH���.��+tRGB_ ^H���^��+,PPPdriver_�^H�����+PMimeMap_pbH�����+;about�hH������+�Msg_lnH����À+(Service_HvH���:ŀ+tResolver_DATAJInternet SWIs
#Parent StrongHelp:!Menu
#Postfix _
#Table Columns 4
<DNSResolver>
<Ec>
<HTMLDecode>
<HTTP>
<Internet>
<KA9QAUN>
<Mbuf>
<MimeMap>
<PPPdriver>
<Resolver>
<RGB>
<SLIPdriver>
<Socket=>InetSocket:!Root>
<SysLog>
<URI>
<WebFTP>
<WebGopher>
#EndTable
#Line
#align centre
{/}<Internet SWIs manual=>about>, v1.02{/}
DIR$���G���<YЇ!RootT	G�����X�kCacheFlush�	G����֖�Checkl
G���lݖ�Dispose�
G���fI��DnComp�G����D���DnExpand�G���w>��GetAnswer�
G���f<���GetAnswerRawpG����7��GetHostByAddrhG���E2���GetHostByName0G����-��GetHostName�G����+��GetMXQueryAnswer\G��� *��GetNSQueryAnswerG���7(��GetSOAQueryAnswer�G����$��MTGetHostByAddrdG�����MTGetHostByName�G������3NameServers$G���6�X�LResDebugpG���2���ResQuery\G�����X�MResStatus�G�����X�MResUseVC�G�������ShowAnswer�G���(����Start�G���1���QVersionDATA�DNSResolver (version 1.08)
#Prefix DNSResolver_
#Table Columns 3
<CacheFlush>
<Check>
<Dispose>
<DnComp>
<DnExpand>
<GetAnswer>
<GetAnswerRaw>
<GetHostByAddr>
<GetHostByName>
<GetHostName>
<GetMXQueryAnswer>
<GetNSQueryAnswer>
<GetSOAQueryAnswer>
<MTGetHostByAddr>
<MTGetHostByName>
<NameServers>
<ResDebug>
<ResQuery>
<ResStatus>
<ResUseVC>
<ShowAnswer>
<Start>
<Version>
#EndTable
DATAkDNSResolver_CacheFlush  (&46024)
#Parent DNSResolver_
Flush everything from the DNS resolver cache.DATA�DNSResolver_Check  (&46011)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	status (dns_status)

Checks the progress of a multitasking DNS query.DATA�DNSResolver_Dispose  (&46012)
#Parent DNSResolver_
=>	R0 =	query-handle 

Terminates & disposes of a multitasking DNS query.DATA�DNSResolver_DnComp  (&4601F)
#Parent DNSResolver_
=>	R0 =	pointer to exp_dn (String)
	R1 =	comp_dn (pointer to Char)
	R2 =	dn_ptrs (pointer to pointer to Char)
	R3 =	lastdnptr (pointer to pointer to Char)
	R4 =	length (Int)
<=	R0 =	status (Int)
DATA�DNSResolver_DnExpand  (&46020)
#Parent DNSResolver_
=>	R0 = pointer to msg (String)
	R1 = pointer to eomsg (String)
	R2 = pointer to comp_dn (String)
	R3 = exp_dn (pointer to Char)
	R4 = length (Int)
<=	R0 = status (Int)
DATA�DNSResolver_GetAnswer  (&46013)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	host (pointer to hostent)

Retrieves the DNS answer as a hostent structure if available.DATA�DNSResolver_GetAnswerRaw  (&46014)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	result (pointer to data)
	R1 =	resplen (Int)

Retrieves the complete unparsed DNS answer if available.DATA�DNSResolver_GetHostByAddr  (&46001)
#Parent DNSResolver_
=>	R0 =	&0
	R1 =	pointer to address (data)
	R2 =	address_size (Int)
	R3 =	address_type (Int)
<=	R1 =	host (pointer to hostent)

Looks up the host information as for gethostbyaddr(3).DATA�DNSResolver_GetHostByName  (&46000)
#Parent DNSResolver_
=>	R0 =	&0
	R1 =	pointer to hostname (Char)
<=	R1 =	host (pointer to hostent)

Looks up the host information as for gethostbyname(3).DATA�DNSResolver_GetHostName  (&46021)
#Parent DNSResolver_
=>	R0 =	buffer (pointer to Char)
	R1 =	size (Int)
<=	R0 =	status (Int)
DATA�DNSResolver_GetMXQueryAnswer  (&46015)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	host (pointer to dnsquery_mx)
	R1 =	mxcount (Int)
DATA�DNSResolver_GetNSQueryAnswer  (&46016)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	host (pointer to dnsquery_ns)
	R1 =	nscount (Int)
DATA�DNSResolver_GetSOAQueryAnswer  (&46017)
#Parent DNSResolver_
=>	R0 =	query (pointer to dnsquery)
<=	R0 =	host (pointer to dnsquery_soa)
	R1 =	soacount (Int)
DATA�DNSResolver_MTGetHostByAddr  (&46019)
#Parent DNSResolver_
=>	R0 =	pointer to address (data)
	R1 =	address_size (Int)
	R2 =	address_type (Int)
<=	R0 =	query (pointer to dnsquery)
DATA�DNSResolver_MTGetHostByName  (&46018)
#Parent DNSResolver_
=>	R0 =	pointer to hostname (String)
<=	R0 =	query (pointer to dnsquery)
DATA3DNSResolver_NameServers  (&46023)
#Parent DNSResolver_
<=	R0 =	size (Int)
	R1 =	ns_address_list (pointer to sockaddr_in)

Find out what nameservers are currently being used. This information should be treated as READ-ONLY, although you could (if careful) change these if you know what you are doing.DATALDNSResolver_ResDebug  (&4601B)
#Parent DNSResolver_
(not documented)DATA�DNSResolver_ResQuery  (&46022)
#Parent DNSResolver_
=>	R0 =	pointer to address (String)
	R1 =	address_class (Int)
	R2 =	lookup_type (Int)
	R3 =	pointer to answer buffer (pointer to Char)
	R4 =	size (Int)
<=	R0 =	length (Int)
DATAMDNSResolver_ResStatus  (&4601A)
#Parent DNSResolver_
(not documented)DATAMDNSResolver_ResUseVC  (&4601C)
#Parent DNSResolver_
(not documented)
DATA�DNSResolver_ShowAnswer  (&4601E)
#Parent DNSResolver_
=>	R0 =	pointer to response (data)
	R1 =	buffer (pointer to Char)
	R2 =	size (pointer to Int)
	R3 =	answer length (Int)
<=	R0 =	status (Int)
DATA�DNSResolver_Start  (&46010)
#Parent DNSResolver_
=>	R0 =	pointer to address (String)
	R1 =	address_class (Int)
	R2 =	lookup_type (Int)
<=	R0 =	query (pointer to dnsquery)

Starts a multitasking DNS query.DATAQDNSResolver_Version  (&4601D)
#Parent DNSResolver_
<=	R0 =	version (Int)
DIR$,,G����Y�!g!RootDATAgEc
#Parent !Root
#Prefix Ec_
#Table Columns 2
Start
Up
Down
Send
Version
MTU
TxEvReq
#EndTable
DIR$��G�����u!Root�G���'���6GetWord�G�������MoveBytes�!G����k�yGetAttributeDATAuHTMLDecode
#Parent !Root
#Prefix HTMLDecode_
#Table Columns 2
<GetWord>
<GetAttribute>
<MoveBytes>
#EndTable
DATA6HTMLDecode_GetWord  (&4D840)
#Parent HTMLDecode_
=>	R0 =	pointer to input buffer
	R1 =	length of buffer
	R2 =	<flags=>.flags>

<=	R0 =	pointer to string, or 0 if no string present
	R1 =	length to reduce buffer by

This SWI reads a single word, or tag from a stream of raw HTML data. Strings returned may be up to 512 bytes in length and are valid until the next call to HTMLDecode_GetWord. Comment tags will never be returned as these are stripped completely.
#Subpage flags
Flags used in HTMLDecode_GetWords
Bit	Meaning if set
#Line
0	<File is complete=>.flagbit0>
#Subpage flagbit0
Flag bit 0 for HTMLDecode_GetWord
In order that HTMLDecode may process files 'on the fly' whilst data is only partially available the flag word indicates whether the data in the buffer is the complete data from the server, or whether there is more to come but that it is not in the buffer at the moment.

Therefore, when the end of the buffer is reached and the flag is unset then the currently processed string is abandoned and 0 returned. The buffer will have been scanned for comments and spaces and therefore R1 is valid.

If the end of the buffer is reached and the flag is set then the currently processed string will be terminated and returned as the last string. Subsequent calls will return 0 indicating that the decode is complete.
DATA�HTMLDecode_MoveBytes  (&4D842)
#Parent HTMLDecode_
=>	R0 =	pointer to source address
	R1 =	pointer to destination address
	R2 =	length of data

This SWI should be to move a queue of data down in memory. The idea is that you call this to move the data down in a continuous buffer so that you can read parts of a file in, parse it and then load more. A very simple copy is performed - the source should be above the destination if the areas overlap.DATAyHTMLDecode_GetAttrib  (&4D841)
#Parent HTMLDecode_
=>	R0 =	pointer to string of attributes

<=	R0 =	pointer to rest of string; after attribute
	R1 =	capitalised attribute name, or 0 if none left
	R2 =	value of attribute, or 0 if none given

This SWI should be called for tags, after the tag itself has been removed. This should simplify the decoding of HTML attributes.DIR$LL\#G���e���!Root�#G����!��3OpenDATA�HTTP
#Parent !Root
#Prefix HTTP_
#Table Columns 2
<Open>
Status
Close
MapToRISCOS
MapFromRISCOS
SetFileType
CompletedPart
#EndTable
DATA�HTTP_Open
#Parent HTTP_
=>	R0 =	pointer to a <hostent structure=>Internet_hostent>
	R1 =	pointer to page to fetch, or 0 for root
	R2 =	(some form of header data)
	R3 =	pointer to filename to retrieve body into
	R4 =	pointer to filename to use as posting body
	R5 =	<flags=>.flags>

This will open a HTTP connection and fetch the requested page.
#Subpage flags
HTTP_Open flags
Bit	Meaning if set
#Line
0	Use HTTPS (if available)
1	?
2	Request just head
3	?
4	Supply 'Range' header
others	unknownDIR$``@'H���w�[!RootL(G���=��ÐGetHostByName�)G���,��#hostent-G�������GetHostByAddr.G����V�VGetServiceByPortl/G�����servent2G���a��ZGetServiceByNamet3G����3�5�DecodeError(4G�������GetServicesMenuDATAInternet
#Parent !Root
#Prefix Internet_
InetServices :
#Indent 2
#Table Columns 2
<GetServiceByName>
<GetServiceByPort>
<DecodeError>
<GetServicesMenu>
#EndTable

#Indent 0
InetDB :
#Indent 2
#Table Columns 2
<GetHostByName>
<GetHostByAddr>
#EndTable
#Indent
DATA�Internet_GetHostByName  (&46000)
#Parent Internet_
=>	R0 =	0
	R1 =	pointer to host name
<=	R0 =	pointer to error block if error, or netbsd <error number=>Inet:E>
	R1 =	pointer to <hostent=>Internet_hostent> structure, or 0 if not found

Returns a hostent block for the requested host name. This hostent block will remain static for 24 hours after which it will expire and no longer be valid.
DATA#Host entry block
The hostent block is as defined in unix C. The addresses given are in network byte order (the reverse of normal Acorn words).

Offset	Contents
#Line
0	pointer to primary name of host
4	pointer to a block of pointers to alias names for the host
8	address type
12	address length
16	pointer to a list of addresses for host

Or, in C :
#Indent 2
#Wrap Off;fCode;Tab fCode,fCode
struct hostent \{
  char *h_name;	/* Official name of host */
  char **h_aliases;	/* Alternative names for host */
  int  h_addrtype;	/* Host address type */
  int  h_length;	/* Length of each address */
  char **h_addr_list;	/* List of addresses for host */
\#define h_addr h_addr_list[0]	/* Address, for back compatability */
\};

#wrap;f;Indent 0
In BASIC you will usually want to use !!(hostent+16).
DATAInternet_GetHostByAddr (&46001)
#Parent Internet_
=>	R0 =	0
	R1 =	pointer to host address
	R2 =	length of address
	R3 =	type of address
<=	R1 =	pointer to <hostent=>Internet_hostent> structure, or 0 if not found

Returns a hostent block for the requested host address.DATAVInternet_GetServiceByPort
#Parent Internet_
=>	R0 =	port number
	R1 =	protocol, or 0 for default protocol (tcp)
<=	R1 =	pointer to <servent=>Internet_servent> structure, or 0 if not found

Returns a servent block for the requested port. This is not guarenteed to remain static and should only be considered valid until the next call.
DATA�Service entry block
The servent block is as defined in unix C.

Offset	Contents
#Line
0	pointer to official name of service
4	pointer to <aliases list=>.aliases> for the service, or 0 if none.
8	port number
12	pointer to name of protocol

Or, in C :
#Indent 2
#Wrap Off;fCode;Tab fCode,fCode
struct servent \{
  char *s_name;		/* Official name of service */
  char **s_aliases;	/* Alternative names for service */
  int  s_port;		/* Port number to use */
  char *s_proto;	/* Protocol to use */
\};
#
#Subpage aliases
Service aliases list
The aliases list consists of a 0-terminated list of pointers to the alias names. The list, like the servent block itself, is not static.
DATAZInternet_GetServiceByName
#Parent Internet_
=>	R0 =	service name
	R1 =	protocol, or 0 for default protocol (tcp)
<=	R1 =	pointer to <servent=>Internet_servent> structure, or 0 if not found

Returns a servent block for the requested service. This is not guarenteed to remain static and should only be considered valid until the next call.
DATA�Internet_DecodeError
#Parent Internet_
=>	R0 =	error number
<=	R0 =	pointer to error message

Returns a textual version of the error number given by the sockets interface.
DATA�Internet_GetServicesMenu
#Parent Internet_
=>	R0 =	pointer to name of item to tick, or 0 for none
	R1 =	pointer to protocol name, or 0 for default
<=	R0 =	pointer to menu structure

Creates a menu structure of services which are currently known.
DIR$,,T5G���E]�!�!RootDATA�KA9QAUN
#Parent !Root
#Prefix KA9QAUN_
#Table Columns 2
NetworkIfStart
NetworkIfUp
NetworkIfDown
NetworkIfSend
DCIVersion
NetworkMTU
TxEventRequired
StaNumReq
#EndTable
DIR$,,46G����e�v!RootDATAvMbuf
#Parent !Root
#Prefix Mbuf_
#Table Columns 2
OpenSession
CloseSession
Memory
Statistic
Control
#EndTable
DIR$,,�6G���j_�!�!RootDATA�SLIPdriver
#Parent !Root
#Prefix SLIPdriver_
#Table Columns 2
Start
Up
Down
Send
Version
MTU
TxEvReq
StaNumReq
#EndTable
DIR$XX�9G����~�`!Root�:G���� ��LogMessage�;G�����`�GetLogLevel|<G�����`�FlushLog<=G���T/�`SetLogLevelP>G���w�`HLogUnstamped�?G����`Indent�@G����z�`UnIndent�AG������`�NoIndent�BG����`sOpenSessionLogDG���� �`�CloseSessionLog�DG���v;�``LogDataFG�����`	LogFormattedLG���X��`�ReadErrorMessage�LG�����`�LogComplete�MG���!�`�prioritiesDATASysLog
#Parent !Root
#Prefix SysLog_
#Table Columns 2
<LogMessage>
<GetLogLevel>
<FlushLog>
<SetLogLevel>
<LogUnstamped>
<Indent>
<UnIndent>
<NoIndent>
<OpenSessionLog>
<CloseSessionLog>
<LogData>
<LogFormatted>
<ReadErrorMessage>
<LogComplete>
#EndTable
DATA�SysLog_LogMessage (&4C880)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle
	R1 =	pointer to text to log
	R2 =	<priority=>SysLog_priorities>

Logs a message in a named system log or session log (see <SysLog_OpenSessionLog>).DATA�SysLog_GetLogLevel (&4C881)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle
<=	R0 =	<priority=>SysLog_priorities>

Reads the current logging level for a particular log.
DATA�SysLog_FlushLog (&4C882)
#Parent SysLog_
=>	R0 =	pointer to log name, session log handle, or 0 to flush all

Writes out any cached data from memory to the logs and closes the files.
DATASysLog_SetLogLevel (&4C883)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle
	R1 =	<new priority=>SysLog_priorities>

Sets te logging level for a particular log or session. This call is for debugging purposes only - do not use in distributed code !DATAHSysLog_LogUnstamped (&4C884)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle
	R1 =	pointer to text to log
	R2 =	<priority=>SysLog_priorities>

Writes a message to a log file /without/ stamping it with the time and date. This should usually be required - use <SysLog_LogMessage> in preference to this.
DATASysLog_Indent (&4C885)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle

Increases the indent for the log. This is useful if you are writing long debugging routines which log according to the routine they are in. Use <SysLog_UnIndent> to reverse this.
DATASysLog_UnIndent (&4C886)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle

Decreases the indent for the log. This is useful if you are writing long debugging routines which log according to the routine they are in. Used to undo <SysLog_Indent>.
DATA�SysLog_NoIndent (&4C887)
#Parent SysLog_
=>	R0 =	pointer to log name, or session log handle

Resets the indentation for a log. This should be used when your program loads if it uses <SysLog_Indent> and <SysLog_UnIndent>.
DATAsSysLog_OpenSessionLog (&4C888)
#Parent SysLog_
=>	R0 =	pointer to log name
	R1 =	priority
<=	R0 =	session log handle, or 0 if the logs will be ignored

Opens a session log file with a particular priority. Session logs can be used to group particular events together so that they appear consecutively in the log file. Use <SysLog_CloseSessionLog> to end a session.DATA�SysLog_CloseSessionLog (&4C889)
#Parent SysLog_
=>	R0 =	session log handle

Closes a session log and appends it's data to the main log file.DATA`SysLog_LogData (&4C88A)
#Parent SysLog_
=>	R0 =	session log handle
	R1 =	<priority=>SysLog_priorities>
	R2 =	pointer to the data
	R3 =	number of bytes to log
	R4 =	base offset of block, or -1 for none.

Writes a data block to a log file in a similar form to *Dump. Attempts to log data blocks bigger than 10K will be faulted for your own good.
DATA	SysLog_LogFormatted (&4C88B)
#Parent SysLog_
=>	R0 =	session log handle
	R1 =	<format string=>.format>
	R2 =	<priority=>SysLog_priorities>
	R3 =	pointer block containing r0-r3, r8-r12 and r14
	R4-R7 =	parameters

Appends a 'formatted string' to the log using the registers specifed.

Usually you'd use code like this to call LogFormatted :
#Tab ,fCode,fCode,f/
   	STMFD	(sp)!,\{r0-r3,r8-r12,link\}	 
	ADR	r0,ourlogname			the log name
	ADD	r1,pc,#12			the format string
	MOV	r2,#124				the priority
	MOV	r3,sp				the block of registers
	SWI	"SysLog_LogFormatted"
	B	P%+(LENt$+8)ANDNOT3
	EQUS	t$+STRING$(4-(LENt$AND3),CHR$0)
	LDMFD	(sp)!,\{r0-r3,r8-r12,link\}
#fCode
#
#Subpage format
SysLog_LogFormatted format string
These strings are in a similar style to the C 'printf', or JFPatch 'REM' output format strings. The format string is a template for which the following sequences will be expanded :

Sequence	Expansion
#line
%%		a % character
%\<reg\>a	the network ordered ip address in register \<reg\>
%\<reg\>c	the ascii character in register \<reg\>
%\<reg\>d	the signed decimal number in register \<reg\>
%\<reg\>e	the internet error in register \<reg\>
%\<reg\>f	the filename of the handle in register \<reg\>
%\<reg\>p	the object pointed to by register \<reg\>
		(Note: This should be followed by one of the other qualifiers in this list)
%\<reg\>s	the ctrl terminated string pointed to by register \<reg\>
%\<reg\>x	the unsigned hex integer in register \<reg\>
%\<reg\>z	the zero terminated string pointed to by register \<reg\>
DATA�SysLog_ReadErrorMessage (&4C88C)
#Parent SysLog_
=>	R0 =	error number
<=	R0 =	pointer to error message

Decodes the errors returned by the stack into English strings.
DATA�SysLog_LogComplete (&4C88D)
#Parent SysLog_
=>	R0 =	pointer to log name

Flushes the named log and de-allocates the space set aside for it. Only call this if your application is about to begin a long idle state.
DATA�SysLog priorities
SysLog allows you to give each message in the log a 'priority level'. The user can set the level at which the messages stop being logged so that only certain information is actually logged.

The lower the priority the more important the message is, the higher the priority the more like debugging output it is. By default the logs start at level 124 and only messages below this are logged.
DIR$TPG���g�	��!Root�QG�����+O�Version�RG�����
�$dispatch�UG���j��uRequestURI WG����2O�InvalidateURI�WG����	�iprocessflags$XG����g	��returnflagsDATA�URI
#Parent !Root
#Prefix URI_
#Table Columns 4
<Version>
<Dispatch>
<RequestURI>
<InvalidateURI>
#EndTable

Message calls :
#Indent 4
#Table Columns 2
<4E380 URI_MStarted=>msg_4E380>
<4E381 URI_MDying=>msg_4E381>
<4E382 URI_MProcess=>msg_4E382>
<4E383 URI_MReturnResult=>msg_4E383>
<4E384 URI_MProcessAck=>msg_4E384>
#EndTable

#Indent
Service call :
#Indent 4
<A7 URI=>Service_A7>
DATA�URI_Version  (&4E380)
#Parent URI_
=>	R0 =	flags (currently reserved)
\<=	R0 =	current version * 100

This SWI is used to find the version of the URI module.
DATA$URI_Dispatch  (&4E381)
#Parent URI_
=>	R0 =	<flags=>.flags>
	R1 =	pointer to 0 terminated URI
	R2 =	source task handle if b0 set, or 0 otherwise
\<=	R0 =	<return flags=>.return>
	R2 =	task handle of URI handler
	R3 =	URI handle

This SWI is used by an application to check the validity of, or access a URI. The task will be informed of the result by wimp message <URI_MReturnResult=>Msg_4E383>, or service call <URI_ReturnResult=>Service_A7>.
#Subpage flags
URI_Dispatch flags
bit	meaning if set
#Line
0	inform caller of result (R2 valid)
1	just check (b0 must be set), if unset process
2	don't attempt external process startup
3-31	reserved (must be 0)

#Subpage return
URI_Dispatch return flags
bit	meaning if set
#Line
0	request was rejected, URI won't be dispatched
1-31	reserved (must be 0)
DATAuURI_RequestURI  (&4E382)
#Parent URI_
=>	R0 =	flags (currently reserved)
	R1 =	pointer to buffer for URI, or 0 to read size
	R2 =	length of buffer
	R3 =	URI handle

\<=	R2 =	offset of terminating null, or size if R1 was 0.

This SWI is used by an application or module to find the size of a the URI or to copy it into it's buffer and accept that it will handle it.
DATA�URI_InvalidateURI  (&4E383)
#Parent URI_
=>	R0 =	flags (currently reserved)
	R3 =	URI handle

This SWI is used to mark a URI as being invalid.
DATAiURI_Process flags
bit	meaning if set
#line
0	just check, don't process
1-31	reserved (must be 0)
DATA�URI_ReturnResult flags
bit	meaning if set
#Line
0	URI was not claimed (otherwise, it was claimed)
1-31	reserved (must be 0)
DIR$,,�XG����U�<3!RootDATA<WebFTP
#Table Columns 2
Open
Status
Close
#EndTable
DIR$,,<YG���ek�?3!RootDATA?WebGopher
#Table Columns 2
Open
Status
Close
#EndTable
DATA�@-� ��XR���� ��!R� �xR �2R �6R��0��@������!��a��h������@ ��8��a�q���!x26DIR$tttZG���]1��.3!Root�ZH����.463DecodeName�[G�������B3EncodeNameDATA.RGB
<RGB_DecodeName>
<RGB_EncodeName>
DATA6RGB_DecodeName  (&90680)
#Parent RGB_
=>	R0 =	pointer to colour name
<=	R1 =	&BBGGRR00 of colour, or -1 if colour could not be found in database

This SWI converts a colour name into a colour number. #rrggbb names will always work, but 'real' names require the database to be present in InetDBase:rgb.
DATABRGB_EncodeName (&90681)
#Parent RGB_
=>	R0 =	&BBGGRR00 of colour
	R1 =	<flags=>.flags>
	R2 =	pointer to 64 byte block (128 bytes if b0 set)
<=	R0 =	distance of returned colour from that requested, if b0 set
	R1 =	pointer to name, or -1 if could not be matched

This SWI converts a colour number into a colour name. The 'best match' rule uses the same weightings as the ColourTrans module (R=2, G=4, B=1).
#
#Subpage flags
RGB_EncodeName flags
Bit	Meaning if set
#line
0	find best match without resorting to #rrggbb, otherwise find exact match
others	reserved, must be 0
DIR$,,L^G������r3!rootDATArPPPdriver
#table columns 2
DCIVersion
Inquire
GetNetworkMTU
SetNetworkMTU
Transmit
Filter
Stats
#endtable
DIR$PP_G���*�%��3!Root�_G���Y�%��3TranslateDATA�MimeMap
#Parent !Root
#Prefix MimeMap_
<Translate>

Note: Versions of the MimeMap module prior to 0.05 use an invalid SWI base. Do *NOT* use or support the older versions.DATA�MimeMap_Translate  (&50B00)
#Parent MimeMap_
=>	R0 =	input <format=>.format>
	R1 =	filetype, or pointer to buffer
	R2 =	output <format=>.format>
	R3 =	output buffer, if needed

<=	R0-R2 preserved
	R3 =	result, or pointer to buffer

This SWI is used to converts between RISC OS file types, MIME content types and 'dot' extensions to file names. An error will be returned if the translation cannot be performed.
#Subpage format
MimeMap translation formats
Format	Name			Meaning
#Line;Wrap off
0	MMM_TYPE_RISCOS		Filetype as a number
1	MMM_TYPE_RISCOS_STRING	Filetype as string
2	MMM_TYPE_MIME		Content type as string
3	MMM_TYPE_DOT_EXTN	Extention as string
others	 			reserved
DATA;Internet SWIs manual
#Align Centre
{fh3}Internet SWIs manual{f}
#line
#Align Left
This manual is part of a collection comprising the main public domain programming reference. The other manuals in the series are :
#Indent 2
#Postfix :!Root
<OS>		The base operating system stuff
<Wimp>		The desktop part of the operating system
<InetSWIs>	Internet based SWIs
<InetSocket>	Internet socket calls
<MiscSWIs>	Miscellaneous SWIs
<VDU>		VDU commands
<Toolbox>	Toolbox (by Niel Bingham)
#Indent

For comments, suggestions and submissions for these, please mail Justin Fletcher <\<gerph@innocent.com\>=>#URL mailto:gerph@innocent.com> who is currently moderating the collection. The primary location for these manuals will be <http://freenet.barnet.ac.uk/manuals/=>#URL http://freenet.barnet.ac.uk/manuals/>.

Click <here=>.hist102> for history information.
#
#Subpage hist100
History for InetSWIs v1.00
#Align Right
{/}22 Sep 1997{/}
#Align Left
�	First release

<Next history=>.hist101>
#
#Subpage hist101
History for InetSWIs v1.01
#Align Right
{/}15 Nov 1997{/}
#Align Left
�	Added DNSResolver documents (Dave Thomas)
�	Fixed broken MimeMap module docs at Carl Elkins advice
�	Changed link to InetSocket rather than Inet
�	Updated URI handler documentation to release 8 of the specification. Moved the Services and Messages to this manual to try to keep relevant bits together.

<Previous history=>.hist100>	<Next history=>.hist102>
#
#Subpage hist102
History for InetSWIs v1.02
#Align Right
{/}22 Jan 1998{/}
#Align Left
�	Sections of DCI 4 specification added.

<Previous history=>.hist101>
DIR$��XiG����a��4E380�iG���g��4E381�jG���#	��4e382plG�����
��4e383HmG���4�	�!4e384DATA�Message_URI_MStarted  (&4E380)
#Parent Wimp:MSG_
+ 20	flags (currently reserved)

This message is broadcast to indicate that the URI handler has started.
DATA�Message_URI_MDying  (&4E381)
#Parent Wimp:Msg_
+ 20	flags (currently reserved)

This message is broadcast to indicate that the URI handler is about to die.

In Justin's implementation this call may not always be sent.
DATA�Message_URI_MProcess  (&4E382)
#Parent Wimp:Msg_
+ 20	<flags=>URI_processflags>
+ 24	pointer to URI string
+ 28	URI handle

This message is broadcast to indicate that the URI handler is attempting to process or check a URI.

If an application can process the URI it should acknowledge the message (with <URI_MProcessAck=>Msg_4e384>) and, if processing if requested, call <URI_RequestURI>.
DATA�Message_URI_MReturnResult  (&4E383)
#Parent MSG_
+ 20	<flags=>URI_returnflags>

This message is sent to an application to indicate that the URI handler's success or failure in processing the specified URL.
DATA!Message_URI_MProcessAck  (&4E384)
#Parent Wimp:Msg_
+ 20	<flags=>URI_processflags>
+ 24	pointer to URI string
+ 28	URI handle

This message is returned to indicate to the URI handler that a client can claim or process a given URI and to stop it being passed to other applications.
DIR$((�nH����À+�A7DIR$��0oG����+	�!root8qG���7���_0rG���s���_1�rG����7	��_2�tG����h	�m_3DATAService_URI (&A7)
#Parent OS:Service_
=>	R0 =	<reason code=>.reason>
	R1 =	&A7
	others dependant on reason code

<=	R1 =	0 if claimed; else preserved
	others dependant on reason code

This service is called by the <URI=>URI_> module to provide an interface for modules providing URI handling capabilities.
#
#subpage reason
Service_URI reason codes
Reason	Meaning
#Line
0	<Handler starting=>Service_A7_0>
1	<Handler dying=>Service_A7_1>
2	<Process or check URI=>Service_A7_2>
3	<Return a result=>Service_A7_3>
DATA�Service_URI 0  (&A7)
#Parent Service_A7
=>	R0 =	0 (reason code)
	R1 =	&A7 (service code)
	R2 =	flags (currently reserved)

This service is called when the URI handler is started. It's use is undefined.
DATA�Service_URI 1  (&A7)
#Parent Service_A7
=>	R0 =	1 (reason code)
	R1 =	&A7 (service code)
	R2 =	flags (currently reserved)

This service is called when the URI handler is about to die. It's use is undefined.
DATA�Service_URI 2  (&A7)
#Parent Service_A7
=>	R0 =	2 (reason code)
	R1 =	&A7 (service code)
	R2 =	<flags=>URI_processflags>
	R3 =	pointer to URI string
	R4 =	URI handle

<=	R1 =	0 if claimed

This service is called when the URI handler is attempting to process or check a URI. Modules should check the URI for validity and if recognised and processing was requested call <URI_RequestURI> and claim the service. If processing was not requested, then claiming the service is all that is required.
DATAmService_URI 3  (&A7)
#Parent Service_A7
=>	R0 =	3 (reason code)
	R1 =	&A7 (service code)
	R2 =	<flags=>URI_returnflags>
	R3 =	reserved (must be 0)
	R4 =	handle of URI

This service is called by the URI handler to return a result to the initiator of a <URI_Dispatch> call. Modules should record the handle from URI_Dispatch if they request a result message.
DIR$tt�vH���`�[�GetHostHxH�����[|!Root�xH���v�[�GetHostByNameDATA�Resolver_GetHost  (&46001)
#Parent Internet_
=>	R0 =	pointer to zero-terminated host name
<=	R0 =	pointer to error block if error, or <error number=>InetSocket:E>
	R1 =	pointer to <hostent=>Internet_hostent> structure if successful, or 0 otherwise

This SWI will either return a host entry if one is cached or begin a lookup if not. This call should be used for multi-tasking lookups.
DATA|Resolver
#Parent !Root
#Prefix Resolver_
#Table Columns 2
<GetHostByName>
<GetHost>
GetCache
CacheControl
#EndTable
DATA�Resolver_GetHostByName  (&46000)
#Parent Internet_
=>	R0 =	0
	R1 =	pointer to host name
<=	R0 =	pointer to error block if error, or netbsd <error number=>Inet:E>
	R1 =	pointer to <hostent=>Internet_hostent> structure, or 0 if not found

Returns a hostent block for the requested host name. This hostent block will remain static for 24 hours after which it will expire and no longer be valid.
00000000  48 45 4c 50 28 00 00 00  fd 00 00 00 ff ff ff ff  |HELP(...........|
00000010  2c 00 00 00 00 fd ff ff  00 00 00 00 cc 02 00 00  |,...............|
00000020  00 01 00 00 00 00 00 00  24 00 00 00 44 49 52 24  |........$...DIR$|
00000030  d4 02 00 00 d4 02 00 00  00 03 00 00 48 fd ff ff  |............H...|
00000040  c1 79 77 2b 4a 01 00 00  13 00 00 00 00 00 00 00  |.yw+J...........|
00000050  21 52 6f 6f 74 00 00 00  4c 04 00 00 48 fd ff ff  |!Root...L...H...|
00000060  5c ab 80 2b 80 03 00 00  13 01 00 00 00 00 00 00  |\..+............|
00000070  44 4e 53 52 65 73 6f 6c  76 65 72 5f 00 00 00 00  |DNSResolver_....|
00000080  f0 18 00 00 48 fd ff ff  f4 ae 80 2b 2c 00 00 00  |....H......+,...|
00000090  13 01 00 00 00 00 00 00  45 63 5f 00 84 19 00 00  |........Ec_.....|
000000a0  48 fd ff ff 4e af 80 2b  98 00 00 00 13 01 00 00  |H...N..+........|
000000b0  00 00 00 00 48 54 4d 4c  44 65 63 6f 64 65 5f 00  |....HTMLDecode_.|
000000c0  10 23 00 00 48 fd ff ff  ab b0 80 2b 4c 00 00 00  |.#..H......+L...|
000000d0  13 01 00 00 00 00 00 00  48 54 54 50 5f 00 00 00  |........HTTP_...|
000000e0  e0 25 00 00 48 fd ff ff  81 b1 80 2b 60 01 00 00  |.%..H......+`...|
000000f0  13 01 00 00 00 00 00 00  49 6e 74 65 72 6e 65 74  |........Internet|
00000100  5f 00 00 00 28 35 00 00  48 fd ff ff 5e b5 80 2b  |_...(5..H...^..+|
00000110  2c 00 00 00 13 01 00 00  00 00 00 00 4b 41 39 51  |,...........KA9Q|
00000120  41 55 4e 5f 00 00 00 00  08 36 00 00 48 fd ff ff  |AUN_.....6..H...|
00000130  d3 b5 80 2b 2c 00 00 00  13 01 00 00 00 00 00 00  |...+,...........|
00000140  4d 62 75 66 5f 00 00 00  ac 36 00 00 48 fd ff ff  |Mbuf_....6..H...|
00000150  47 b6 80 2b 2c 00 00 00  13 01 00 00 00 00 00 00  |G..+,...........|
00000160  53 4c 49 50 64 72 69 76  65 72 5f 00 5c 37 00 00  |SLIPdriver_.\7..|
00000170  48 fd ff ff a6 b6 80 2b  58 02 00 00 13 01 00 00  |H......+X.......|
00000180  00 00 00 00 53 79 73 4c  6f 67 5f 00 4c 4f 00 00  |....SysLog_.LO..|
00000190  48 fd ff ff 9a bb 80 2b  08 01 00 00 13 01 00 00  |H......+........|
000001a0  00 00 00 00 55 52 49 5f  00 00 00 00 a8 58 00 00  |....URI_.....X..|
000001b0  48 fd ff ff 30 be 80 2b  2c 00 00 00 13 01 00 00  |H...0..+,.......|
000001c0  00 00 00 00 57 65 62 46  54 50 5f 00 10 59 00 00  |....WebFTP_..Y..|
000001d0  48 fd ff ff b1 be 80 2b  2c 00 00 00 13 01 00 00  |H......+,.......|
000001e0  00 00 00 00 57 65 62 47  6f 70 68 65 72 5f 00 00  |....WebGopher_..|
000001f0  7c 59 00 00 47 fc ff ff  c9 28 47 d4 84 00 00 00  ||Y..G....(G.....|
00000200  33 00 00 00 00 00 00 00  21 50 72 65 00 00 00 00  |3.......!Pre....|
00000210  00 5a 00 00 48 fd ff ff  2e bf 80 2b 74 00 00 00  |.Z..H......+t...|
00000220  13 01 00 00 00 00 00 00  52 47 42 5f 00 00 00 00  |........RGB_....|
00000230  20 5e 00 00 48 fd ff ff  5e c0 80 2b 2c 00 00 00  | ^..H...^..+,...|
00000240  13 01 00 00 00 00 00 00  50 50 50 64 72 69 76 65  |........PPPdrive|
00000250  72 5f 00 00 c0 5e 00 00  48 fd ff ff c4 c0 80 2b  |r_...^..H......+|
00000260  50 00 00 00 13 01 00 00  00 00 00 00 4d 69 6d 65  |P...........Mime|
00000270  4d 61 70 5f 00 00 00 00  70 62 00 00 48 fd ff ff  |Map_....pb..H...|
00000280  ed e8 7f 2b 3b 06 00 00  03 00 00 00 00 00 00 00  |...+;...........|
00000290  61 62 6f 75 74 00 00 00  ac 68 00 00 48 fd ff ff  |about....h..H...|
000002a0  bc c1 80 2b ac 00 00 00  13 01 00 00 00 00 00 00  |...+............|
000002b0  4d 73 67 5f 00 00 00 00  6c 6e 00 00 48 fd ff ff  |Msg_....ln..H...|
000002c0  8a c3 80 2b 28 00 00 00  13 01 00 00 00 00 00 00  |...+(...........|
000002d0  53 65 72 76 69 63 65 5f  00 00 00 00 48 76 00 00  |Service_....Hv..|
000002e0  48 fd ff ff 3a c5 80 2b  74 00 00 00 13 01 00 00  |H...:..+t.......|
000002f0  00 00 00 00 52 65 73 6f  6c 76 65 72 5f 00 00 00  |....Resolver_...|
00000300  44 41 54 41 4a 01 00 00  49 6e 74 65 72 6e 65 74  |DATAJ...Internet|
00000310  20 53 57 49 73 0a 23 50  61 72 65 6e 74 20 53 74  | SWIs.#Parent St|
00000320  72 6f 6e 67 48 65 6c 70  3a 21 4d 65 6e 75 0a 23  |rongHelp:!Menu.#|
00000330  50 6f 73 74 66 69 78 20  5f 0a 23 54 61 62 6c 65  |Postfix _.#Table|
00000340  20 43 6f 6c 75 6d 6e 73  20 34 0a 3c 44 4e 53 52  | Columns 4.<DNSR|
00000350  65 73 6f 6c 76 65 72 3e  0a 3c 45 63 3e 0a 3c 48  |esolver>.<Ec>.<H|
00000360  54 4d 4c 44 65 63 6f 64  65 3e 0a 3c 48 54 54 50  |TMLDecode>.<HTTP|
00000370  3e 0a 3c 49 6e 74 65 72  6e 65 74 3e 0a 3c 4b 41  |>.<Internet>.<KA|
00000380  39 51 41 55 4e 3e 0a 3c  4d 62 75 66 3e 0a 3c 4d  |9QAUN>.<Mbuf>.<M|
00000390  69 6d 65 4d 61 70 3e 0a  3c 50 50 50 64 72 69 76  |imeMap>.<PPPdriv|
000003a0  65 72 3e 0a 3c 52 65 73  6f 6c 76 65 72 3e 0a 3c  |er>.<Resolver>.<|
000003b0  52 47 42 3e 0a 3c 53 4c  49 50 64 72 69 76 65 72  |RGB>.<SLIPdriver|
000003c0  3e 0a 3c 53 6f 63 6b 65  74 3d 3e 49 6e 65 74 53  |>.<Socket=>InetS|
000003d0  6f 63 6b 65 74 3a 21 52  6f 6f 74 3e 0a 3c 53 79  |ocket:!Root>.<Sy|
000003e0  73 4c 6f 67 3e 0a 3c 55  52 49 3e 0a 3c 57 65 62  |sLog>.<URI>.<Web|
000003f0  46 54 50 3e 0a 3c 57 65  62 47 6f 70 68 65 72 3e  |FTP>.<WebGopher>|
00000400  0a 23 45 6e 64 54 61 62  6c 65 0a 23 4c 69 6e 65  |.#EndTable.#Line|
00000410  0a 23 61 6c 69 67 6e 20  63 65 6e 74 72 65 0a 7b  |.#align centre.{|
00000420  2f 7d 3c 49 6e 74 65 72  6e 65 74 20 53 57 49 73  |/}<Internet SWIs|
00000430  20 6d 61 6e 75 61 6c 3d  3e 61 62 6f 75 74 3e 2c  | manual=>about>,|
00000440  20 76 31 2e 30 32 7b 2f  7d 0a 00 00 44 49 52 24  | v1.02{/}...DIR$|
00000450  80 03 00 00 80 03 00 00  cc 07 00 00 47 fd ff ff  |............G...|
00000460  0b 3c 59 d0 87 01 00 00  13 00 00 00 00 00 00 00  |.<Y.............|
00000470  21 52 6f 6f 74 00 00 00  54 09 00 00 47 ff ff ff  |!Root...T...G...|
00000480  fd da 58 d0 6b 00 00 00  13 00 00 00 00 00 00 00  |..X.k...........|
00000490  43 61 63 68 65 46 6c 75  73 68 00 00 c0 09 00 00  |CacheFlush......|
000004a0  47 ff ff ff ea d6 96 e9  aa 00 00 00 13 00 00 00  |G...............|
000004b0  00 00 00 00 43 68 65 63  6b 00 00 00 6c 0a 00 00  |....Check...l...|
000004c0  47 ff ff ff 6c dd 96 e9  84 00 00 00 13 00 00 00  |G...l...........|
000004d0  00 00 00 00 44 69 73 70  6f 73 65 00 f0 0a 00 00  |....Dispose.....|
000004e0  47 ff ff ff 66 49 97 e9  fd 00 00 00 13 00 00 00  |G...fI..........|
000004f0  00 00 00 00 44 6e 43 6f  6d 70 00 00 f0 0b 00 00  |....DnComp......|
00000500  47 ff ff ff ac 44 97 e9  e5 00 00 00 13 00 00 00  |G....D..........|
00000510  00 00 00 00 44 6e 45 78  70 61 6e 64 00 00 00 00  |....DnExpand....|
00000520  d8 0c 00 00 47 ff ff ff  77 3e 97 e9 c1 00 00 00  |....G...w>......|
00000530  13 00 00 00 00 00 00 00  47 65 74 41 6e 73 77 65  |........GetAnswe|
00000540  72 00 00 00 9c 0d 00 00  47 ff ff ff 66 3c 97 e9  |r.......G...f<..|
00000550  d2 00 00 00 13 00 00 00  00 00 00 00 47 65 74 41  |............GetA|
00000560  6e 73 77 65 72 52 61 77  00 00 00 00 70 0e 00 00  |nswerRaw....p...|
00000570  47 ff ff ff f8 37 97 e9  f7 00 00 00 13 00 00 00  |G....7..........|
00000580  00 00 00 00 47 65 74 48  6f 73 74 42 79 41 64 64  |....GetHostByAdd|
00000590  72 00 00 00 68 0f 00 00  47 ff ff ff 45 32 97 e9  |r...h...G...E2..|
000005a0  c6 00 00 00 13 00 00 00  00 00 00 00 47 65 74 48  |............GetH|
000005b0  6f 73 74 42 79 4e 61 6d  65 00 00 00 30 10 00 00  |ostByName...0...|
000005c0  47 ff ff ff d2 2d 97 e9  86 00 00 00 13 00 00 00  |G....-..........|
000005d0  00 00 00 00 47 65 74 48  6f 73 74 4e 61 6d 65 00  |....GetHostName.|
000005e0  b8 10 00 00 47 ff ff ff  f3 2b 97 e9 a2 00 00 00  |....G....+......|
000005f0  13 00 00 00 00 00 00 00  47 65 74 4d 58 51 75 65  |........GetMXQue|
00000600  72 79 41 6e 73 77 65 72  00 00 00 00 5c 11 00 00  |ryAnswer....\...|
00000610  47 ff ff ff 20 2a 97 e9  a2 00 00 00 13 00 00 00  |G... *..........|
00000620  00 00 00 00 47 65 74 4e  53 51 75 65 72 79 41 6e  |....GetNSQueryAn|
00000630  73 77 65 72 00 00 00 00  00 12 00 00 47 ff ff ff  |swer........G...|
00000640  37 28 97 e9 a5 00 00 00  13 00 00 00 00 00 00 00  |7(..............|
00000650  47 65 74 53 4f 41 51 75  65 72 79 41 6e 73 77 65  |GetSOAQueryAnswe|
00000660  72 00 00 00 a8 12 00 00  47 ff ff ff f8 24 97 e9  |r.......G....$..|
00000670  bb 00 00 00 13 00 00 00  00 00 00 00 4d 54 47 65  |............MTGe|
00000680  74 48 6f 73 74 42 79 41  64 64 72 00 64 13 00 00  |tHostByAddr.d...|
00000690  47 ff ff ff 11 1e 97 e9  8c 00 00 00 13 00 00 00  |G...............|
000006a0  00 00 00 00 4d 54 47 65  74 48 6f 73 74 42 79 4e  |....MTGetHostByN|
000006b0  61 6d 65 00 f0 13 00 00  47 ff ff ff ba 1a 97 e9  |ame.....G.......|
000006c0  33 01 00 00 13 00 00 00  00 00 00 00 4e 61 6d 65  |3...........Name|
000006d0  53 65 72 76 65 72 73 00  24 15 00 00 47 ff ff ff  |Servers.$...G...|
000006e0  36 e1 58 d0 4c 00 00 00  13 00 00 00 00 00 00 00  |6.X.L...........|
000006f0  52 65 73 44 65 62 75 67  00 00 00 00 70 15 00 00  |ResDebug....p...|
00000700  47 ff ff ff 32 17 97 e9  e9 00 00 00 13 00 00 00  |G...2...........|
00000710  00 00 00 00 52 65 73 51  75 65 72 79 00 00 00 00  |....ResQuery....|
00000720  5c 16 00 00 47 ff ff ff  90 e2 58 d0 4d 00 00 00  |\...G.....X.M...|
00000730  13 00 00 00 00 00 00 00  52 65 73 53 74 61 74 75  |........ResStatu|
00000740  73 00 00 00 ac 16 00 00  47 ff ff ff e1 e1 58 d0  |s.......G.....X.|
00000750  4d 00 00 00 13 00 00 00  00 00 00 00 52 65 73 55  |M...........ResU|
00000760  73 65 56 43 00 00 00 00  fc 16 00 00 47 ff ff ff  |seVC........G...|
00000770  8f 08 97 e9 cb 00 00 00  13 00 00 00 00 00 00 00  |................|
00000780  53 68 6f 77 41 6e 73 77  65 72 00 00 c8 17 00 00  |ShowAnswer......|
00000790  47 ff ff ff 28 fc 96 e9  d4 00 00 00 13 00 00 00  |G...(...........|
000007a0  00 00 00 00 53 74 61 72  74 00 00 00 9c 18 00 00  |....Start.......|
000007b0  47 ff ff ff 31 f7 96 e9  51 00 00 00 13 00 00 00  |G...1...Q.......|
000007c0  00 00 00 00 56 65 72 73  69 6f 6e 00 44 41 54 41  |....Version.DATA|
000007d0  87 01 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 20  |....DNSResolver |
000007e0  28 76 65 72 73 69 6f 6e  20 31 2e 30 38 29 0a 23  |(version 1.08).#|
000007f0  50 72 65 66 69 78 20 44  4e 53 52 65 73 6f 6c 76  |Prefix DNSResolv|
00000800  65 72 5f 0a 23 54 61 62  6c 65 20 43 6f 6c 75 6d  |er_.#Table Colum|
00000810  6e 73 20 33 0a 3c 43 61  63 68 65 46 6c 75 73 68  |ns 3.<CacheFlush|
00000820  3e 0a 3c 43 68 65 63 6b  3e 0a 3c 44 69 73 70 6f  |>.<Check>.<Dispo|
00000830  73 65 3e 0a 3c 44 6e 43  6f 6d 70 3e 0a 3c 44 6e  |se>.<DnComp>.<Dn|
00000840  45 78 70 61 6e 64 3e 0a  3c 47 65 74 41 6e 73 77  |Expand>.<GetAnsw|
00000850  65 72 3e 0a 3c 47 65 74  41 6e 73 77 65 72 52 61  |er>.<GetAnswerRa|
00000860  77 3e 0a 3c 47 65 74 48  6f 73 74 42 79 41 64 64  |w>.<GetHostByAdd|
00000870  72 3e 0a 3c 47 65 74 48  6f 73 74 42 79 4e 61 6d  |r>.<GetHostByNam|
00000880  65 3e 0a 3c 47 65 74 48  6f 73 74 4e 61 6d 65 3e  |e>.<GetHostName>|
00000890  0a 3c 47 65 74 4d 58 51  75 65 72 79 41 6e 73 77  |.<GetMXQueryAnsw|
000008a0  65 72 3e 0a 3c 47 65 74  4e 53 51 75 65 72 79 41  |er>.<GetNSQueryA|
000008b0  6e 73 77 65 72 3e 0a 3c  47 65 74 53 4f 41 51 75  |nswer>.<GetSOAQu|
000008c0  65 72 79 41 6e 73 77 65  72 3e 0a 3c 4d 54 47 65  |eryAnswer>.<MTGe|
000008d0  74 48 6f 73 74 42 79 41  64 64 72 3e 0a 3c 4d 54  |tHostByAddr>.<MT|
000008e0  47 65 74 48 6f 73 74 42  79 4e 61 6d 65 3e 0a 3c  |GetHostByName>.<|
000008f0  4e 61 6d 65 53 65 72 76  65 72 73 3e 0a 3c 52 65  |NameServers>.<Re|
00000900  73 44 65 62 75 67 3e 0a  3c 52 65 73 51 75 65 72  |sDebug>.<ResQuer|
00000910  79 3e 0a 3c 52 65 73 53  74 61 74 75 73 3e 0a 3c  |y>.<ResStatus>.<|
00000920  52 65 73 55 73 65 56 43  3e 0a 3c 53 68 6f 77 41  |ResUseVC>.<ShowA|
00000930  6e 73 77 65 72 3e 0a 3c  53 74 61 72 74 3e 0a 3c  |nswer>.<Start>.<|
00000940  56 65 72 73 69 6f 6e 3e  0a 23 45 6e 64 54 61 62  |Version>.#EndTab|
00000950  6c 65 0a 00 44 41 54 41  6b 00 00 00 44 4e 53 52  |le..DATAk...DNSR|
00000960  65 73 6f 6c 76 65 72 5f  43 61 63 68 65 46 6c 75  |esolver_CacheFlu|
00000970  73 68 20 20 28 26 34 36  30 32 34 29 0a 23 50 61  |sh  (&46024).#Pa|
00000980  72 65 6e 74 20 44 4e 53  52 65 73 6f 6c 76 65 72  |rent DNSResolver|
00000990  5f 0a 46 6c 75 73 68 20  65 76 65 72 79 74 68 69  |_.Flush everythi|
000009a0  6e 67 20 66 72 6f 6d 20  74 68 65 20 44 4e 53 20  |ng from the DNS |
000009b0  72 65 73 6f 6c 76 65 72  20 63 61 63 68 65 2e 00  |resolver cache..|
000009c0  44 41 54 41 aa 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
000009d0  76 65 72 5f 43 68 65 63  6b 20 20 28 26 34 36 30  |ver_Check  (&460|
000009e0  31 31 29 0a 23 50 61 72  65 6e 74 20 44 4e 53 52  |11).#Parent DNSR|
000009f0  65 73 6f 6c 76 65 72 5f  0a 3d 3e 09 52 30 20 3d  |esolver_.=>.R0 =|
00000a00  09 71 75 65 72 79 20 28  70 6f 69 6e 74 65 72 20  |.query (pointer |
00000a10  74 6f 20 64 6e 73 71 75  65 72 79 29 0a 3c 3d 09  |to dnsquery).<=.|
00000a20  52 30 20 3d 09 73 74 61  74 75 73 20 28 64 6e 73  |R0 =.status (dns|
00000a30  5f 73 74 61 74 75 73 29  0a 0a 43 68 65 63 6b 73  |_status)..Checks|
00000a40  20 74 68 65 20 70 72 6f  67 72 65 73 73 20 6f 66  | the progress of|
00000a50  20 61 20 6d 75 6c 74 69  74 61 73 6b 69 6e 67 20  | a multitasking |
00000a60  44 4e 53 20 71 75 65 72  79 2e 00 00 44 41 54 41  |DNS query...DATA|
00000a70  84 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |....DNSResolver_|
00000a80  44 69 73 70 6f 73 65 20  20 28 26 34 36 30 31 32  |Dispose  (&46012|
00000a90  29 0a 23 50 61 72 65 6e  74 20 44 4e 53 52 65 73  |).#Parent DNSRes|
00000aa0  6f 6c 76 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 71  |olver_.=>.R0 =.q|
00000ab0  75 65 72 79 2d 68 61 6e  64 6c 65 20 0a 0a 54 65  |uery-handle ..Te|
00000ac0  72 6d 69 6e 61 74 65 73  20 26 20 64 69 73 70 6f  |rminates & dispo|
00000ad0  73 65 73 20 6f 66 20 61  20 6d 75 6c 74 69 74 61  |ses of a multita|
00000ae0  73 6b 69 6e 67 20 44 4e  53 20 71 75 65 72 79 2e  |sking DNS query.|
00000af0  44 41 54 41 fd 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00000b00  76 65 72 5f 44 6e 43 6f  6d 70 20 20 28 26 34 36  |ver_DnComp  (&46|
00000b10  30 31 46 29 0a 23 50 61  72 65 6e 74 20 44 4e 53  |01F).#Parent DNS|
00000b20  52 65 73 6f 6c 76 65 72  5f 0a 3d 3e 09 52 30 20  |Resolver_.=>.R0 |
00000b30  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 65 78 70  |=.pointer to exp|
00000b40  5f 64 6e 20 28 53 74 72  69 6e 67 29 0a 09 52 31  |_dn (String)..R1|
00000b50  20 3d 09 63 6f 6d 70 5f  64 6e 20 28 70 6f 69 6e  | =.comp_dn (poin|
00000b60  74 65 72 20 74 6f 20 43  68 61 72 29 0a 09 52 32  |ter to Char)..R2|
00000b70  20 3d 09 64 6e 5f 70 74  72 73 20 28 70 6f 69 6e  | =.dn_ptrs (poin|
00000b80  74 65 72 20 74 6f 20 70  6f 69 6e 74 65 72 20 74  |ter to pointer t|
00000b90  6f 20 43 68 61 72 29 0a  09 52 33 20 3d 09 6c 61  |o Char)..R3 =.la|
00000ba0  73 74 64 6e 70 74 72 20  28 70 6f 69 6e 74 65 72  |stdnptr (pointer|
00000bb0  20 74 6f 20 70 6f 69 6e  74 65 72 20 74 6f 20 43  | to pointer to C|
00000bc0  68 61 72 29 0a 09 52 34  20 3d 09 6c 65 6e 67 74  |har)..R4 =.lengt|
00000bd0  68 20 28 49 6e 74 29 0a  3c 3d 09 52 30 20 3d 09  |h (Int).<=.R0 =.|
00000be0  73 74 61 74 75 73 20 28  49 6e 74 29 0a 00 00 00  |status (Int)....|
00000bf0  44 41 54 41 e5 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00000c00  76 65 72 5f 44 6e 45 78  70 61 6e 64 20 20 28 26  |ver_DnExpand  (&|
00000c10  34 36 30 32 30 29 0a 23  50 61 72 65 6e 74 20 44  |46020).#Parent D|
00000c20  4e 53 52 65 73 6f 6c 76  65 72 5f 0a 3d 3e 09 52  |NSResolver_.=>.R|
00000c30  30 20 3d 20 70 6f 69 6e  74 65 72 20 74 6f 20 6d  |0 = pointer to m|
00000c40  73 67 20 28 53 74 72 69  6e 67 29 0a 09 52 31 20  |sg (String)..R1 |
00000c50  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 65 6f 6d  |= pointer to eom|
00000c60  73 67 20 28 53 74 72 69  6e 67 29 0a 09 52 32 20  |sg (String)..R2 |
00000c70  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 63 6f 6d  |= pointer to com|
00000c80  70 5f 64 6e 20 28 53 74  72 69 6e 67 29 0a 09 52  |p_dn (String)..R|
00000c90  33 20 3d 20 65 78 70 5f  64 6e 20 28 70 6f 69 6e  |3 = exp_dn (poin|
00000ca0  74 65 72 20 74 6f 20 43  68 61 72 29 0a 09 52 34  |ter to Char)..R4|
00000cb0  20 3d 20 6c 65 6e 67 74  68 20 28 49 6e 74 29 0a  | = length (Int).|
00000cc0  3c 3d 09 52 30 20 3d 20  73 74 61 74 75 73 20 28  |<=.R0 = status (|
00000cd0  49 6e 74 29 0a 00 00 00  44 41 54 41 c1 00 00 00  |Int)....DATA....|
00000ce0  44 4e 53 52 65 73 6f 6c  76 65 72 5f 47 65 74 41  |DNSResolver_GetA|
00000cf0  6e 73 77 65 72 20 20 28  26 34 36 30 31 33 29 0a  |nswer  (&46013).|
00000d00  23 50 61 72 65 6e 74 20  44 4e 53 52 65 73 6f 6c  |#Parent DNSResol|
00000d10  76 65 72 5f 0a 3d 3e 09  52 30 20 3d 09 71 75 65  |ver_.=>.R0 =.que|
00000d20  72 79 20 28 70 6f 69 6e  74 65 72 20 74 6f 20 64  |ry (pointer to d|
00000d30  6e 73 71 75 65 72 79 29  0a 3c 3d 09 52 30 20 3d  |nsquery).<=.R0 =|
00000d40  09 68 6f 73 74 20 28 70  6f 69 6e 74 65 72 20 74  |.host (pointer t|
00000d50  6f 20 68 6f 73 74 65 6e  74 29 0a 0a 52 65 74 72  |o hostent)..Retr|
00000d60  69 65 76 65 73 20 74 68  65 20 44 4e 53 20 61 6e  |ieves the DNS an|
00000d70  73 77 65 72 20 61 73 20  61 20 68 6f 73 74 65 6e  |swer as a hosten|
00000d80  74 20 73 74 72 75 63 74  75 72 65 20 69 66 20 61  |t structure if a|
00000d90  76 61 69 6c 61 62 6c 65  2e 00 00 00 44 41 54 41  |vailable....DATA|
00000da0  d2 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |....DNSResolver_|
00000db0  47 65 74 41 6e 73 77 65  72 52 61 77 20 20 28 26  |GetAnswerRaw  (&|
00000dc0  34 36 30 31 34 29 0a 23  50 61 72 65 6e 74 20 44  |46014).#Parent D|
00000dd0  4e 53 52 65 73 6f 6c 76  65 72 5f 0a 3d 3e 09 52  |NSResolver_.=>.R|
00000de0  30 20 3d 09 71 75 65 72  79 20 28 70 6f 69 6e 74  |0 =.query (point|
00000df0  65 72 20 74 6f 20 64 6e  73 71 75 65 72 79 29 0a  |er to dnsquery).|
00000e00  3c 3d 09 52 30 20 3d 09  72 65 73 75 6c 74 20 28  |<=.R0 =.result (|
00000e10  70 6f 69 6e 74 65 72 20  74 6f 20 64 61 74 61 29  |pointer to data)|
00000e20  0a 09 52 31 20 3d 09 72  65 73 70 6c 65 6e 20 28  |..R1 =.resplen (|
00000e30  49 6e 74 29 0a 0a 52 65  74 72 69 65 76 65 73 20  |Int)..Retrieves |
00000e40  74 68 65 20 63 6f 6d 70  6c 65 74 65 20 75 6e 70  |the complete unp|
00000e50  61 72 73 65 64 20 44 4e  53 20 61 6e 73 77 65 72  |arsed DNS answer|
00000e60  20 69 66 20 61 76 61 69  6c 61 62 6c 65 2e 00 00  | if available...|
00000e70  44 41 54 41 f7 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00000e80  76 65 72 5f 47 65 74 48  6f 73 74 42 79 41 64 64  |ver_GetHostByAdd|
00000e90  72 20 20 28 26 34 36 30  30 31 29 0a 23 50 61 72  |r  (&46001).#Par|
00000ea0  65 6e 74 20 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |ent DNSResolver_|
00000eb0  0a 3d 3e 09 52 30 20 3d  09 26 30 0a 09 52 31 20  |.=>.R0 =.&0..R1 |
00000ec0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 61 64 64  |=.pointer to add|
00000ed0  72 65 73 73 20 28 64 61  74 61 29 0a 09 52 32 20  |ress (data)..R2 |
00000ee0  3d 09 61 64 64 72 65 73  73 5f 73 69 7a 65 20 28  |=.address_size (|
00000ef0  49 6e 74 29 0a 09 52 33  20 3d 09 61 64 64 72 65  |Int)..R3 =.addre|
00000f00  73 73 5f 74 79 70 65 20  28 49 6e 74 29 0a 3c 3d  |ss_type (Int).<=|
00000f10  09 52 31 20 3d 09 68 6f  73 74 20 28 70 6f 69 6e  |.R1 =.host (poin|
00000f20  74 65 72 20 74 6f 20 68  6f 73 74 65 6e 74 29 0a  |ter to hostent).|
00000f30  0a 4c 6f 6f 6b 73 20 75  70 20 74 68 65 20 68 6f  |.Looks up the ho|
00000f40  73 74 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 61  |st information a|
00000f50  73 20 66 6f 72 20 67 65  74 68 6f 73 74 62 79 61  |s for gethostbya|
00000f60  64 64 72 28 33 29 2e 00  44 41 54 41 c6 00 00 00  |ddr(3)..DATA....|
00000f70  44 4e 53 52 65 73 6f 6c  76 65 72 5f 47 65 74 48  |DNSResolver_GetH|
00000f80  6f 73 74 42 79 4e 61 6d  65 20 20 28 26 34 36 30  |ostByName  (&460|
00000f90  30 30 29 0a 23 50 61 72  65 6e 74 20 44 4e 53 52  |00).#Parent DNSR|
00000fa0  65 73 6f 6c 76 65 72 5f  0a 3d 3e 09 52 30 20 3d  |esolver_.=>.R0 =|
00000fb0  09 26 30 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |.&0..R1 =.pointe|
00000fc0  72 20 74 6f 20 68 6f 73  74 6e 61 6d 65 20 28 43  |r to hostname (C|
00000fd0  68 61 72 29 0a 3c 3d 09  52 31 20 3d 09 68 6f 73  |har).<=.R1 =.hos|
00000fe0  74 20 28 70 6f 69 6e 74  65 72 20 74 6f 20 68 6f  |t (pointer to ho|
00000ff0  73 74 65 6e 74 29 0a 0a  4c 6f 6f 6b 73 20 75 70  |stent)..Looks up|
00001000  20 74 68 65 20 68 6f 73  74 20 69 6e 66 6f 72 6d  | the host inform|
00001010  61 74 69 6f 6e 20 61 73  20 66 6f 72 20 67 65 74  |ation as for get|
00001020  68 6f 73 74 62 79 6e 61  6d 65 28 33 29 2e 00 00  |hostbyname(3)...|
00001030  44 41 54 41 86 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00001040  76 65 72 5f 47 65 74 48  6f 73 74 4e 61 6d 65 20  |ver_GetHostName |
00001050  20 28 26 34 36 30 32 31  29 0a 23 50 61 72 65 6e  | (&46021).#Paren|
00001060  74 20 44 4e 53 52 65 73  6f 6c 76 65 72 5f 0a 3d  |t DNSResolver_.=|
00001070  3e 09 52 30 20 3d 09 62  75 66 66 65 72 20 28 70  |>.R0 =.buffer (p|
00001080  6f 69 6e 74 65 72 20 74  6f 20 43 68 61 72 29 0a  |ointer to Char).|
00001090  09 52 31 20 3d 09 73 69  7a 65 20 28 49 6e 74 29  |.R1 =.size (Int)|
000010a0  0a 3c 3d 09 52 30 20 3d  09 73 74 61 74 75 73 20  |.<=.R0 =.status |
000010b0  28 49 6e 74 29 0a 00 00  44 41 54 41 a2 00 00 00  |(Int)...DATA....|
000010c0  44 4e 53 52 65 73 6f 6c  76 65 72 5f 47 65 74 4d  |DNSResolver_GetM|
000010d0  58 51 75 65 72 79 41 6e  73 77 65 72 20 20 28 26  |XQueryAnswer  (&|
000010e0  34 36 30 31 35 29 0a 23  50 61 72 65 6e 74 20 44  |46015).#Parent D|
000010f0  4e 53 52 65 73 6f 6c 76  65 72 5f 0a 3d 3e 09 52  |NSResolver_.=>.R|
00001100  30 20 3d 09 71 75 65 72  79 20 28 70 6f 69 6e 74  |0 =.query (point|
00001110  65 72 20 74 6f 20 64 6e  73 71 75 65 72 79 29 0a  |er to dnsquery).|
00001120  3c 3d 09 52 30 20 3d 09  68 6f 73 74 20 28 70 6f  |<=.R0 =.host (po|
00001130  69 6e 74 65 72 20 74 6f  20 64 6e 73 71 75 65 72  |inter to dnsquer|
00001140  79 5f 6d 78 29 0a 09 52  31 20 3d 09 6d 78 63 6f  |y_mx)..R1 =.mxco|
00001150  75 6e 74 20 28 49 6e 74  29 0a 00 00 44 41 54 41  |unt (Int)...DATA|
00001160  a2 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |....DNSResolver_|
00001170  47 65 74 4e 53 51 75 65  72 79 41 6e 73 77 65 72  |GetNSQueryAnswer|
00001180  20 20 28 26 34 36 30 31  36 29 0a 23 50 61 72 65  |  (&46016).#Pare|
00001190  6e 74 20 44 4e 53 52 65  73 6f 6c 76 65 72 5f 0a  |nt DNSResolver_.|
000011a0  3d 3e 09 52 30 20 3d 09  71 75 65 72 79 20 28 70  |=>.R0 =.query (p|
000011b0  6f 69 6e 74 65 72 20 74  6f 20 64 6e 73 71 75 65  |ointer to dnsque|
000011c0  72 79 29 0a 3c 3d 09 52  30 20 3d 09 68 6f 73 74  |ry).<=.R0 =.host|
000011d0  20 28 70 6f 69 6e 74 65  72 20 74 6f 20 64 6e 73  | (pointer to dns|
000011e0  71 75 65 72 79 5f 6e 73  29 0a 09 52 31 20 3d 09  |query_ns)..R1 =.|
000011f0  6e 73 63 6f 75 6e 74 20  28 49 6e 74 29 0a 00 00  |nscount (Int)...|
00001200  44 41 54 41 a5 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00001210  76 65 72 5f 47 65 74 53  4f 41 51 75 65 72 79 41  |ver_GetSOAQueryA|
00001220  6e 73 77 65 72 20 20 28  26 34 36 30 31 37 29 0a  |nswer  (&46017).|
00001230  23 50 61 72 65 6e 74 20  44 4e 53 52 65 73 6f 6c  |#Parent DNSResol|
00001240  76 65 72 5f 0a 3d 3e 09  52 30 20 3d 09 71 75 65  |ver_.=>.R0 =.que|
00001250  72 79 20 28 70 6f 69 6e  74 65 72 20 74 6f 20 64  |ry (pointer to d|
00001260  6e 73 71 75 65 72 79 29  0a 3c 3d 09 52 30 20 3d  |nsquery).<=.R0 =|
00001270  09 68 6f 73 74 20 28 70  6f 69 6e 74 65 72 20 74  |.host (pointer t|
00001280  6f 20 64 6e 73 71 75 65  72 79 5f 73 6f 61 29 0a  |o dnsquery_soa).|
00001290  09 52 31 20 3d 09 73 6f  61 63 6f 75 6e 74 20 28  |.R1 =.soacount (|
000012a0  49 6e 74 29 0a 00 00 00  44 41 54 41 bb 00 00 00  |Int)....DATA....|
000012b0  44 4e 53 52 65 73 6f 6c  76 65 72 5f 4d 54 47 65  |DNSResolver_MTGe|
000012c0  74 48 6f 73 74 42 79 41  64 64 72 20 20 28 26 34  |tHostByAddr  (&4|
000012d0  36 30 31 39 29 0a 23 50  61 72 65 6e 74 20 44 4e  |6019).#Parent DN|
000012e0  53 52 65 73 6f 6c 76 65  72 5f 0a 3d 3e 09 52 30  |SResolver_.=>.R0|
000012f0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 61 64  | =.pointer to ad|
00001300  64 72 65 73 73 20 28 64  61 74 61 29 0a 09 52 31  |dress (data)..R1|
00001310  20 3d 09 61 64 64 72 65  73 73 5f 73 69 7a 65 20  | =.address_size |
00001320  28 49 6e 74 29 0a 09 52  32 20 3d 09 61 64 64 72  |(Int)..R2 =.addr|
00001330  65 73 73 5f 74 79 70 65  20 28 49 6e 74 29 0a 3c  |ess_type (Int).<|
00001340  3d 09 52 30 20 3d 09 71  75 65 72 79 20 28 70 6f  |=.R0 =.query (po|
00001350  69 6e 74 65 72 20 74 6f  20 64 6e 73 71 75 65 72  |inter to dnsquer|
00001360  79 29 0a 00 44 41 54 41  8c 00 00 00 44 4e 53 52  |y)..DATA....DNSR|
00001370  65 73 6f 6c 76 65 72 5f  4d 54 47 65 74 48 6f 73  |esolver_MTGetHos|
00001380  74 42 79 4e 61 6d 65 20  20 28 26 34 36 30 31 38  |tByName  (&46018|
00001390  29 0a 23 50 61 72 65 6e  74 20 44 4e 53 52 65 73  |).#Parent DNSRes|
000013a0  6f 6c 76 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 70  |olver_.=>.R0 =.p|
000013b0  6f 69 6e 74 65 72 20 74  6f 20 68 6f 73 74 6e 61  |ointer to hostna|
000013c0  6d 65 20 28 53 74 72 69  6e 67 29 0a 3c 3d 09 52  |me (String).<=.R|
000013d0  30 20 3d 09 71 75 65 72  79 20 28 70 6f 69 6e 74  |0 =.query (point|
000013e0  65 72 20 74 6f 20 64 6e  73 71 75 65 72 79 29 0a  |er to dnsquery).|
000013f0  44 41 54 41 33 01 00 00  44 4e 53 52 65 73 6f 6c  |DATA3...DNSResol|
00001400  76 65 72 5f 4e 61 6d 65  53 65 72 76 65 72 73 20  |ver_NameServers |
00001410  20 28 26 34 36 30 32 33  29 0a 23 50 61 72 65 6e  | (&46023).#Paren|
00001420  74 20 44 4e 53 52 65 73  6f 6c 76 65 72 5f 0a 3c  |t DNSResolver_.<|
00001430  3d 09 52 30 20 3d 09 73  69 7a 65 20 28 49 6e 74  |=.R0 =.size (Int|
00001440  29 0a 09 52 31 20 3d 09  6e 73 5f 61 64 64 72 65  |)..R1 =.ns_addre|
00001450  73 73 5f 6c 69 73 74 20  28 70 6f 69 6e 74 65 72  |ss_list (pointer|
00001460  20 74 6f 20 73 6f 63 6b  61 64 64 72 5f 69 6e 29  | to sockaddr_in)|
00001470  0a 0a 46 69 6e 64 20 6f  75 74 20 77 68 61 74 20  |..Find out what |
00001480  6e 61 6d 65 73 65 72 76  65 72 73 20 61 72 65 20  |nameservers are |
00001490  63 75 72 72 65 6e 74 6c  79 20 62 65 69 6e 67 20  |currently being |
000014a0  75 73 65 64 2e 20 54 68  69 73 20 69 6e 66 6f 72  |used. This infor|
000014b0  6d 61 74 69 6f 6e 20 73  68 6f 75 6c 64 20 62 65  |mation should be|
000014c0  20 74 72 65 61 74 65 64  20 61 73 20 52 45 41 44  | treated as READ|
000014d0  2d 4f 4e 4c 59 2c 20 61  6c 74 68 6f 75 67 68 20  |-ONLY, although |
000014e0  79 6f 75 20 63 6f 75 6c  64 20 28 69 66 20 63 61  |you could (if ca|
000014f0  72 65 66 75 6c 29 20 63  68 61 6e 67 65 20 74 68  |reful) change th|
00001500  65 73 65 20 69 66 20 79  6f 75 20 6b 6e 6f 77 20  |ese if you know |
00001510  77 68 61 74 20 79 6f 75  20 61 72 65 20 64 6f 69  |what you are doi|
00001520  6e 67 2e 00 44 41 54 41  4c 00 00 00 44 4e 53 52  |ng..DATAL...DNSR|
00001530  65 73 6f 6c 76 65 72 5f  52 65 73 44 65 62 75 67  |esolver_ResDebug|
00001540  20 20 28 26 34 36 30 31  42 29 0a 23 50 61 72 65  |  (&4601B).#Pare|
00001550  6e 74 20 44 4e 53 52 65  73 6f 6c 76 65 72 5f 0a  |nt DNSResolver_.|
00001560  28 6e 6f 74 20 64 6f 63  75 6d 65 6e 74 65 64 29  |(not documented)|
00001570  44 41 54 41 e9 00 00 00  44 4e 53 52 65 73 6f 6c  |DATA....DNSResol|
00001580  76 65 72 5f 52 65 73 51  75 65 72 79 20 20 28 26  |ver_ResQuery  (&|
00001590  34 36 30 32 32 29 0a 23  50 61 72 65 6e 74 20 44  |46022).#Parent D|
000015a0  4e 53 52 65 73 6f 6c 76  65 72 5f 0a 3d 3e 09 52  |NSResolver_.=>.R|
000015b0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 61  |0 =.pointer to a|
000015c0  64 64 72 65 73 73 20 28  53 74 72 69 6e 67 29 0a  |ddress (String).|
000015d0  09 52 31 20 3d 09 61 64  64 72 65 73 73 5f 63 6c  |.R1 =.address_cl|
000015e0  61 73 73 20 28 49 6e 74  29 0a 09 52 32 20 3d 09  |ass (Int)..R2 =.|
000015f0  6c 6f 6f 6b 75 70 5f 74  79 70 65 20 28 49 6e 74  |lookup_type (Int|
00001600  29 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R3 =.pointer |
00001610  74 6f 20 61 6e 73 77 65  72 20 62 75 66 66 65 72  |to answer buffer|
00001620  20 28 70 6f 69 6e 74 65  72 20 74 6f 20 43 68 61  | (pointer to Cha|
00001630  72 29 0a 09 52 34 20 3d  09 73 69 7a 65 20 28 49  |r)..R4 =.size (I|
00001640  6e 74 29 0a 3c 3d 09 52  30 20 3d 09 6c 65 6e 67  |nt).<=.R0 =.leng|
00001650  74 68 20 28 49 6e 74 29  0a 00 00 00 44 41 54 41  |th (Int)....DATA|
00001660  4d 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |M...DNSResolver_|
00001670  52 65 73 53 74 61 74 75  73 20 20 28 26 34 36 30  |ResStatus  (&460|
00001680  31 41 29 0a 23 50 61 72  65 6e 74 20 44 4e 53 52  |1A).#Parent DNSR|
00001690  65 73 6f 6c 76 65 72 5f  0a 28 6e 6f 74 20 64 6f  |esolver_.(not do|
000016a0  63 75 6d 65 6e 74 65 64  29 00 00 00 44 41 54 41  |cumented)...DATA|
000016b0  4d 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |M...DNSResolver_|
000016c0  52 65 73 55 73 65 56 43  20 20 28 26 34 36 30 31  |ResUseVC  (&4601|
000016d0  43 29 0a 23 50 61 72 65  6e 74 20 44 4e 53 52 65  |C).#Parent DNSRe|
000016e0  73 6f 6c 76 65 72 5f 0a  28 6e 6f 74 20 64 6f 63  |solver_.(not doc|
000016f0  75 6d 65 6e 74 65 64 29  0a 00 00 00 44 41 54 41  |umented)....DATA|
00001700  cb 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |....DNSResolver_|
00001710  53 68 6f 77 41 6e 73 77  65 72 20 20 28 26 34 36  |ShowAnswer  (&46|
00001720  30 31 45 29 0a 23 50 61  72 65 6e 74 20 44 4e 53  |01E).#Parent DNS|
00001730  52 65 73 6f 6c 76 65 72  5f 0a 3d 3e 09 52 30 20  |Resolver_.=>.R0 |
00001740  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 72 65 73  |=.pointer to res|
00001750  70 6f 6e 73 65 20 28 64  61 74 61 29 0a 09 52 31  |ponse (data)..R1|
00001760  20 3d 09 62 75 66 66 65  72 20 28 70 6f 69 6e 74  | =.buffer (point|
00001770  65 72 20 74 6f 20 43 68  61 72 29 0a 09 52 32 20  |er to Char)..R2 |
00001780  3d 09 73 69 7a 65 20 28  70 6f 69 6e 74 65 72 20  |=.size (pointer |
00001790  74 6f 20 49 6e 74 29 0a  09 52 33 20 3d 09 61 6e  |to Int)..R3 =.an|
000017a0  73 77 65 72 20 6c 65 6e  67 74 68 20 28 49 6e 74  |swer length (Int|
000017b0  29 0a 3c 3d 09 52 30 20  3d 09 73 74 61 74 75 73  |).<=.R0 =.status|
000017c0  20 28 49 6e 74 29 0a 00  44 41 54 41 d4 00 00 00  | (Int)..DATA....|
000017d0  44 4e 53 52 65 73 6f 6c  76 65 72 5f 53 74 61 72  |DNSResolver_Star|
000017e0  74 20 20 28 26 34 36 30  31 30 29 0a 23 50 61 72  |t  (&46010).#Par|
000017f0  65 6e 74 20 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |ent DNSResolver_|
00001800  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00001810  20 74 6f 20 61 64 64 72  65 73 73 20 28 53 74 72  | to address (Str|
00001820  69 6e 67 29 0a 09 52 31  20 3d 09 61 64 64 72 65  |ing)..R1 =.addre|
00001830  73 73 5f 63 6c 61 73 73  20 28 49 6e 74 29 0a 09  |ss_class (Int)..|
00001840  52 32 20 3d 09 6c 6f 6f  6b 75 70 5f 74 79 70 65  |R2 =.lookup_type|
00001850  20 28 49 6e 74 29 0a 3c  3d 09 52 30 20 3d 09 71  | (Int).<=.R0 =.q|
00001860  75 65 72 79 20 28 70 6f  69 6e 74 65 72 20 74 6f  |uery (pointer to|
00001870  20 64 6e 73 71 75 65 72  79 29 0a 0a 53 74 61 72  | dnsquery)..Star|
00001880  74 73 20 61 20 6d 75 6c  74 69 74 61 73 6b 69 6e  |ts a multitaskin|
00001890  67 20 44 4e 53 20 71 75  65 72 79 2e 44 41 54 41  |g DNS query.DATA|
000018a0  51 00 00 00 44 4e 53 52  65 73 6f 6c 76 65 72 5f  |Q...DNSResolver_|
000018b0  56 65 72 73 69 6f 6e 20  20 28 26 34 36 30 31 44  |Version  (&4601D|
000018c0  29 0a 23 50 61 72 65 6e  74 20 44 4e 53 52 65 73  |).#Parent DNSRes|
000018d0  6f 6c 76 65 72 5f 0a 3c  3d 09 52 30 20 3d 09 76  |olver_.<=.R0 =.v|
000018e0  65 72 73 69 6f 6e 20 28  49 6e 74 29 0a 00 00 00  |ersion (Int)....|
000018f0  44 49 52 24 2c 00 00 00  2c 00 00 00 1c 19 00 00  |DIR$,...,.......|
00001900  47 fd ff ff d2 59 bc 21  67 00 00 00 13 00 00 00  |G....Y.!g.......|
00001910  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00001920  67 00 00 00 45 63 0a 23  50 61 72 65 6e 74 20 21  |g...Ec.#Parent !|
00001930  52 6f 6f 74 0a 23 50 72  65 66 69 78 20 45 63 5f  |Root.#Prefix Ec_|
00001940  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
00001950  32 0a 53 74 61 72 74 0a  55 70 0a 44 6f 77 6e 0a  |2.Start.Up.Down.|
00001960  53 65 6e 64 0a 56 65 72  73 69 6f 6e 0a 4d 54 55  |Send.Version.MTU|
00001970  0a 54 78 45 76 52 65 71  0a 23 45 6e 64 54 61 62  |.TxEvReq.#EndTab|
00001980  6c 65 0a 00 44 49 52 24  98 00 00 00 98 00 00 00  |le..DIR$........|
00001990  1c 1a 00 00 47 fd ff ff  de 00 e0 12 75 00 00 00  |....G.......u...|
000019a0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000019b0  94 1a 00 00 47 ff ff ff  27 fa e4 c3 36 05 00 00  |....G...'...6...|
000019c0  13 00 00 00 00 00 00 00  47 65 74 57 6f 72 64 00  |........GetWord.|
000019d0  cc 1f 00 00 47 ff ff ff  8b b3 e1 12 c7 01 00 00  |....G...........|
000019e0  13 00 00 00 00 00 00 00  4d 6f 76 65 42 79 74 65  |........MoveByte|
000019f0  73 00 00 00 94 21 00 00  47 ff ff ff dc 6b e1 12  |s....!..G....k..|
00001a00  79 01 00 00 13 00 00 00  00 00 00 00 47 65 74 41  |y...........GetA|
00001a10  74 74 72 69 62 75 74 65  00 00 00 00 44 41 54 41  |ttribute....DATA|
00001a20  75 00 00 00 48 54 4d 4c  44 65 63 6f 64 65 0a 23  |u...HTMLDecode.#|
00001a30  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00001a40  65 66 69 78 20 48 54 4d  4c 44 65 63 6f 64 65 5f  |efix HTMLDecode_|
00001a50  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
00001a60  32 0a 3c 47 65 74 57 6f  72 64 3e 0a 3c 47 65 74  |2.<GetWord>.<Get|
00001a70  41 74 74 72 69 62 75 74  65 3e 0a 3c 4d 6f 76 65  |Attribute>.<Move|
00001a80  42 79 74 65 73 3e 0a 23  45 6e 64 54 61 62 6c 65  |Bytes>.#EndTable|
00001a90  0a 00 00 00 44 41 54 41  36 05 00 00 48 54 4d 4c  |....DATA6...HTML|
00001aa0  44 65 63 6f 64 65 5f 47  65 74 57 6f 72 64 20 20  |Decode_GetWord  |
00001ab0  28 26 34 44 38 34 30 29  0a 23 50 61 72 65 6e 74  |(&4D840).#Parent|
00001ac0  20 48 54 4d 4c 44 65 63  6f 64 65 5f 0a 3d 3e 09  | HTMLDecode_.=>.|
00001ad0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
00001ae0  69 6e 70 75 74 20 62 75  66 66 65 72 0a 09 52 31  |input buffer..R1|
00001af0  20 3d 09 6c 65 6e 67 74  68 20 6f 66 20 62 75 66  | =.length of buf|
00001b00  66 65 72 0a 09 52 32 20  3d 09 3c 66 6c 61 67 73  |fer..R2 =.<flags|
00001b10  3d 3e 2e 66 6c 61 67 73  3e 0a 0a 3c 3d 09 52 30  |=>.flags>..<=.R0|
00001b20  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 74  | =.pointer to st|
00001b30  72 69 6e 67 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |ring, or 0 if no|
00001b40  20 73 74 72 69 6e 67 20  70 72 65 73 65 6e 74 0a  | string present.|
00001b50  09 52 31 20 3d 09 6c 65  6e 67 74 68 20 74 6f 20  |.R1 =.length to |
00001b60  72 65 64 75 63 65 20 62  75 66 66 65 72 20 62 79  |reduce buffer by|
00001b70  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
00001b80  20 61 20 73 69 6e 67 6c  65 20 77 6f 72 64 2c 20  | a single word, |
00001b90  6f 72 20 74 61 67 20 66  72 6f 6d 20 61 20 73 74  |or tag from a st|
00001ba0  72 65 61 6d 20 6f 66 20  72 61 77 20 48 54 4d 4c  |ream of raw HTML|
00001bb0  20 64 61 74 61 2e 20 53  74 72 69 6e 67 73 20 72  | data. Strings r|
00001bc0  65 74 75 72 6e 65 64 20  6d 61 79 20 62 65 20 75  |eturned may be u|
00001bd0  70 20 74 6f 20 35 31 32  20 62 79 74 65 73 20 69  |p to 512 bytes i|
00001be0  6e 20 6c 65 6e 67 74 68  20 61 6e 64 20 61 72 65  |n length and are|
00001bf0  20 76 61 6c 69 64 20 75  6e 74 69 6c 20 74 68 65  | valid until the|
00001c00  20 6e 65 78 74 20 63 61  6c 6c 20 74 6f 20 48 54  | next call to HT|
00001c10  4d 4c 44 65 63 6f 64 65  5f 47 65 74 57 6f 72 64  |MLDecode_GetWord|
00001c20  2e 20 43 6f 6d 6d 65 6e  74 20 74 61 67 73 20 77  |. Comment tags w|
00001c30  69 6c 6c 20 6e 65 76 65  72 20 62 65 20 72 65 74  |ill never be ret|
00001c40  75 72 6e 65 64 20 61 73  20 74 68 65 73 65 20 61  |urned as these a|
00001c50  72 65 20 73 74 72 69 70  70 65 64 20 63 6f 6d 70  |re stripped comp|
00001c60  6c 65 74 65 6c 79 2e 0a  23 53 75 62 70 61 67 65  |letely..#Subpage|
00001c70  20 66 6c 61 67 73 0a 46  6c 61 67 73 20 75 73 65  | flags.Flags use|
00001c80  64 20 69 6e 20 48 54 4d  4c 44 65 63 6f 64 65 5f  |d in HTMLDecode_|
00001c90  47 65 74 57 6f 72 64 73  0a 42 69 74 09 4d 65 61  |GetWords.Bit.Mea|
00001ca0  6e 69 6e 67 20 69 66 20  73 65 74 0a 23 4c 69 6e  |ning if set.#Lin|
00001cb0  65 0a 30 09 3c 46 69 6c  65 20 69 73 20 63 6f 6d  |e.0.<File is com|
00001cc0  70 6c 65 74 65 3d 3e 2e  66 6c 61 67 62 69 74 30  |plete=>.flagbit0|
00001cd0  3e 0a 23 53 75 62 70 61  67 65 20 66 6c 61 67 62  |>.#Subpage flagb|
00001ce0  69 74 30 0a 46 6c 61 67  20 62 69 74 20 30 20 66  |it0.Flag bit 0 f|
00001cf0  6f 72 20 48 54 4d 4c 44  65 63 6f 64 65 5f 47 65  |or HTMLDecode_Ge|
00001d00  74 57 6f 72 64 0a 49 6e  20 6f 72 64 65 72 20 74  |tWord.In order t|
00001d10  68 61 74 20 48 54 4d 4c  44 65 63 6f 64 65 20 6d  |hat HTMLDecode m|
00001d20  61 79 20 70 72 6f 63 65  73 73 20 66 69 6c 65 73  |ay process files|
00001d30  20 27 6f 6e 20 74 68 65  20 66 6c 79 27 20 77 68  | 'on the fly' wh|
00001d40  69 6c 73 74 20 64 61 74  61 20 69 73 20 6f 6e 6c  |ilst data is onl|
00001d50  79 20 70 61 72 74 69 61  6c 6c 79 20 61 76 61 69  |y partially avai|
00001d60  6c 61 62 6c 65 20 74 68  65 20 66 6c 61 67 20 77  |lable the flag w|
00001d70  6f 72 64 20 69 6e 64 69  63 61 74 65 73 20 77 68  |ord indicates wh|
00001d80  65 74 68 65 72 20 74 68  65 20 64 61 74 61 20 69  |ether the data i|
00001d90  6e 20 74 68 65 20 62 75  66 66 65 72 20 69 73 20  |n the buffer is |
00001da0  74 68 65 20 63 6f 6d 70  6c 65 74 65 20 64 61 74  |the complete dat|
00001db0  61 20 66 72 6f 6d 20 74  68 65 20 73 65 72 76 65  |a from the serve|
00001dc0  72 2c 20 6f 72 20 77 68  65 74 68 65 72 20 74 68  |r, or whether th|
00001dd0  65 72 65 20 69 73 20 6d  6f 72 65 20 74 6f 20 63  |ere is more to c|
00001de0  6f 6d 65 20 62 75 74 20  74 68 61 74 20 69 74 20  |ome but that it |
00001df0  69 73 20 6e 6f 74 20 69  6e 20 74 68 65 20 62 75  |is not in the bu|
00001e00  66 66 65 72 20 61 74 20  74 68 65 20 6d 6f 6d 65  |ffer at the mome|
00001e10  6e 74 2e 0a 0a 54 68 65  72 65 66 6f 72 65 2c 20  |nt...Therefore, |
00001e20  77 68 65 6e 20 74 68 65  20 65 6e 64 20 6f 66 20  |when the end of |
00001e30  74 68 65 20 62 75 66 66  65 72 20 69 73 20 72 65  |the buffer is re|
00001e40  61 63 68 65 64 20 61 6e  64 20 74 68 65 20 66 6c  |ached and the fl|
00001e50  61 67 20 69 73 20 75 6e  73 65 74 20 74 68 65 6e  |ag is unset then|
00001e60  20 74 68 65 20 63 75 72  72 65 6e 74 6c 79 20 70  | the currently p|
00001e70  72 6f 63 65 73 73 65 64  20 73 74 72 69 6e 67 20  |rocessed string |
00001e80  69 73 20 61 62 61 6e 64  6f 6e 65 64 20 61 6e 64  |is abandoned and|
00001e90  20 30 20 72 65 74 75 72  6e 65 64 2e 20 54 68 65  | 0 returned. The|
00001ea0  20 62 75 66 66 65 72 20  77 69 6c 6c 20 68 61 76  | buffer will hav|
00001eb0  65 20 62 65 65 6e 20 73  63 61 6e 6e 65 64 20 66  |e been scanned f|
00001ec0  6f 72 20 63 6f 6d 6d 65  6e 74 73 20 61 6e 64 20  |or comments and |
00001ed0  73 70 61 63 65 73 20 61  6e 64 20 74 68 65 72 65  |spaces and there|
00001ee0  66 6f 72 65 20 52 31 20  69 73 20 76 61 6c 69 64  |fore R1 is valid|
00001ef0  2e 0a 0a 49 66 20 74 68  65 20 65 6e 64 20 6f 66  |...If the end of|
00001f00  20 74 68 65 20 62 75 66  66 65 72 20 69 73 20 72  | the buffer is r|
00001f10  65 61 63 68 65 64 20 61  6e 64 20 74 68 65 20 66  |eached and the f|
00001f20  6c 61 67 20 69 73 20 73  65 74 20 74 68 65 6e 20  |lag is set then |
00001f30  74 68 65 20 63 75 72 72  65 6e 74 6c 79 20 70 72  |the currently pr|
00001f40  6f 63 65 73 73 65 64 20  73 74 72 69 6e 67 20 77  |ocessed string w|
00001f50  69 6c 6c 20 62 65 20 74  65 72 6d 69 6e 61 74 65  |ill be terminate|
00001f60  64 20 61 6e 64 20 72 65  74 75 72 6e 65 64 20 61  |d and returned a|
00001f70  73 20 74 68 65 20 6c 61  73 74 20 73 74 72 69 6e  |s the last strin|
00001f80  67 2e 20 53 75 62 73 65  71 75 65 6e 74 20 63 61  |g. Subsequent ca|
00001f90  6c 6c 73 20 77 69 6c 6c  20 72 65 74 75 72 6e 20  |lls will return |
00001fa0  30 20 69 6e 64 69 63 61  74 69 6e 67 20 74 68 61  |0 indicating tha|
00001fb0  74 20 74 68 65 20 64 65  63 6f 64 65 20 69 73 20  |t the decode is |
00001fc0  63 6f 6d 70 6c 65 74 65  2e 0a 00 00 44 41 54 41  |complete....DATA|
00001fd0  c7 01 00 00 48 54 4d 4c  44 65 63 6f 64 65 5f 4d  |....HTMLDecode_M|
00001fe0  6f 76 65 42 79 74 65 73  20 20 28 26 34 44 38 34  |oveBytes  (&4D84|
00001ff0  32 29 0a 23 50 61 72 65  6e 74 20 48 54 4d 4c 44  |2).#Parent HTMLD|
00002000  65 63 6f 64 65 5f 0a 3d  3e 09 52 30 20 3d 09 70  |ecode_.=>.R0 =.p|
00002010  6f 69 6e 74 65 72 20 74  6f 20 73 6f 75 72 63 65  |ointer to source|
00002020  20 61 64 64 72 65 73 73  0a 09 52 31 20 3d 09 70  | address..R1 =.p|
00002030  6f 69 6e 74 65 72 20 74  6f 20 64 65 73 74 69 6e  |ointer to destin|
00002040  61 74 69 6f 6e 20 61 64  64 72 65 73 73 0a 09 52  |ation address..R|
00002050  32 20 3d 09 6c 65 6e 67  74 68 20 6f 66 20 64 61  |2 =.length of da|
00002060  74 61 0a 0a 54 68 69 73  20 53 57 49 20 73 68 6f  |ta..This SWI sho|
00002070  75 6c 64 20 62 65 20 74  6f 20 6d 6f 76 65 20 61  |uld be to move a|
00002080  20 71 75 65 75 65 20 6f  66 20 64 61 74 61 20 64  | queue of data d|
00002090  6f 77 6e 20 69 6e 20 6d  65 6d 6f 72 79 2e 20 54  |own in memory. T|
000020a0  68 65 20 69 64 65 61 20  69 73 20 74 68 61 74 20  |he idea is that |
000020b0  79 6f 75 20 63 61 6c 6c  20 74 68 69 73 20 74 6f  |you call this to|
000020c0  20 6d 6f 76 65 20 74 68  65 20 64 61 74 61 20 64  | move the data d|
000020d0  6f 77 6e 20 69 6e 20 61  20 63 6f 6e 74 69 6e 75  |own in a continu|
000020e0  6f 75 73 20 62 75 66 66  65 72 20 73 6f 20 74 68  |ous buffer so th|
000020f0  61 74 20 79 6f 75 20 63  61 6e 20 72 65 61 64 20  |at you can read |
00002100  70 61 72 74 73 20 6f 66  20 61 20 66 69 6c 65 20  |parts of a file |
00002110  69 6e 2c 20 70 61 72 73  65 20 69 74 20 61 6e 64  |in, parse it and|
00002120  20 74 68 65 6e 20 6c 6f  61 64 20 6d 6f 72 65 2e  | then load more.|
00002130  20 41 20 76 65 72 79 20  73 69 6d 70 6c 65 20 63  | A very simple c|
00002140  6f 70 79 20 69 73 20 70  65 72 66 6f 72 6d 65 64  |opy is performed|
00002150  20 2d 20 74 68 65 20 73  6f 75 72 63 65 20 73 68  | - the source sh|
00002160  6f 75 6c 64 20 62 65 20  61 62 6f 76 65 20 74 68  |ould be above th|
00002170  65 20 64 65 73 74 69 6e  61 74 69 6f 6e 20 69 66  |e destination if|
00002180  20 74 68 65 20 61 72 65  61 73 20 6f 76 65 72 6c  | the areas overl|
00002190  61 70 2e 00 44 41 54 41  79 01 00 00 48 54 4d 4c  |ap..DATAy...HTML|
000021a0  44 65 63 6f 64 65 5f 47  65 74 41 74 74 72 69 62  |Decode_GetAttrib|
000021b0  20 20 28 26 34 44 38 34  31 29 0a 23 50 61 72 65  |  (&4D841).#Pare|
000021c0  6e 74 20 48 54 4d 4c 44  65 63 6f 64 65 5f 0a 3d  |nt HTMLDecode_.=|
000021d0  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
000021e0  6f 20 73 74 72 69 6e 67  20 6f 66 20 61 74 74 72  |o string of attr|
000021f0  69 62 75 74 65 73 0a 0a  3c 3d 09 52 30 20 3d 09  |ibutes..<=.R0 =.|
00002200  70 6f 69 6e 74 65 72 20  74 6f 20 72 65 73 74 20  |pointer to rest |
00002210  6f 66 20 73 74 72 69 6e  67 3b 20 61 66 74 65 72  |of string; after|
00002220  20 61 74 74 72 69 62 75  74 65 0a 09 52 31 20 3d  | attribute..R1 =|
00002230  09 63 61 70 69 74 61 6c  69 73 65 64 20 61 74 74  |.capitalised att|
00002240  72 69 62 75 74 65 20 6e  61 6d 65 2c 20 6f 72 20  |ribute name, or |
00002250  30 20 69 66 20 6e 6f 6e  65 20 6c 65 66 74 0a 09  |0 if none left..|
00002260  52 32 20 3d 09 76 61 6c  75 65 20 6f 66 20 61 74  |R2 =.value of at|
00002270  74 72 69 62 75 74 65 2c  20 6f 72 20 30 20 69 66  |tribute, or 0 if|
00002280  20 6e 6f 6e 65 20 67 69  76 65 6e 0a 0a 54 68 69  | none given..Thi|
00002290  73 20 53 57 49 20 73 68  6f 75 6c 64 20 62 65 20  |s SWI should be |
000022a0  63 61 6c 6c 65 64 20 66  6f 72 20 74 61 67 73 2c  |called for tags,|
000022b0  20 61 66 74 65 72 20 74  68 65 20 74 61 67 20 69  | after the tag i|
000022c0  74 73 65 6c 66 20 68 61  73 20 62 65 65 6e 20 72  |tself has been r|
000022d0  65 6d 6f 76 65 64 2e 20  54 68 69 73 20 73 68 6f  |emoved. This sho|
000022e0  75 6c 64 20 73 69 6d 70  6c 69 66 79 20 74 68 65  |uld simplify the|
000022f0  20 64 65 63 6f 64 69 6e  67 20 6f 66 20 48 54 4d  | decoding of HTM|
00002300  4c 20 61 74 74 72 69 62  75 74 65 73 2e 00 00 00  |L attributes....|
00002310  44 49 52 24 4c 00 00 00  4c 00 00 00 5c 23 00 00  |DIR$L...L...\#..|
00002320  47 fd ff ff 65 e2 1c a9  8c 00 00 00 13 00 00 00  |G...e...........|
00002330  00 00 00 00 21 52 6f 6f  74 00 00 00 e8 23 00 00  |....!Root....#..|
00002340  47 ff ff ff cb 00 21 a9  f6 01 00 00 33 00 00 00  |G.....!.....3...|
00002350  00 00 00 00 4f 70 65 6e  00 00 00 00 44 41 54 41  |....Open....DATA|
00002360  8c 00 00 00 48 54 54 50  0a 23 50 61 72 65 6e 74  |....HTTP.#Parent|
00002370  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 48  | !Root.#Prefix H|
00002380  54 54 50 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |TTP_.#Table Colu|
00002390  6d 6e 73 20 32 0a 3c 4f  70 65 6e 3e 0a 53 74 61  |mns 2.<Open>.Sta|
000023a0  74 75 73 0a 43 6c 6f 73  65 0a 4d 61 70 54 6f 52  |tus.Close.MapToR|
000023b0  49 53 43 4f 53 0a 4d 61  70 46 72 6f 6d 52 49 53  |ISCOS.MapFromRIS|
000023c0  43 4f 53 0a 53 65 74 46  69 6c 65 54 79 70 65 0a  |COS.SetFileType.|
000023d0  43 6f 6d 70 6c 65 74 65  64 50 61 72 74 0a 23 45  |CompletedPart.#E|
000023e0  6e 64 54 61 62 6c 65 0a  44 41 54 41 f6 01 00 00  |ndTable.DATA....|
000023f0  48 54 54 50 5f 4f 70 65  6e 0a 23 50 61 72 65 6e  |HTTP_Open.#Paren|
00002400  74 20 48 54 54 50 5f 0a  3d 3e 09 52 30 20 3d 09  |t HTTP_.=>.R0 =.|
00002410  70 6f 69 6e 74 65 72 20  74 6f 20 61 20 3c 68 6f  |pointer to a <ho|
00002420  73 74 65 6e 74 20 73 74  72 75 63 74 75 72 65 3d  |stent structure=|
00002430  3e 49 6e 74 65 72 6e 65  74 5f 68 6f 73 74 65 6e  |>Internet_hosten|
00002440  74 3e 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |t>..R1 =.pointer|
00002450  20 74 6f 20 70 61 67 65  20 74 6f 20 66 65 74 63  | to page to fetc|
00002460  68 2c 20 6f 72 20 30 20  66 6f 72 20 72 6f 6f 74  |h, or 0 for root|
00002470  0a 09 52 32 20 3d 09 28  73 6f 6d 65 20 66 6f 72  |..R2 =.(some for|
00002480  6d 20 6f 66 20 68 65 61  64 65 72 20 64 61 74 61  |m of header data|
00002490  29 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R3 =.pointer |
000024a0  74 6f 20 66 69 6c 65 6e  61 6d 65 20 74 6f 20 72  |to filename to r|
000024b0  65 74 72 69 65 76 65 20  62 6f 64 79 20 69 6e 74  |etrieve body int|
000024c0  6f 0a 09 52 34 20 3d 09  70 6f 69 6e 74 65 72 20  |o..R4 =.pointer |
000024d0  74 6f 20 66 69 6c 65 6e  61 6d 65 20 74 6f 20 75  |to filename to u|
000024e0  73 65 20 61 73 20 70 6f  73 74 69 6e 67 20 62 6f  |se as posting bo|
000024f0  64 79 0a 09 52 35 20 3d  09 3c 66 6c 61 67 73 3d  |dy..R5 =.<flags=|
00002500  3e 2e 66 6c 61 67 73 3e  0a 0a 54 68 69 73 20 77  |>.flags>..This w|
00002510  69 6c 6c 20 6f 70 65 6e  20 61 20 48 54 54 50 20  |ill open a HTTP |
00002520  63 6f 6e 6e 65 63 74 69  6f 6e 20 61 6e 64 20 66  |connection and f|
00002530  65 74 63 68 20 74 68 65  20 72 65 71 75 65 73 74  |etch the request|
00002540  65 64 20 70 61 67 65 2e  0a 23 53 75 62 70 61 67  |ed page..#Subpag|
00002550  65 20 66 6c 61 67 73 0a  48 54 54 50 5f 4f 70 65  |e flags.HTTP_Ope|
00002560  6e 20 66 6c 61 67 73 0a  42 69 74 09 4d 65 61 6e  |n flags.Bit.Mean|
00002570  69 6e 67 20 69 66 20 73  65 74 0a 23 4c 69 6e 65  |ing if set.#Line|
00002580  0a 30 09 55 73 65 20 48  54 54 50 53 20 28 69 66  |.0.Use HTTPS (if|
00002590  20 61 76 61 69 6c 61 62  6c 65 29 0a 31 09 3f 0a  | available).1.?.|
000025a0  32 09 52 65 71 75 65 73  74 20 6a 75 73 74 20 68  |2.Request just h|
000025b0  65 61 64 0a 33 09 3f 0a  34 09 53 75 70 70 6c 79  |ead.3.?.4.Supply|
000025c0  20 27 52 61 6e 67 65 27  20 68 65 61 64 65 72 0a  | 'Range' header.|
000025d0  6f 74 68 65 72 73 09 75  6e 6b 6e 6f 77 6e 00 00  |others.unknown..|
000025e0  44 49 52 24 60 01 00 00  60 01 00 00 40 27 00 00  |DIR$`...`...@'..|
000025f0  48 fd ff ff 77 82 5b 03  0c 01 00 00 13 00 00 00  |H...w.[.........|
00002600  00 00 00 00 21 52 6f 6f  74 00 00 00 4c 28 00 00  |....!Root...L(..|
00002610  47 ff ff ff 3d d4 e4 c3  90 01 00 00 13 00 00 00  |G...=...........|
00002620  00 00 00 00 47 65 74 48  6f 73 74 42 79 4e 61 6d  |....GetHostByNam|
00002630  65 00 00 00 dc 29 00 00  47 fd ff ff 2c fa ce 13  |e....)..G...,...|
00002640  23 03 00 00 13 00 00 00  00 00 00 00 68 6f 73 74  |#...........host|
00002650  65 6e 74 00 00 2d 00 00  47 ff ff ff 92 e7 e4 c3  |ent..-..G.......|
00002660  14 01 00 00 13 00 00 00  00 00 00 00 47 65 74 48  |............GetH|
00002670  6f 73 74 42 79 41 64 64  72 00 00 00 14 2e 00 00  |ostByAddr.......|
00002680  47 ff ff ff c7 56 d0 13  56 01 00 00 13 00 00 00  |G....V..V.......|
00002690  00 00 00 00 47 65 74 53  65 72 76 69 63 65 42 79  |....GetServiceBy|
000026a0  50 6f 72 74 00 00 00 00  6c 2f 00 00 47 fd ff ff  |Port....l/..G...|
000026b0  01 c8 f7 13 ab 02 00 00  13 00 00 00 00 00 00 00  |................|
000026c0  73 65 72 76 65 6e 74 00  18 32 00 00 47 ff ff ff  |servent..2..G...|
000026d0  61 bd cf 13 5a 01 00 00  13 00 00 00 00 00 00 00  |a...Z...........|
000026e0  47 65 74 53 65 72 76 69  63 65 42 79 4e 61 6d 65  |GetServiceByName|
000026f0  00 00 00 00 74 33 00 00  47 ff ff ff fd 33 ff 35  |....t3..G....3.5|
00002700  b4 00 00 00 13 00 00 00  00 00 00 00 44 65 63 6f  |............Deco|
00002710  64 65 45 72 72 6f 72 00  28 34 00 00 47 ff ff ff  |deError.(4..G...|
00002720  b4 b5 e4 c3 fe 00 00 00  13 00 00 00 00 00 00 00  |................|
00002730  47 65 74 53 65 72 76 69  63 65 73 4d 65 6e 75 00  |GetServicesMenu.|
00002740  44 41 54 41 0c 01 00 00  49 6e 74 65 72 6e 65 74  |DATA....Internet|
00002750  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00002760  50 72 65 66 69 78 20 49  6e 74 65 72 6e 65 74 5f  |Prefix Internet_|
00002770  0a 49 6e 65 74 53 65 72  76 69 63 65 73 20 3a 0a  |.InetServices :.|
00002780  23 49 6e 64 65 6e 74 20  32 0a 23 54 61 62 6c 65  |#Indent 2.#Table|
00002790  20 43 6f 6c 75 6d 6e 73  20 32 0a 3c 47 65 74 53  | Columns 2.<GetS|
000027a0  65 72 76 69 63 65 42 79  4e 61 6d 65 3e 0a 3c 47  |erviceByName>.<G|
000027b0  65 74 53 65 72 76 69 63  65 42 79 50 6f 72 74 3e  |etServiceByPort>|
000027c0  0a 3c 44 65 63 6f 64 65  45 72 72 6f 72 3e 0a 3c  |.<DecodeError>.<|
000027d0  47 65 74 53 65 72 76 69  63 65 73 4d 65 6e 75 3e  |GetServicesMenu>|
000027e0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
000027f0  65 6e 74 20 30 0a 49 6e  65 74 44 42 20 3a 0a 23  |ent 0.InetDB :.#|
00002800  49 6e 64 65 6e 74 20 32  0a 23 54 61 62 6c 65 20  |Indent 2.#Table |
00002810  43 6f 6c 75 6d 6e 73 20  32 0a 3c 47 65 74 48 6f  |Columns 2.<GetHo|
00002820  73 74 42 79 4e 61 6d 65  3e 0a 3c 47 65 74 48 6f  |stByName>.<GetHo|
00002830  73 74 42 79 41 64 64 72  3e 0a 23 45 6e 64 54 61  |stByAddr>.#EndTa|
00002840  62 6c 65 0a 23 49 6e 64  65 6e 74 0a 44 41 54 41  |ble.#Indent.DATA|
00002850  90 01 00 00 49 6e 74 65  72 6e 65 74 5f 47 65 74  |....Internet_Get|
00002860  48 6f 73 74 42 79 4e 61  6d 65 20 20 28 26 34 36  |HostByName  (&46|
00002870  30 30 30 29 0a 23 50 61  72 65 6e 74 20 49 6e 74  |000).#Parent Int|
00002880  65 72 6e 65 74 5f 0a 3d  3e 09 52 30 20 3d 09 30  |ernet_.=>.R0 =.0|
00002890  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
000028a0  6f 20 68 6f 73 74 20 6e  61 6d 65 0a 3c 3d 09 52  |o host name.<=.R|
000028b0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 65  |0 =.pointer to e|
000028c0  72 72 6f 72 20 62 6c 6f  63 6b 20 69 66 20 65 72  |rror block if er|
000028d0  72 6f 72 2c 20 6f 72 20  6e 65 74 62 73 64 20 3c  |ror, or netbsd <|
000028e0  65 72 72 6f 72 20 6e 75  6d 62 65 72 3d 3e 49 6e  |error number=>In|
000028f0  65 74 3a 45 3e 0a 09 52  31 20 3d 09 70 6f 69 6e  |et:E>..R1 =.poin|
00002900  74 65 72 20 74 6f 20 3c  68 6f 73 74 65 6e 74 3d  |ter to <hostent=|
00002910  3e 49 6e 74 65 72 6e 65  74 5f 68 6f 73 74 65 6e  |>Internet_hosten|
00002920  74 3e 20 73 74 72 75 63  74 75 72 65 2c 20 6f 72  |t> structure, or|
00002930  20 30 20 69 66 20 6e 6f  74 20 66 6f 75 6e 64 0a  | 0 if not found.|
00002940  0a 52 65 74 75 72 6e 73  20 61 20 68 6f 73 74 65  |.Returns a hoste|
00002950  6e 74 20 62 6c 6f 63 6b  20 66 6f 72 20 74 68 65  |nt block for the|
00002960  20 72 65 71 75 65 73 74  65 64 20 68 6f 73 74 20  | requested host |
00002970  6e 61 6d 65 2e 20 54 68  69 73 20 68 6f 73 74 65  |name. This hoste|
00002980  6e 74 20 62 6c 6f 63 6b  20 77 69 6c 6c 20 72 65  |nt block will re|
00002990  6d 61 69 6e 20 73 74 61  74 69 63 20 66 6f 72 20  |main static for |
000029a0  32 34 20 68 6f 75 72 73  20 61 66 74 65 72 20 77  |24 hours after w|
000029b0  68 69 63 68 20 69 74 20  77 69 6c 6c 20 65 78 70  |hich it will exp|
000029c0  69 72 65 20 61 6e 64 20  6e 6f 20 6c 6f 6e 67 65  |ire and no longe|
000029d0  72 20 62 65 20 76 61 6c  69 64 2e 0a 44 41 54 41  |r be valid..DATA|
000029e0  23 03 00 00 48 6f 73 74  20 65 6e 74 72 79 20 62  |#...Host entry b|
000029f0  6c 6f 63 6b 0a 54 68 65  20 68 6f 73 74 65 6e 74  |lock.The hostent|
00002a00  20 62 6c 6f 63 6b 20 69  73 20 61 73 20 64 65 66  | block is as def|
00002a10  69 6e 65 64 20 69 6e 20  75 6e 69 78 20 43 2e 20  |ined in unix C. |
00002a20  54 68 65 20 61 64 64 72  65 73 73 65 73 20 67 69  |The addresses gi|
00002a30  76 65 6e 20 61 72 65 20  69 6e 20 6e 65 74 77 6f  |ven are in netwo|
00002a40  72 6b 20 62 79 74 65 20  6f 72 64 65 72 20 28 74  |rk byte order (t|
00002a50  68 65 20 72 65 76 65 72  73 65 20 6f 66 20 6e 6f  |he reverse of no|
00002a60  72 6d 61 6c 20 41 63 6f  72 6e 20 77 6f 72 64 73  |rmal Acorn words|
00002a70  29 2e 0a 0a 4f 66 66 73  65 74 09 43 6f 6e 74 65  |)...Offset.Conte|
00002a80  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 70 6f 69 6e  |nts.#Line.0.poin|
00002a90  74 65 72 20 74 6f 20 70  72 69 6d 61 72 79 20 6e  |ter to primary n|
00002aa0  61 6d 65 20 6f 66 20 68  6f 73 74 0a 34 09 70 6f  |ame of host.4.po|
00002ab0  69 6e 74 65 72 20 74 6f  20 61 20 62 6c 6f 63 6b  |inter to a block|
00002ac0  20 6f 66 20 70 6f 69 6e  74 65 72 73 20 74 6f 20  | of pointers to |
00002ad0  61 6c 69 61 73 20 6e 61  6d 65 73 20 66 6f 72 20  |alias names for |
00002ae0  74 68 65 20 68 6f 73 74  0a 38 09 61 64 64 72 65  |the host.8.addre|
00002af0  73 73 20 74 79 70 65 0a  31 32 09 61 64 64 72 65  |ss type.12.addre|
00002b00  73 73 20 6c 65 6e 67 74  68 0a 31 36 09 70 6f 69  |ss length.16.poi|
00002b10  6e 74 65 72 20 74 6f 20  61 20 6c 69 73 74 20 6f  |nter to a list o|
00002b20  66 20 61 64 64 72 65 73  73 65 73 20 66 6f 72 20  |f addresses for |
00002b30  68 6f 73 74 0a 0a 4f 72  2c 20 69 6e 20 43 20 3a  |host..Or, in C :|
00002b40  0a 23 49 6e 64 65 6e 74  20 32 0a 23 57 72 61 70  |.#Indent 2.#Wrap|
00002b50  20 4f 66 66 3b 66 43 6f  64 65 3b 54 61 62 20 66  | Off;fCode;Tab f|
00002b60  43 6f 64 65 2c 66 43 6f  64 65 0a 73 74 72 75 63  |Code,fCode.struc|
00002b70  74 20 68 6f 73 74 65 6e  74 20 5c 7b 0a 20 20 63  |t hostent \{.  c|
00002b80  68 61 72 20 2a 68 5f 6e  61 6d 65 3b 09 2f 2a 20  |har *h_name;./* |
00002b90  4f 66 66 69 63 69 61 6c  20 6e 61 6d 65 20 6f 66  |Official name of|
00002ba0  20 68 6f 73 74 20 2a 2f  0a 20 20 63 68 61 72 20  | host */.  char |
00002bb0  2a 2a 68 5f 61 6c 69 61  73 65 73 3b 09 2f 2a 20  |**h_aliases;./* |
00002bc0  41 6c 74 65 72 6e 61 74  69 76 65 20 6e 61 6d 65  |Alternative name|
00002bd0  73 20 66 6f 72 20 68 6f  73 74 20 2a 2f 0a 20 20  |s for host */.  |
00002be0  69 6e 74 20 20 68 5f 61  64 64 72 74 79 70 65 3b  |int  h_addrtype;|
00002bf0  09 2f 2a 20 48 6f 73 74  20 61 64 64 72 65 73 73  |./* Host address|
00002c00  20 74 79 70 65 20 2a 2f  0a 20 20 69 6e 74 20 20  | type */.  int  |
00002c10  68 5f 6c 65 6e 67 74 68  3b 09 2f 2a 20 4c 65 6e  |h_length;./* Len|
00002c20  67 74 68 20 6f 66 20 65  61 63 68 20 61 64 64 72  |gth of each addr|
00002c30  65 73 73 20 2a 2f 0a 20  20 63 68 61 72 20 2a 2a  |ess */.  char **|
00002c40  68 5f 61 64 64 72 5f 6c  69 73 74 3b 09 2f 2a 20  |h_addr_list;./* |
00002c50  4c 69 73 74 20 6f 66 20  61 64 64 72 65 73 73 65  |List of addresse|
00002c60  73 20 66 6f 72 20 68 6f  73 74 20 2a 2f 0a 5c 23  |s for host */.\#|
00002c70  64 65 66 69 6e 65 20 68  5f 61 64 64 72 20 68 5f  |define h_addr h_|
00002c80  61 64 64 72 5f 6c 69 73  74 5b 30 5d 09 2f 2a 20  |addr_list[0]./* |
00002c90  41 64 64 72 65 73 73 2c  20 66 6f 72 20 62 61 63  |Address, for bac|
00002ca0  6b 20 63 6f 6d 70 61 74  61 62 69 6c 69 74 79 20  |k compatability |
00002cb0  2a 2f 0a 5c 7d 3b 0a 0a  23 77 72 61 70 3b 66 3b  |*/.\};..#wrap;f;|
00002cc0  49 6e 64 65 6e 74 20 30  0a 49 6e 20 42 41 53 49  |Indent 0.In BASI|
00002cd0  43 20 79 6f 75 20 77 69  6c 6c 20 75 73 75 61 6c  |C you will usual|
00002ce0  6c 79 20 77 61 6e 74 20  74 6f 20 75 73 65 20 21  |ly want to use !|
00002cf0  21 28 68 6f 73 74 65 6e  74 2b 31 36 29 2e 0a 00  |!(hostent+16)...|
00002d00  44 41 54 41 14 01 00 00  49 6e 74 65 72 6e 65 74  |DATA....Internet|
00002d10  5f 47 65 74 48 6f 73 74  42 79 41 64 64 72 20 28  |_GetHostByAddr (|
00002d20  26 34 36 30 30 31 29 0a  23 50 61 72 65 6e 74 20  |&46001).#Parent |
00002d30  49 6e 74 65 72 6e 65 74  5f 0a 3d 3e 09 52 30 20  |Internet_.=>.R0 |
00002d40  3d 09 30 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |=.0..R1 =.pointe|
00002d50  72 20 74 6f 20 68 6f 73  74 20 61 64 64 72 65 73  |r to host addres|
00002d60  73 0a 09 52 32 20 3d 09  6c 65 6e 67 74 68 20 6f  |s..R2 =.length o|
00002d70  66 20 61 64 64 72 65 73  73 0a 09 52 33 20 3d 09  |f address..R3 =.|
00002d80  74 79 70 65 20 6f 66 20  61 64 64 72 65 73 73 0a  |type of address.|
00002d90  3c 3d 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R1 =.pointer |
00002da0  74 6f 20 3c 68 6f 73 74  65 6e 74 3d 3e 49 6e 74  |to <hostent=>Int|
00002db0  65 72 6e 65 74 5f 68 6f  73 74 65 6e 74 3e 20 73  |ernet_hostent> s|
00002dc0  74 72 75 63 74 75 72 65  2c 20 6f 72 20 30 20 69  |tructure, or 0 i|
00002dd0  66 20 6e 6f 74 20 66 6f  75 6e 64 0a 0a 52 65 74  |f not found..Ret|
00002de0  75 72 6e 73 20 61 20 68  6f 73 74 65 6e 74 20 62  |urns a hostent b|
00002df0  6c 6f 63 6b 20 66 6f 72  20 74 68 65 20 72 65 71  |lock for the req|
00002e00  75 65 73 74 65 64 20 68  6f 73 74 20 61 64 64 72  |uested host addr|
00002e10  65 73 73 2e 44 41 54 41  56 01 00 00 49 6e 74 65  |ess.DATAV...Inte|
00002e20  72 6e 65 74 5f 47 65 74  53 65 72 76 69 63 65 42  |rnet_GetServiceB|
00002e30  79 50 6f 72 74 0a 23 50  61 72 65 6e 74 20 49 6e  |yPort.#Parent In|
00002e40  74 65 72 6e 65 74 5f 0a  3d 3e 09 52 30 20 3d 09  |ternet_.=>.R0 =.|
00002e50  70 6f 72 74 20 6e 75 6d  62 65 72 0a 09 52 31 20  |port number..R1 |
00002e60  3d 09 70 72 6f 74 6f 63  6f 6c 2c 20 6f 72 20 30  |=.protocol, or 0|
00002e70  20 66 6f 72 20 64 65 66  61 75 6c 74 20 70 72 6f  | for default pro|
00002e80  74 6f 63 6f 6c 20 28 74  63 70 29 0a 3c 3d 09 52  |tocol (tcp).<=.R|
00002e90  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |1 =.pointer to <|
00002ea0  73 65 72 76 65 6e 74 3d  3e 49 6e 74 65 72 6e 65  |servent=>Interne|
00002eb0  74 5f 73 65 72 76 65 6e  74 3e 20 73 74 72 75 63  |t_servent> struc|
00002ec0  74 75 72 65 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |ture, or 0 if no|
00002ed0  74 20 66 6f 75 6e 64 0a  0a 52 65 74 75 72 6e 73  |t found..Returns|
00002ee0  20 61 20 73 65 72 76 65  6e 74 20 62 6c 6f 63 6b  | a servent block|
00002ef0  20 66 6f 72 20 74 68 65  20 72 65 71 75 65 73 74  | for the request|
00002f00  65 64 20 70 6f 72 74 2e  20 54 68 69 73 20 69 73  |ed port. This is|
00002f10  20 6e 6f 74 20 67 75 61  72 65 6e 74 65 65 64 20  | not guarenteed |
00002f20  74 6f 20 72 65 6d 61 69  6e 20 73 74 61 74 69 63  |to remain static|
00002f30  20 61 6e 64 20 73 68 6f  75 6c 64 20 6f 6e 6c 79  | and should only|
00002f40  20 62 65 20 63 6f 6e 73  69 64 65 72 65 64 20 76  | be considered v|
00002f50  61 6c 69 64 20 75 6e 74  69 6c 20 74 68 65 20 6e  |alid until the n|
00002f60  65 78 74 20 63 61 6c 6c  2e 0a 00 00 44 41 54 41  |ext call....DATA|
00002f70  ab 02 00 00 53 65 72 76  69 63 65 20 65 6e 74 72  |....Service entr|
00002f80  79 20 62 6c 6f 63 6b 0a  54 68 65 20 73 65 72 76  |y block.The serv|
00002f90  65 6e 74 20 62 6c 6f 63  6b 20 69 73 20 61 73 20  |ent block is as |
00002fa0  64 65 66 69 6e 65 64 20  69 6e 20 75 6e 69 78 20  |defined in unix |
00002fb0  43 2e 0a 0a 4f 66 66 73  65 74 09 43 6f 6e 74 65  |C...Offset.Conte|
00002fc0  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 70 6f 69 6e  |nts.#Line.0.poin|
00002fd0  74 65 72 20 74 6f 20 6f  66 66 69 63 69 61 6c 20  |ter to official |
00002fe0  6e 61 6d 65 20 6f 66 20  73 65 72 76 69 63 65 0a  |name of service.|
00002ff0  34 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 61 6c  |4.pointer to <al|
00003000  69 61 73 65 73 20 6c 69  73 74 3d 3e 2e 61 6c 69  |iases list=>.ali|
00003010  61 73 65 73 3e 20 66 6f  72 20 74 68 65 20 73 65  |ases> for the se|
00003020  72 76 69 63 65 2c 20 6f  72 20 30 20 69 66 20 6e  |rvice, or 0 if n|
00003030  6f 6e 65 2e 0a 38 09 70  6f 72 74 20 6e 75 6d 62  |one..8.port numb|
00003040  65 72 0a 31 32 09 70 6f  69 6e 74 65 72 20 74 6f  |er.12.pointer to|
00003050  20 6e 61 6d 65 20 6f 66  20 70 72 6f 74 6f 63 6f  | name of protoco|
00003060  6c 0a 0a 4f 72 2c 20 69  6e 20 43 20 3a 0a 23 49  |l..Or, in C :.#I|
00003070  6e 64 65 6e 74 20 32 0a  23 57 72 61 70 20 4f 66  |ndent 2.#Wrap Of|
00003080  66 3b 66 43 6f 64 65 3b  54 61 62 20 66 43 6f 64  |f;fCode;Tab fCod|
00003090  65 2c 66 43 6f 64 65 0a  73 74 72 75 63 74 20 73  |e,fCode.struct s|
000030a0  65 72 76 65 6e 74 20 5c  7b 0a 20 20 63 68 61 72  |ervent \{.  char|
000030b0  20 2a 73 5f 6e 61 6d 65  3b 09 09 2f 2a 20 4f 66  | *s_name;../* Of|
000030c0  66 69 63 69 61 6c 20 6e  61 6d 65 20 6f 66 20 73  |ficial name of s|
000030d0  65 72 76 69 63 65 20 2a  2f 0a 20 20 63 68 61 72  |ervice */.  char|
000030e0  20 2a 2a 73 5f 61 6c 69  61 73 65 73 3b 09 2f 2a  | **s_aliases;./*|
000030f0  20 41 6c 74 65 72 6e 61  74 69 76 65 20 6e 61 6d  | Alternative nam|
00003100  65 73 20 66 6f 72 20 73  65 72 76 69 63 65 20 2a  |es for service *|
00003110  2f 0a 20 20 69 6e 74 20  20 73 5f 70 6f 72 74 3b  |/.  int  s_port;|
00003120  09 09 2f 2a 20 50 6f 72  74 20 6e 75 6d 62 65 72  |../* Port number|
00003130  20 74 6f 20 75 73 65 20  2a 2f 0a 20 20 63 68 61  | to use */.  cha|
00003140  72 20 2a 73 5f 70 72 6f  74 6f 3b 09 2f 2a 20 50  |r *s_proto;./* P|
00003150  72 6f 74 6f 63 6f 6c 20  74 6f 20 75 73 65 20 2a  |rotocol to use *|
00003160  2f 0a 5c 7d 3b 0a 23 0a  23 53 75 62 70 61 67 65  |/.\};.#.#Subpage|
00003170  20 61 6c 69 61 73 65 73  0a 53 65 72 76 69 63 65  | aliases.Service|
00003180  20 61 6c 69 61 73 65 73  20 6c 69 73 74 0a 54 68  | aliases list.Th|
00003190  65 20 61 6c 69 61 73 65  73 20 6c 69 73 74 20 63  |e aliases list c|
000031a0  6f 6e 73 69 73 74 73 20  6f 66 20 61 20 30 2d 74  |onsists of a 0-t|
000031b0  65 72 6d 69 6e 61 74 65  64 20 6c 69 73 74 20 6f  |erminated list o|
000031c0  66 20 70 6f 69 6e 74 65  72 73 20 74 6f 20 74 68  |f pointers to th|
000031d0  65 20 61 6c 69 61 73 20  6e 61 6d 65 73 2e 20 54  |e alias names. T|
000031e0  68 65 20 6c 69 73 74 2c  20 6c 69 6b 65 20 74 68  |he list, like th|
000031f0  65 20 73 65 72 76 65 6e  74 20 62 6c 6f 63 6b 20  |e servent block |
00003200  69 74 73 65 6c 66 2c 20  69 73 20 6e 6f 74 20 73  |itself, is not s|
00003210  74 61 74 69 63 2e 0a 00  44 41 54 41 5a 01 00 00  |tatic...DATAZ...|
00003220  49 6e 74 65 72 6e 65 74  5f 47 65 74 53 65 72 76  |Internet_GetServ|
00003230  69 63 65 42 79 4e 61 6d  65 0a 23 50 61 72 65 6e  |iceByName.#Paren|
00003240  74 20 49 6e 74 65 72 6e  65 74 5f 0a 3d 3e 09 52  |t Internet_.=>.R|
00003250  30 20 3d 09 73 65 72 76  69 63 65 20 6e 61 6d 65  |0 =.service name|
00003260  0a 09 52 31 20 3d 09 70  72 6f 74 6f 63 6f 6c 2c  |..R1 =.protocol,|
00003270  20 6f 72 20 30 20 66 6f  72 20 64 65 66 61 75 6c  | or 0 for defaul|
00003280  74 20 70 72 6f 74 6f 63  6f 6c 20 28 74 63 70 29  |t protocol (tcp)|
00003290  0a 3c 3d 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R1 =.pointer|
000032a0  20 74 6f 20 3c 73 65 72  76 65 6e 74 3d 3e 49 6e  | to <servent=>In|
000032b0  74 65 72 6e 65 74 5f 73  65 72 76 65 6e 74 3e 20  |ternet_servent> |
000032c0  73 74 72 75 63 74 75 72  65 2c 20 6f 72 20 30 20  |structure, or 0 |
000032d0  69 66 20 6e 6f 74 20 66  6f 75 6e 64 0a 0a 52 65  |if not found..Re|
000032e0  74 75 72 6e 73 20 61 20  73 65 72 76 65 6e 74 20  |turns a servent |
000032f0  62 6c 6f 63 6b 20 66 6f  72 20 74 68 65 20 72 65  |block for the re|
00003300  71 75 65 73 74 65 64 20  73 65 72 76 69 63 65 2e  |quested service.|
00003310  20 54 68 69 73 20 69 73  20 6e 6f 74 20 67 75 61  | This is not gua|
00003320  72 65 6e 74 65 65 64 20  74 6f 20 72 65 6d 61 69  |renteed to remai|
00003330  6e 20 73 74 61 74 69 63  20 61 6e 64 20 73 68 6f  |n static and sho|
00003340  75 6c 64 20 6f 6e 6c 79  20 62 65 20 63 6f 6e 73  |uld only be cons|
00003350  69 64 65 72 65 64 20 76  61 6c 69 64 20 75 6e 74  |idered valid unt|
00003360  69 6c 20 74 68 65 20 6e  65 78 74 20 63 61 6c 6c  |il the next call|
00003370  2e 0a 00 00 44 41 54 41  b4 00 00 00 49 6e 74 65  |....DATA....Inte|
00003380  72 6e 65 74 5f 44 65 63  6f 64 65 45 72 72 6f 72  |rnet_DecodeError|
00003390  0a 23 50 61 72 65 6e 74  20 49 6e 74 65 72 6e 65  |.#Parent Interne|
000033a0  74 5f 0a 3d 3e 09 52 30  20 3d 09 65 72 72 6f 72  |t_.=>.R0 =.error|
000033b0  20 6e 75 6d 62 65 72 0a  3c 3d 09 52 30 20 3d 09  | number.<=.R0 =.|
000033c0  70 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |pointer to error|
000033d0  20 6d 65 73 73 61 67 65  0a 0a 52 65 74 75 72 6e  | message..Return|
000033e0  73 20 61 20 74 65 78 74  75 61 6c 20 76 65 72 73  |s a textual vers|
000033f0  69 6f 6e 20 6f 66 20 74  68 65 20 65 72 72 6f 72  |ion of the error|
00003400  20 6e 75 6d 62 65 72 20  67 69 76 65 6e 20 62 79  | number given by|
00003410  20 74 68 65 20 73 6f 63  6b 65 74 73 20 69 6e 74  | the sockets int|
00003420  65 72 66 61 63 65 2e 0a  44 41 54 41 fe 00 00 00  |erface..DATA....|
00003430  49 6e 74 65 72 6e 65 74  5f 47 65 74 53 65 72 76  |Internet_GetServ|
00003440  69 63 65 73 4d 65 6e 75  0a 23 50 61 72 65 6e 74  |icesMenu.#Parent|
00003450  20 49 6e 74 65 72 6e 65  74 5f 0a 3d 3e 09 52 30  | Internet_.=>.R0|
00003460  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6e 61  | =.pointer to na|
00003470  6d 65 20 6f 66 20 69 74  65 6d 20 74 6f 20 74 69  |me of item to ti|
00003480  63 6b 2c 20 6f 72 20 30  20 66 6f 72 20 6e 6f 6e  |ck, or 0 for non|
00003490  65 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R1 =.pointer |
000034a0  74 6f 20 70 72 6f 74 6f  63 6f 6c 20 6e 61 6d 65  |to protocol name|
000034b0  2c 20 6f 72 20 30 20 66  6f 72 20 64 65 66 61 75  |, or 0 for defau|
000034c0  6c 74 0a 3c 3d 09 52 30  20 3d 09 70 6f 69 6e 74  |lt.<=.R0 =.point|
000034d0  65 72 20 74 6f 20 6d 65  6e 75 20 73 74 72 75 63  |er to menu struc|
000034e0  74 75 72 65 0a 0a 43 72  65 61 74 65 73 20 61 20  |ture..Creates a |
000034f0  6d 65 6e 75 20 73 74 72  75 63 74 75 72 65 20 6f  |menu structure o|
00003500  66 20 73 65 72 76 69 63  65 73 20 77 68 69 63 68  |f services which|
00003510  20 61 72 65 20 63 75 72  72 65 6e 74 6c 79 20 6b  | are currently k|
00003520  6e 6f 77 6e 2e 0a 00 00  44 49 52 24 2c 00 00 00  |nown....DIR$,...|
00003530  2c 00 00 00 54 35 00 00  47 fd ff ff 45 5d bc 21  |,...T5..G...E].!|
00003540  b1 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00003550  74 00 00 00 44 41 54 41  b1 00 00 00 4b 41 39 51  |t...DATA....KA9Q|
00003560  41 55 4e 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |AUN.#Parent !Roo|
00003570  74 0a 23 50 72 65 66 69  78 20 4b 41 39 51 41 55  |t.#Prefix KA9QAU|
00003580  4e 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |N_.#Table Column|
00003590  73 20 32 0a 4e 65 74 77  6f 72 6b 49 66 53 74 61  |s 2.NetworkIfSta|
000035a0  72 74 0a 4e 65 74 77 6f  72 6b 49 66 55 70 0a 4e  |rt.NetworkIfUp.N|
000035b0  65 74 77 6f 72 6b 49 66  44 6f 77 6e 0a 4e 65 74  |etworkIfDown.Net|
000035c0  77 6f 72 6b 49 66 53 65  6e 64 0a 44 43 49 56 65  |workIfSend.DCIVe|
000035d0  72 73 69 6f 6e 0a 4e 65  74 77 6f 72 6b 4d 54 55  |rsion.NetworkMTU|
000035e0  0a 54 78 45 76 65 6e 74  52 65 71 75 69 72 65 64  |.TxEventRequired|
000035f0  0a 53 74 61 4e 75 6d 52  65 71 0a 23 45 6e 64 54  |.StaNumReq.#EndT|
00003600  61 62 6c 65 0a 00 00 00  44 49 52 24 2c 00 00 00  |able....DIR$,...|
00003610  2c 00 00 00 34 36 00 00  47 fd ff ff 82 65 cd 13  |,...46..G....e..|
00003620  76 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |v...........!Roo|
00003630  74 00 00 00 44 41 54 41  76 00 00 00 4d 62 75 66  |t...DATAv...Mbuf|
00003640  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00003650  50 72 65 66 69 78 20 4d  62 75 66 5f 0a 23 54 61  |Prefix Mbuf_.#Ta|
00003660  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 4f 70  |ble Columns 2.Op|
00003670  65 6e 53 65 73 73 69 6f  6e 0a 43 6c 6f 73 65 53  |enSession.CloseS|
00003680  65 73 73 69 6f 6e 0a 4d  65 6d 6f 72 79 0a 53 74  |ession.Memory.St|
00003690  61 74 69 73 74 69 63 0a  43 6f 6e 74 72 6f 6c 0a  |atistic.Control.|
000036a0  23 45 6e 64 54 61 62 6c  65 0a 00 00 44 49 52 24  |#EndTable...DIR$|
000036b0  2c 00 00 00 2c 00 00 00  d8 36 00 00 47 fd ff ff  |,...,....6..G...|
000036c0  6a 5f bc 21 81 00 00 00  13 00 00 00 00 00 00 00  |j_.!............|
000036d0  21 52 6f 6f 74 00 00 00  44 41 54 41 81 00 00 00  |!Root...DATA....|
000036e0  53 4c 49 50 64 72 69 76  65 72 0a 23 50 61 72 65  |SLIPdriver.#Pare|
000036f0  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
00003700  20 53 4c 49 50 64 72 69  76 65 72 5f 0a 23 54 61  | SLIPdriver_.#Ta|
00003710  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 53 74  |ble Columns 2.St|
00003720  61 72 74 0a 55 70 0a 44  6f 77 6e 0a 53 65 6e 64  |art.Up.Down.Send|
00003730  0a 56 65 72 73 69 6f 6e  0a 4d 54 55 0a 54 78 45  |.Version.MTU.TxE|
00003740  76 52 65 71 0a 53 74 61  4e 75 6d 52 65 71 0a 23  |vReq.StaNumReq.#|
00003750  45 6e 64 54 61 62 6c 65  0a 00 00 00 44 49 52 24  |EndTable....DIR$|
00003760  58 02 00 00 58 02 00 00  b4 39 00 00 47 fd ff ff  |X...X....9..G...|
00003770  9b 7e fd 60 07 01 00 00  13 00 00 00 00 00 00 00  |.~.`............|
00003780  21 52 6f 6f 74 00 00 00  bc 3a 00 00 47 ff ff ff  |!Root....:..G...|
00003790  a1 20 e5 c3 fa 00 00 00  13 00 00 00 00 00 00 00  |. ..............|
000037a0  4c 6f 67 4d 65 73 73 61  67 65 00 00 b8 3b 00 00  |LogMessage...;..|
000037b0  47 ff ff ff e4 d3 f9 60  c4 00 00 00 13 00 00 00  |G......`........|
000037c0  00 00 00 00 47 65 74 4c  6f 67 4c 65 76 65 6c 00  |....GetLogLevel.|
000037d0  7c 3c 00 00 47 ff ff ff  df f0 f9 60 be 00 00 00  ||<..G......`....|
000037e0  13 00 00 00 00 00 00 00  46 6c 75 73 68 4c 6f 67  |........FlushLog|
000037f0  00 00 00 00 3c 3d 00 00  47 ff ff ff 54 2f fa 60  |....<=..G...T/.`|
00003800  12 01 00 00 13 00 00 00  00 00 00 00 53 65 74 4c  |............SetL|
00003810  6f 67 4c 65 76 65 6c 00  50 3e 00 00 47 ff ff ff  |ogLevel.P>..G...|
00003820  77 d3 fe 60 48 01 00 00  13 00 00 00 00 00 00 00  |w..`H...........|
00003830  4c 6f 67 55 6e 73 74 61  6d 70 65 64 00 00 00 00  |LogUnstamped....|
00003840  98 3f 00 00 47 ff ff ff  05 11 ff 60 16 01 00 00  |.?..G......`....|
00003850  13 00 00 00 00 00 00 00  49 6e 64 65 6e 74 00 00  |........Indent..|
00003860  b0 40 00 00 47 ff ff ff  fd 7a fa 60 0f 01 00 00  |.@..G....z.`....|
00003870  13 00 00 00 00 00 00 00  55 6e 49 6e 64 65 6e 74  |........UnIndent|
00003880  00 00 00 00 c0 41 00 00  47 ff ff ff 81 99 fa 60  |.....A..G......`|
00003890  e5 00 00 00 13 00 00 00  00 00 00 00 4e 6f 49 6e  |............NoIn|
000038a0  64 65 6e 74 00 00 00 00  a8 42 00 00 47 ff ff ff  |dent.....B..G...|
000038b0  01 d5 fa 60 73 01 00 00  13 00 00 00 00 00 00 00  |...`s...........|
000038c0  4f 70 65 6e 53 65 73 73  69 6f 6e 4c 6f 67 00 00  |OpenSessionLog..|
000038d0  1c 44 00 00 47 ff ff ff  aa 20 ff 60 94 00 00 00  |.D..G.... .`....|
000038e0  13 00 00 00 00 00 00 00  43 6c 6f 73 65 53 65 73  |........CloseSes|
000038f0  73 69 6f 6e 4c 6f 67 00  b0 44 00 00 47 ff ff ff  |sionLog..D..G...|
00003900  76 3b fb 60 60 01 00 00  13 00 00 00 00 00 00 00  |v;.``...........|
00003910  4c 6f 67 44 61 74 61 00  10 46 00 00 47 ff ff ff  |LogData..F..G...|
00003920  a5 cf fd 60 09 06 00 00  13 00 00 00 00 00 00 00  |...`............|
00003930  4c 6f 67 46 6f 72 6d 61  74 74 65 64 00 00 00 00  |LogFormatted....|
00003940  1c 4c 00 00 47 ff ff ff  58 bb fb 60 af 00 00 00  |.L..G...X..`....|
00003950  13 00 00 00 00 00 00 00  52 65 61 64 45 72 72 6f  |........ReadErro|
00003960  72 4d 65 73 73 61 67 65  00 00 00 00 cc 4c 00 00  |rMessage.....L..|
00003970  47 ff ff ff 8e d7 fb 60  dc 00 00 00 13 00 00 00  |G......`........|
00003980  00 00 00 00 4c 6f 67 43  6f 6d 70 6c 65 74 65 00  |....LogComplete.|
00003990  a8 4d 00 00 47 fd ff ff  7f 21 fe 60 a1 01 00 00  |.M..G....!.`....|
000039a0  13 00 00 00 00 00 00 00  70 72 69 6f 72 69 74 69  |........prioriti|
000039b0  65 73 00 00 44 41 54 41  07 01 00 00 53 79 73 4c  |es..DATA....SysL|
000039c0  6f 67 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |og.#Parent !Root|
000039d0  0a 23 50 72 65 66 69 78  20 53 79 73 4c 6f 67 5f  |.#Prefix SysLog_|
000039e0  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000039f0  32 0a 3c 4c 6f 67 4d 65  73 73 61 67 65 3e 0a 3c  |2.<LogMessage>.<|
00003a00  47 65 74 4c 6f 67 4c 65  76 65 6c 3e 0a 3c 46 6c  |GetLogLevel>.<Fl|
00003a10  75 73 68 4c 6f 67 3e 0a  3c 53 65 74 4c 6f 67 4c  |ushLog>.<SetLogL|
00003a20  65 76 65 6c 3e 0a 3c 4c  6f 67 55 6e 73 74 61 6d  |evel>.<LogUnstam|
00003a30  70 65 64 3e 0a 3c 49 6e  64 65 6e 74 3e 0a 3c 55  |ped>.<Indent>.<U|
00003a40  6e 49 6e 64 65 6e 74 3e  0a 3c 4e 6f 49 6e 64 65  |nIndent>.<NoInde|
00003a50  6e 74 3e 0a 3c 4f 70 65  6e 53 65 73 73 69 6f 6e  |nt>.<OpenSession|
00003a60  4c 6f 67 3e 0a 3c 43 6c  6f 73 65 53 65 73 73 69  |Log>.<CloseSessi|
00003a70  6f 6e 4c 6f 67 3e 0a 3c  4c 6f 67 44 61 74 61 3e  |onLog>.<LogData>|
00003a80  0a 3c 4c 6f 67 46 6f 72  6d 61 74 74 65 64 3e 0a  |.<LogFormatted>.|
00003a90  3c 52 65 61 64 45 72 72  6f 72 4d 65 73 73 61 67  |<ReadErrorMessag|
00003aa0  65 3e 0a 3c 4c 6f 67 43  6f 6d 70 6c 65 74 65 3e  |e>.<LogComplete>|
00003ab0  0a 23 45 6e 64 54 61 62  6c 65 0a 00 44 41 54 41  |.#EndTable..DATA|
00003ac0  fa 00 00 00 53 79 73 4c  6f 67 5f 4c 6f 67 4d 65  |....SysLog_LogMe|
00003ad0  73 73 61 67 65 20 28 26  34 43 38 38 30 29 0a 23  |ssage (&4C880).#|
00003ae0  50 61 72 65 6e 74 20 53  79 73 4c 6f 67 5f 0a 3d  |Parent SysLog_.=|
00003af0  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
00003b00  6f 20 6c 6f 67 20 6e 61  6d 65 2c 20 6f 72 20 73  |o log name, or s|
00003b10  65 73 73 69 6f 6e 20 6c  6f 67 20 68 61 6e 64 6c  |ession log handl|
00003b20  65 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R1 =.pointer |
00003b30  74 6f 20 74 65 78 74 20  74 6f 20 6c 6f 67 0a 09  |to text to log..|
00003b40  52 32 20 3d 09 3c 70 72  69 6f 72 69 74 79 3d 3e  |R2 =.<priority=>|
00003b50  53 79 73 4c 6f 67 5f 70  72 69 6f 72 69 74 69 65  |SysLog_prioritie|
00003b60  73 3e 0a 0a 4c 6f 67 73  20 61 20 6d 65 73 73 61  |s>..Logs a messa|
00003b70  67 65 20 69 6e 20 61 20  6e 61 6d 65 64 20 73 79  |ge in a named sy|
00003b80  73 74 65 6d 20 6c 6f 67  20 6f 72 20 73 65 73 73  |stem log or sess|
00003b90  69 6f 6e 20 6c 6f 67 20  28 73 65 65 20 3c 53 79  |ion log (see <Sy|
00003ba0  73 4c 6f 67 5f 4f 70 65  6e 53 65 73 73 69 6f 6e  |sLog_OpenSession|
00003bb0  4c 6f 67 3e 29 2e 00 00  44 41 54 41 c4 00 00 00  |Log>)...DATA....|
00003bc0  53 79 73 4c 6f 67 5f 47  65 74 4c 6f 67 4c 65 76  |SysLog_GetLogLev|
00003bd0  65 6c 20 28 26 34 43 38  38 31 29 0a 23 50 61 72  |el (&4C881).#Par|
00003be0  65 6e 74 20 53 79 73 4c  6f 67 5f 0a 3d 3e 09 52  |ent SysLog_.=>.R|
00003bf0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6c  |0 =.pointer to l|
00003c00  6f 67 20 6e 61 6d 65 2c  20 6f 72 20 73 65 73 73  |og name, or sess|
00003c10  69 6f 6e 20 6c 6f 67 20  68 61 6e 64 6c 65 0a 3c  |ion log handle.<|
00003c20  3d 09 52 30 20 3d 09 3c  70 72 69 6f 72 69 74 79  |=.R0 =.<priority|
00003c30  3d 3e 53 79 73 4c 6f 67  5f 70 72 69 6f 72 69 74  |=>SysLog_priorit|
00003c40  69 65 73 3e 0a 0a 52 65  61 64 73 20 74 68 65 20  |ies>..Reads the |
00003c50  63 75 72 72 65 6e 74 20  6c 6f 67 67 69 6e 67 20  |current logging |
00003c60  6c 65 76 65 6c 20 66 6f  72 20 61 20 70 61 72 74  |level for a part|
00003c70  69 63 75 6c 61 72 20 6c  6f 67 2e 0a 44 41 54 41  |icular log..DATA|
00003c80  be 00 00 00 53 79 73 4c  6f 67 5f 46 6c 75 73 68  |....SysLog_Flush|
00003c90  4c 6f 67 20 28 26 34 43  38 38 32 29 0a 23 50 61  |Log (&4C882).#Pa|
00003ca0  72 65 6e 74 20 53 79 73  4c 6f 67 5f 0a 3d 3e 09  |rent SysLog_.=>.|
00003cb0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
00003cc0  6c 6f 67 20 6e 61 6d 65  2c 20 73 65 73 73 69 6f  |log name, sessio|
00003cd0  6e 20 6c 6f 67 20 68 61  6e 64 6c 65 2c 20 6f 72  |n log handle, or|
00003ce0  20 30 20 74 6f 20 66 6c  75 73 68 20 61 6c 6c 0a  | 0 to flush all.|
00003cf0  0a 57 72 69 74 65 73 20  6f 75 74 20 61 6e 79 20  |.Writes out any |
00003d00  63 61 63 68 65 64 20 64  61 74 61 20 66 72 6f 6d  |cached data from|
00003d10  20 6d 65 6d 6f 72 79 20  74 6f 20 74 68 65 20 6c  | memory to the l|
00003d20  6f 67 73 20 61 6e 64 20  63 6c 6f 73 65 73 20 74  |ogs and closes t|
00003d30  68 65 20 66 69 6c 65 73  2e 0a 00 00 44 41 54 41  |he files....DATA|
00003d40  12 01 00 00 53 79 73 4c  6f 67 5f 53 65 74 4c 6f  |....SysLog_SetLo|
00003d50  67 4c 65 76 65 6c 20 28  26 34 43 38 38 33 29 0a  |gLevel (&4C883).|
00003d60  23 50 61 72 65 6e 74 20  53 79 73 4c 6f 67 5f 0a  |#Parent SysLog_.|
00003d70  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00003d80  74 6f 20 6c 6f 67 20 6e  61 6d 65 2c 20 6f 72 20  |to log name, or |
00003d90  73 65 73 73 69 6f 6e 20  6c 6f 67 20 68 61 6e 64  |session log hand|
00003da0  6c 65 0a 09 52 31 20 3d  09 3c 6e 65 77 20 70 72  |le..R1 =.<new pr|
00003db0  69 6f 72 69 74 79 3d 3e  53 79 73 4c 6f 67 5f 70  |iority=>SysLog_p|
00003dc0  72 69 6f 72 69 74 69 65  73 3e 0a 0a 53 65 74 73  |riorities>..Sets|
00003dd0  20 74 65 20 6c 6f 67 67  69 6e 67 20 6c 65 76 65  | te logging leve|
00003de0  6c 20 66 6f 72 20 61 20  70 61 72 74 69 63 75 6c  |l for a particul|
00003df0  61 72 20 6c 6f 67 20 6f  72 20 73 65 73 73 69 6f  |ar log or sessio|
00003e00  6e 2e 20 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |n. This call is |
00003e10  66 6f 72 20 64 65 62 75  67 67 69 6e 67 20 70 75  |for debugging pu|
00003e20  72 70 6f 73 65 73 20 6f  6e 6c 79 20 2d 20 64 6f  |rposes only - do|
00003e30  20 6e 6f 74 20 75 73 65  20 69 6e 20 64 69 73 74  | not use in dist|
00003e40  72 69 62 75 74 65 64 20  63 6f 64 65 20 21 00 00  |ributed code !..|
00003e50  44 41 54 41 48 01 00 00  53 79 73 4c 6f 67 5f 4c  |DATAH...SysLog_L|
00003e60  6f 67 55 6e 73 74 61 6d  70 65 64 20 28 26 34 43  |ogUnstamped (&4C|
00003e70  38 38 34 29 0a 23 50 61  72 65 6e 74 20 53 79 73  |884).#Parent Sys|
00003e80  4c 6f 67 5f 0a 3d 3e 09  52 30 20 3d 09 70 6f 69  |Log_.=>.R0 =.poi|
00003e90  6e 74 65 72 20 74 6f 20  6c 6f 67 20 6e 61 6d 65  |nter to log name|
00003ea0  2c 20 6f 72 20 73 65 73  73 69 6f 6e 20 6c 6f 67  |, or session log|
00003eb0  20 68 61 6e 64 6c 65 0a  09 52 31 20 3d 09 70 6f  | handle..R1 =.po|
00003ec0  69 6e 74 65 72 20 74 6f  20 74 65 78 74 20 74 6f  |inter to text to|
00003ed0  20 6c 6f 67 0a 09 52 32  20 3d 09 3c 70 72 69 6f  | log..R2 =.<prio|
00003ee0  72 69 74 79 3d 3e 53 79  73 4c 6f 67 5f 70 72 69  |rity=>SysLog_pri|
00003ef0  6f 72 69 74 69 65 73 3e  0a 0a 57 72 69 74 65 73  |orities>..Writes|
00003f00  20 61 20 6d 65 73 73 61  67 65 20 74 6f 20 61 20  | a message to a |
00003f10  6c 6f 67 20 66 69 6c 65  20 2f 77 69 74 68 6f 75  |log file /withou|
00003f20  74 2f 20 73 74 61 6d 70  69 6e 67 20 69 74 20 77  |t/ stamping it w|
00003f30  69 74 68 20 74 68 65 20  74 69 6d 65 20 61 6e 64  |ith the time and|
00003f40  20 64 61 74 65 2e 20 54  68 69 73 20 73 68 6f 75  | date. This shou|
00003f50  6c 64 20 75 73 75 61 6c  6c 79 20 62 65 20 72 65  |ld usually be re|
00003f60  71 75 69 72 65 64 20 2d  20 75 73 65 20 3c 53 79  |quired - use <Sy|
00003f70  73 4c 6f 67 5f 4c 6f 67  4d 65 73 73 61 67 65 3e  |sLog_LogMessage>|
00003f80  20 69 6e 20 70 72 65 66  65 72 65 6e 63 65 20 74  | in preference t|
00003f90  6f 20 74 68 69 73 2e 0a  44 41 54 41 16 01 00 00  |o this..DATA....|
00003fa0  53 79 73 4c 6f 67 5f 49  6e 64 65 6e 74 20 28 26  |SysLog_Indent (&|
00003fb0  34 43 38 38 35 29 0a 23  50 61 72 65 6e 74 20 53  |4C885).#Parent S|
00003fc0  79 73 4c 6f 67 5f 0a 3d  3e 09 52 30 20 3d 09 70  |ysLog_.=>.R0 =.p|
00003fd0  6f 69 6e 74 65 72 20 74  6f 20 6c 6f 67 20 6e 61  |ointer to log na|
00003fe0  6d 65 2c 20 6f 72 20 73  65 73 73 69 6f 6e 20 6c  |me, or session l|
00003ff0  6f 67 20 68 61 6e 64 6c  65 0a 0a 49 6e 63 72 65  |og handle..Incre|
00004000  61 73 65 73 20 74 68 65  20 69 6e 64 65 6e 74 20  |ases the indent |
00004010  66 6f 72 20 74 68 65 20  6c 6f 67 2e 20 54 68 69  |for the log. Thi|
00004020  73 20 69 73 20 75 73 65  66 75 6c 20 69 66 20 79  |s is useful if y|
00004030  6f 75 20 61 72 65 20 77  72 69 74 69 6e 67 20 6c  |ou are writing l|
00004040  6f 6e 67 20 64 65 62 75  67 67 69 6e 67 20 72 6f  |ong debugging ro|
00004050  75 74 69 6e 65 73 20 77  68 69 63 68 20 6c 6f 67  |utines which log|
00004060  20 61 63 63 6f 72 64 69  6e 67 20 74 6f 20 74 68  | according to th|
00004070  65 20 72 6f 75 74 69 6e  65 20 74 68 65 79 20 61  |e routine they a|
00004080  72 65 20 69 6e 2e 20 55  73 65 20 3c 53 79 73 4c  |re in. Use <SysL|
00004090  6f 67 5f 55 6e 49 6e 64  65 6e 74 3e 20 74 6f 20  |og_UnIndent> to |
000040a0  72 65 76 65 72 73 65 20  74 68 69 73 2e 0a 00 00  |reverse this....|
000040b0  44 41 54 41 0f 01 00 00  53 79 73 4c 6f 67 5f 55  |DATA....SysLog_U|
000040c0  6e 49 6e 64 65 6e 74 20  28 26 34 43 38 38 36 29  |nIndent (&4C886)|
000040d0  0a 23 50 61 72 65 6e 74  20 53 79 73 4c 6f 67 5f  |.#Parent SysLog_|
000040e0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
000040f0  20 74 6f 20 6c 6f 67 20  6e 61 6d 65 2c 20 6f 72  | to log name, or|
00004100  20 73 65 73 73 69 6f 6e  20 6c 6f 67 20 68 61 6e  | session log han|
00004110  64 6c 65 0a 0a 44 65 63  72 65 61 73 65 73 20 74  |dle..Decreases t|
00004120  68 65 20 69 6e 64 65 6e  74 20 66 6f 72 20 74 68  |he indent for th|
00004130  65 20 6c 6f 67 2e 20 54  68 69 73 20 69 73 20 75  |e log. This is u|
00004140  73 65 66 75 6c 20 69 66  20 79 6f 75 20 61 72 65  |seful if you are|
00004150  20 77 72 69 74 69 6e 67  20 6c 6f 6e 67 20 64 65  | writing long de|
00004160  62 75 67 67 69 6e 67 20  72 6f 75 74 69 6e 65 73  |bugging routines|
00004170  20 77 68 69 63 68 20 6c  6f 67 20 61 63 63 6f 72  | which log accor|
00004180  64 69 6e 67 20 74 6f 20  74 68 65 20 72 6f 75 74  |ding to the rout|
00004190  69 6e 65 20 74 68 65 79  20 61 72 65 20 69 6e 2e  |ine they are in.|
000041a0  20 55 73 65 64 20 74 6f  20 75 6e 64 6f 20 3c 53  | Used to undo <S|
000041b0  79 73 4c 6f 67 5f 49 6e  64 65 6e 74 3e 2e 0a 00  |ysLog_Indent>...|
000041c0  44 41 54 41 e5 00 00 00  53 79 73 4c 6f 67 5f 4e  |DATA....SysLog_N|
000041d0  6f 49 6e 64 65 6e 74 20  28 26 34 43 38 38 37 29  |oIndent (&4C887)|
000041e0  0a 23 50 61 72 65 6e 74  20 53 79 73 4c 6f 67 5f  |.#Parent SysLog_|
000041f0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00004200  20 74 6f 20 6c 6f 67 20  6e 61 6d 65 2c 20 6f 72  | to log name, or|
00004210  20 73 65 73 73 69 6f 6e  20 6c 6f 67 20 68 61 6e  | session log han|
00004220  64 6c 65 0a 0a 52 65 73  65 74 73 20 74 68 65 20  |dle..Resets the |
00004230  69 6e 64 65 6e 74 61 74  69 6f 6e 20 66 6f 72 20  |indentation for |
00004240  61 20 6c 6f 67 2e 20 54  68 69 73 20 73 68 6f 75  |a log. This shou|
00004250  6c 64 20 62 65 20 75 73  65 64 20 77 68 65 6e 20  |ld be used when |
00004260  79 6f 75 72 20 70 72 6f  67 72 61 6d 20 6c 6f 61  |your program loa|
00004270  64 73 20 69 66 20 69 74  20 75 73 65 73 20 3c 53  |ds if it uses <S|
00004280  79 73 4c 6f 67 5f 49 6e  64 65 6e 74 3e 20 61 6e  |ysLog_Indent> an|
00004290  64 20 3c 53 79 73 4c 6f  67 5f 55 6e 49 6e 64 65  |d <SysLog_UnInde|
000042a0  6e 74 3e 2e 0a 00 00 00  44 41 54 41 73 01 00 00  |nt>.....DATAs...|
000042b0  53 79 73 4c 6f 67 5f 4f  70 65 6e 53 65 73 73 69  |SysLog_OpenSessi|
000042c0  6f 6e 4c 6f 67 20 28 26  34 43 38 38 38 29 0a 23  |onLog (&4C888).#|
000042d0  50 61 72 65 6e 74 20 53  79 73 4c 6f 67 5f 0a 3d  |Parent SysLog_.=|
000042e0  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
000042f0  6f 20 6c 6f 67 20 6e 61  6d 65 0a 09 52 31 20 3d  |o log name..R1 =|
00004300  09 70 72 69 6f 72 69 74  79 0a 3c 3d 09 52 30 20  |.priority.<=.R0 |
00004310  3d 09 73 65 73 73 69 6f  6e 20 6c 6f 67 20 68 61  |=.session log ha|
00004320  6e 64 6c 65 2c 20 6f 72  20 30 20 69 66 20 74 68  |ndle, or 0 if th|
00004330  65 20 6c 6f 67 73 20 77  69 6c 6c 20 62 65 20 69  |e logs will be i|
00004340  67 6e 6f 72 65 64 0a 0a  4f 70 65 6e 73 20 61 20  |gnored..Opens a |
00004350  73 65 73 73 69 6f 6e 20  6c 6f 67 20 66 69 6c 65  |session log file|
00004360  20 77 69 74 68 20 61 20  70 61 72 74 69 63 75 6c  | with a particul|
00004370  61 72 20 70 72 69 6f 72  69 74 79 2e 20 53 65 73  |ar priority. Ses|
00004380  73 69 6f 6e 20 6c 6f 67  73 20 63 61 6e 20 62 65  |sion logs can be|
00004390  20 75 73 65 64 20 74 6f  20 67 72 6f 75 70 20 70  | used to group p|
000043a0  61 72 74 69 63 75 6c 61  72 20 65 76 65 6e 74 73  |articular events|
000043b0  20 74 6f 67 65 74 68 65  72 20 73 6f 20 74 68 61  | together so tha|
000043c0  74 20 74 68 65 79 20 61  70 70 65 61 72 20 63 6f  |t they appear co|
000043d0  6e 73 65 63 75 74 69 76  65 6c 79 20 69 6e 20 74  |nsecutively in t|
000043e0  68 65 20 6c 6f 67 20 66  69 6c 65 2e 20 55 73 65  |he log file. Use|
000043f0  20 3c 53 79 73 4c 6f 67  5f 43 6c 6f 73 65 53 65  | <SysLog_CloseSe|
00004400  73 73 69 6f 6e 4c 6f 67  3e 20 74 6f 20 65 6e 64  |ssionLog> to end|
00004410  20 61 20 73 65 73 73 69  6f 6e 2e 00 44 41 54 41  | a session..DATA|
00004420  94 00 00 00 53 79 73 4c  6f 67 5f 43 6c 6f 73 65  |....SysLog_Close|
00004430  53 65 73 73 69 6f 6e 4c  6f 67 20 28 26 34 43 38  |SessionLog (&4C8|
00004440  38 39 29 0a 23 50 61 72  65 6e 74 20 53 79 73 4c  |89).#Parent SysL|
00004450  6f 67 5f 0a 3d 3e 09 52  30 20 3d 09 73 65 73 73  |og_.=>.R0 =.sess|
00004460  69 6f 6e 20 6c 6f 67 20  68 61 6e 64 6c 65 0a 0a  |ion log handle..|
00004470  43 6c 6f 73 65 73 20 61  20 73 65 73 73 69 6f 6e  |Closes a session|
00004480  20 6c 6f 67 20 61 6e 64  20 61 70 70 65 6e 64 73  | log and appends|
00004490  20 69 74 27 73 20 64 61  74 61 20 74 6f 20 74 68  | it's data to th|
000044a0  65 20 6d 61 69 6e 20 6c  6f 67 20 66 69 6c 65 2e  |e main log file.|
000044b0  44 41 54 41 60 01 00 00  53 79 73 4c 6f 67 5f 4c  |DATA`...SysLog_L|
000044c0  6f 67 44 61 74 61 20 28  26 34 43 38 38 41 29 0a  |ogData (&4C88A).|
000044d0  23 50 61 72 65 6e 74 20  53 79 73 4c 6f 67 5f 0a  |#Parent SysLog_.|
000044e0  3d 3e 09 52 30 20 3d 09  73 65 73 73 69 6f 6e 20  |=>.R0 =.session |
000044f0  6c 6f 67 20 68 61 6e 64  6c 65 0a 09 52 31 20 3d  |log handle..R1 =|
00004500  09 3c 70 72 69 6f 72 69  74 79 3d 3e 53 79 73 4c  |.<priority=>SysL|
00004510  6f 67 5f 70 72 69 6f 72  69 74 69 65 73 3e 0a 09  |og_priorities>..|
00004520  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
00004530  74 68 65 20 64 61 74 61  0a 09 52 33 20 3d 09 6e  |the data..R3 =.n|
00004540  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 74  |umber of bytes t|
00004550  6f 20 6c 6f 67 0a 09 52  34 20 3d 09 62 61 73 65  |o log..R4 =.base|
00004560  20 6f 66 66 73 65 74 20  6f 66 20 62 6c 6f 63 6b  | offset of block|
00004570  2c 20 6f 72 20 2d 31 20  66 6f 72 20 6e 6f 6e 65  |, or -1 for none|
00004580  2e 0a 0a 57 72 69 74 65  73 20 61 20 64 61 74 61  |...Writes a data|
00004590  20 62 6c 6f 63 6b 20 74  6f 20 61 20 6c 6f 67 20  | block to a log |
000045a0  66 69 6c 65 20 69 6e 20  61 20 73 69 6d 69 6c 61  |file in a simila|
000045b0  72 20 66 6f 72 6d 20 74  6f 20 2a 44 75 6d 70 2e  |r form to *Dump.|
000045c0  20 41 74 74 65 6d 70 74  73 20 74 6f 20 6c 6f 67  | Attempts to log|
000045d0  20 64 61 74 61 20 62 6c  6f 63 6b 73 20 62 69 67  | data blocks big|
000045e0  67 65 72 20 74 68 61 6e  20 31 30 4b 20 77 69 6c  |ger than 10K wil|
000045f0  6c 20 62 65 20 66 61 75  6c 74 65 64 20 66 6f 72  |l be faulted for|
00004600  20 79 6f 75 72 20 6f 77  6e 20 67 6f 6f 64 2e 0a  | your own good..|
00004610  44 41 54 41 09 06 00 00  53 79 73 4c 6f 67 5f 4c  |DATA....SysLog_L|
00004620  6f 67 46 6f 72 6d 61 74  74 65 64 20 28 26 34 43  |ogFormatted (&4C|
00004630  38 38 42 29 0a 23 50 61  72 65 6e 74 20 53 79 73  |88B).#Parent Sys|
00004640  4c 6f 67 5f 0a 3d 3e 09  52 30 20 3d 09 73 65 73  |Log_.=>.R0 =.ses|
00004650  73 69 6f 6e 20 6c 6f 67  20 68 61 6e 64 6c 65 0a  |sion log handle.|
00004660  09 52 31 20 3d 09 3c 66  6f 72 6d 61 74 20 73 74  |.R1 =.<format st|
00004670  72 69 6e 67 3d 3e 2e 66  6f 72 6d 61 74 3e 0a 09  |ring=>.format>..|
00004680  52 32 20 3d 09 3c 70 72  69 6f 72 69 74 79 3d 3e  |R2 =.<priority=>|
00004690  53 79 73 4c 6f 67 5f 70  72 69 6f 72 69 74 69 65  |SysLog_prioritie|
000046a0  73 3e 0a 09 52 33 20 3d  09 70 6f 69 6e 74 65 72  |s>..R3 =.pointer|
000046b0  20 62 6c 6f 63 6b 20 63  6f 6e 74 61 69 6e 69 6e  | block containin|
000046c0  67 20 72 30 2d 72 33 2c  20 72 38 2d 72 31 32 20  |g r0-r3, r8-r12 |
000046d0  61 6e 64 20 72 31 34 0a  09 52 34 2d 52 37 20 3d  |and r14..R4-R7 =|
000046e0  09 70 61 72 61 6d 65 74  65 72 73 0a 0a 41 70 70  |.parameters..App|
000046f0  65 6e 64 73 20 61 20 27  66 6f 72 6d 61 74 74 65  |ends a 'formatte|
00004700  64 20 73 74 72 69 6e 67  27 20 74 6f 20 74 68 65  |d string' to the|
00004710  20 6c 6f 67 20 75 73 69  6e 67 20 74 68 65 20 72  | log using the r|
00004720  65 67 69 73 74 65 72 73  20 73 70 65 63 69 66 65  |egisters specife|
00004730  64 2e 0a 0a 55 73 75 61  6c 6c 79 20 79 6f 75 27  |d...Usually you'|
00004740  64 20 75 73 65 20 63 6f  64 65 20 6c 69 6b 65 20  |d use code like |
00004750  74 68 69 73 20 74 6f 20  63 61 6c 6c 20 4c 6f 67  |this to call Log|
00004760  46 6f 72 6d 61 74 74 65  64 20 3a 0a 23 54 61 62  |Formatted :.#Tab|
00004770  20 2c 66 43 6f 64 65 2c  66 43 6f 64 65 2c 66 2f  | ,fCode,fCode,f/|
00004780  0a 20 20 20 09 53 54 4d  46 44 09 28 73 70 29 21  |.   .STMFD.(sp)!|
00004790  2c 5c 7b 72 30 2d 72 33  2c 72 38 2d 72 31 32 2c  |,\{r0-r3,r8-r12,|
000047a0  6c 69 6e 6b 5c 7d 09 20  0a 09 41 44 52 09 72 30  |link\}. ..ADR.r0|
000047b0  2c 6f 75 72 6c 6f 67 6e  61 6d 65 09 09 09 74 68  |,ourlogname...th|
000047c0  65 20 6c 6f 67 20 6e 61  6d 65 0a 09 41 44 44 09  |e log name..ADD.|
000047d0  72 31 2c 70 63 2c 23 31  32 09 09 09 74 68 65 20  |r1,pc,#12...the |
000047e0  66 6f 72 6d 61 74 20 73  74 72 69 6e 67 0a 09 4d  |format string..M|
000047f0  4f 56 09 72 32 2c 23 31  32 34 09 09 09 09 74 68  |OV.r2,#124....th|
00004800  65 20 70 72 69 6f 72 69  74 79 0a 09 4d 4f 56 09  |e priority..MOV.|
00004810  72 33 2c 73 70 09 09 09  09 74 68 65 20 62 6c 6f  |r3,sp....the blo|
00004820  63 6b 20 6f 66 20 72 65  67 69 73 74 65 72 73 0a  |ck of registers.|
00004830  09 53 57 49 09 22 53 79  73 4c 6f 67 5f 4c 6f 67  |.SWI."SysLog_Log|
00004840  46 6f 72 6d 61 74 74 65  64 22 0a 09 42 09 50 25  |Formatted"..B.P%|
00004850  2b 28 4c 45 4e 74 24 2b  38 29 41 4e 44 4e 4f 54  |+(LENt$+8)ANDNOT|
00004860  33 0a 09 45 51 55 53 09  74 24 2b 53 54 52 49 4e  |3..EQUS.t$+STRIN|
00004870  47 24 28 34 2d 28 4c 45  4e 74 24 41 4e 44 33 29  |G$(4-(LENt$AND3)|
00004880  2c 43 48 52 24 30 29 0a  09 4c 44 4d 46 44 09 28  |,CHR$0)..LDMFD.(|
00004890  73 70 29 21 2c 5c 7b 72  30 2d 72 33 2c 72 38 2d  |sp)!,\{r0-r3,r8-|
000048a0  72 31 32 2c 6c 69 6e 6b  5c 7d 0a 23 66 43 6f 64  |r12,link\}.#fCod|
000048b0  65 0a 23 0a 23 53 75 62  70 61 67 65 20 66 6f 72  |e.#.#Subpage for|
000048c0  6d 61 74 0a 53 79 73 4c  6f 67 5f 4c 6f 67 46 6f  |mat.SysLog_LogFo|
000048d0  72 6d 61 74 74 65 64 20  66 6f 72 6d 61 74 20 73  |rmatted format s|
000048e0  74 72 69 6e 67 0a 54 68  65 73 65 20 73 74 72 69  |tring.These stri|
000048f0  6e 67 73 20 61 72 65 20  69 6e 20 61 20 73 69 6d  |ngs are in a sim|
00004900  69 6c 61 72 20 73 74 79  6c 65 20 74 6f 20 74 68  |ilar style to th|
00004910  65 20 43 20 27 70 72 69  6e 74 66 27 2c 20 6f 72  |e C 'printf', or|
00004920  20 4a 46 50 61 74 63 68  20 27 52 45 4d 27 20 6f  | JFPatch 'REM' o|
00004930  75 74 70 75 74 20 66 6f  72 6d 61 74 20 73 74 72  |utput format str|
00004940  69 6e 67 73 2e 20 54 68  65 20 66 6f 72 6d 61 74  |ings. The format|
00004950  20 73 74 72 69 6e 67 20  69 73 20 61 20 74 65 6d  | string is a tem|
00004960  70 6c 61 74 65 20 66 6f  72 20 77 68 69 63 68 20  |plate for which |
00004970  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 73 65  |the following se|
00004980  71 75 65 6e 63 65 73 20  77 69 6c 6c 20 62 65 20  |quences will be |
00004990  65 78 70 61 6e 64 65 64  20 3a 0a 0a 53 65 71 75  |expanded :..Sequ|
000049a0  65 6e 63 65 09 45 78 70  61 6e 73 69 6f 6e 0a 23  |ence.Expansion.#|
000049b0  6c 69 6e 65 0a 25 25 09  09 61 20 25 20 63 68 61  |line.%%..a % cha|
000049c0  72 61 63 74 65 72 0a 25  5c 3c 72 65 67 5c 3e 61  |racter.%\<reg\>a|
000049d0  09 74 68 65 20 6e 65 74  77 6f 72 6b 20 6f 72 64  |.the network ord|
000049e0  65 72 65 64 20 69 70 20  61 64 64 72 65 73 73 20  |ered ip address |
000049f0  69 6e 20 72 65 67 69 73  74 65 72 20 5c 3c 72 65  |in register \<re|
00004a00  67 5c 3e 0a 25 5c 3c 72  65 67 5c 3e 63 09 74 68  |g\>.%\<reg\>c.th|
00004a10  65 20 61 73 63 69 69 20  63 68 61 72 61 63 74 65  |e ascii characte|
00004a20  72 20 69 6e 20 72 65 67  69 73 74 65 72 20 5c 3c  |r in register \<|
00004a30  72 65 67 5c 3e 0a 25 5c  3c 72 65 67 5c 3e 64 09  |reg\>.%\<reg\>d.|
00004a40  74 68 65 20 73 69 67 6e  65 64 20 64 65 63 69 6d  |the signed decim|
00004a50  61 6c 20 6e 75 6d 62 65  72 20 69 6e 20 72 65 67  |al number in reg|
00004a60  69 73 74 65 72 20 5c 3c  72 65 67 5c 3e 0a 25 5c  |ister \<reg\>.%\|
00004a70  3c 72 65 67 5c 3e 65 09  74 68 65 20 69 6e 74 65  |<reg\>e.the inte|
00004a80  72 6e 65 74 20 65 72 72  6f 72 20 69 6e 20 72 65  |rnet error in re|
00004a90  67 69 73 74 65 72 20 5c  3c 72 65 67 5c 3e 0a 25  |gister \<reg\>.%|
00004aa0  5c 3c 72 65 67 5c 3e 66  09 74 68 65 20 66 69 6c  |\<reg\>f.the fil|
00004ab0  65 6e 61 6d 65 20 6f 66  20 74 68 65 20 68 61 6e  |ename of the han|
00004ac0  64 6c 65 20 69 6e 20 72  65 67 69 73 74 65 72 20  |dle in register |
00004ad0  5c 3c 72 65 67 5c 3e 0a  25 5c 3c 72 65 67 5c 3e  |\<reg\>.%\<reg\>|
00004ae0  70 09 74 68 65 20 6f 62  6a 65 63 74 20 70 6f 69  |p.the object poi|
00004af0  6e 74 65 64 20 74 6f 20  62 79 20 72 65 67 69 73  |nted to by regis|
00004b00  74 65 72 20 5c 3c 72 65  67 5c 3e 0a 09 09 28 4e  |ter \<reg\>...(N|
00004b10  6f 74 65 3a 20 54 68 69  73 20 73 68 6f 75 6c 64  |ote: This should|
00004b20  20 62 65 20 66 6f 6c 6c  6f 77 65 64 20 62 79 20  | be followed by |
00004b30  6f 6e 65 20 6f 66 20 74  68 65 20 6f 74 68 65 72  |one of the other|
00004b40  20 71 75 61 6c 69 66 69  65 72 73 20 69 6e 20 74  | qualifiers in t|
00004b50  68 69 73 20 6c 69 73 74  29 0a 25 5c 3c 72 65 67  |his list).%\<reg|
00004b60  5c 3e 73 09 74 68 65 20  63 74 72 6c 20 74 65 72  |\>s.the ctrl ter|
00004b70  6d 69 6e 61 74 65 64 20  73 74 72 69 6e 67 20 70  |minated string p|
00004b80  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 72 65 67  |ointed to by reg|
00004b90  69 73 74 65 72 20 5c 3c  72 65 67 5c 3e 0a 25 5c  |ister \<reg\>.%\|
00004ba0  3c 72 65 67 5c 3e 78 09  74 68 65 20 75 6e 73 69  |<reg\>x.the unsi|
00004bb0  67 6e 65 64 20 68 65 78  20 69 6e 74 65 67 65 72  |gned hex integer|
00004bc0  20 69 6e 20 72 65 67 69  73 74 65 72 20 5c 3c 72  | in register \<r|
00004bd0  65 67 5c 3e 0a 25 5c 3c  72 65 67 5c 3e 7a 09 74  |eg\>.%\<reg\>z.t|
00004be0  68 65 20 7a 65 72 6f 20  74 65 72 6d 69 6e 61 74  |he zero terminat|
00004bf0  65 64 20 73 74 72 69 6e  67 20 70 6f 69 6e 74 65  |ed string pointe|
00004c00  64 20 74 6f 20 62 79 20  72 65 67 69 73 74 65 72  |d to by register|
00004c10  20 5c 3c 72 65 67 5c 3e  0a 00 00 00 44 41 54 41  | \<reg\>....DATA|
00004c20  af 00 00 00 53 79 73 4c  6f 67 5f 52 65 61 64 45  |....SysLog_ReadE|
00004c30  72 72 6f 72 4d 65 73 73  61 67 65 20 28 26 34 43  |rrorMessage (&4C|
00004c40  38 38 43 29 0a 23 50 61  72 65 6e 74 20 53 79 73  |88C).#Parent Sys|
00004c50  4c 6f 67 5f 0a 3d 3e 09  52 30 20 3d 09 65 72 72  |Log_.=>.R0 =.err|
00004c60  6f 72 20 6e 75 6d 62 65  72 0a 3c 3d 09 52 30 20  |or number.<=.R0 |
00004c70  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |=.pointer to err|
00004c80  6f 72 20 6d 65 73 73 61  67 65 0a 0a 44 65 63 6f  |or message..Deco|
00004c90  64 65 73 20 74 68 65 20  65 72 72 6f 72 73 20 72  |des the errors r|
00004ca0  65 74 75 72 6e 65 64 20  62 79 20 74 68 65 20 73  |eturned by the s|
00004cb0  74 61 63 6b 20 69 6e 74  6f 20 45 6e 67 6c 69 73  |tack into Englis|
00004cc0  68 20 73 74 72 69 6e 67  73 2e 0a 00 44 41 54 41  |h strings...DATA|
00004cd0  dc 00 00 00 53 79 73 4c  6f 67 5f 4c 6f 67 43 6f  |....SysLog_LogCo|
00004ce0  6d 70 6c 65 74 65 20 28  26 34 43 38 38 44 29 0a  |mplete (&4C88D).|
00004cf0  23 50 61 72 65 6e 74 20  53 79 73 4c 6f 67 5f 0a  |#Parent SysLog_.|
00004d00  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00004d10  74 6f 20 6c 6f 67 20 6e  61 6d 65 0a 0a 46 6c 75  |to log name..Flu|
00004d20  73 68 65 73 20 74 68 65  20 6e 61 6d 65 64 20 6c  |shes the named l|
00004d30  6f 67 20 61 6e 64 20 64  65 2d 61 6c 6c 6f 63 61  |og and de-alloca|
00004d40  74 65 73 20 74 68 65 20  73 70 61 63 65 20 73 65  |tes the space se|
00004d50  74 20 61 73 69 64 65 20  66 6f 72 20 69 74 2e 20  |t aside for it. |
00004d60  4f 6e 6c 79 20 63 61 6c  6c 20 74 68 69 73 20 69  |Only call this i|
00004d70  66 20 79 6f 75 72 20 61  70 70 6c 69 63 61 74 69  |f your applicati|
00004d80  6f 6e 20 69 73 20 61 62  6f 75 74 20 74 6f 20 62  |on is about to b|
00004d90  65 67 69 6e 20 61 20 6c  6f 6e 67 20 69 64 6c 65  |egin a long idle|
00004da0  20 73 74 61 74 65 2e 0a  44 41 54 41 a1 01 00 00  | state..DATA....|
00004db0  53 79 73 4c 6f 67 20 70  72 69 6f 72 69 74 69 65  |SysLog prioritie|
00004dc0  73 0a 53 79 73 4c 6f 67  20 61 6c 6c 6f 77 73 20  |s.SysLog allows |
00004dd0  79 6f 75 20 74 6f 20 67  69 76 65 20 65 61 63 68  |you to give each|
00004de0  20 6d 65 73 73 61 67 65  20 69 6e 20 74 68 65 20  | message in the |
00004df0  6c 6f 67 20 61 20 27 70  72 69 6f 72 69 74 79 20  |log a 'priority |
00004e00  6c 65 76 65 6c 27 2e 20  54 68 65 20 75 73 65 72  |level'. The user|
00004e10  20 63 61 6e 20 73 65 74  20 74 68 65 20 6c 65 76  | can set the lev|
00004e20  65 6c 20 61 74 20 77 68  69 63 68 20 74 68 65 20  |el at which the |
00004e30  6d 65 73 73 61 67 65 73  20 73 74 6f 70 20 62 65  |messages stop be|
00004e40  69 6e 67 20 6c 6f 67 67  65 64 20 73 6f 20 74 68  |ing logged so th|
00004e50  61 74 20 6f 6e 6c 79 20  63 65 72 74 61 69 6e 20  |at only certain |
00004e60  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 69 73 20 61  |information is a|
00004e70  63 74 75 61 6c 6c 79 20  6c 6f 67 67 65 64 2e 0a  |ctually logged..|
00004e80  0a 54 68 65 20 6c 6f 77  65 72 20 74 68 65 20 70  |.The lower the p|
00004e90  72 69 6f 72 69 74 79 20  74 68 65 20 6d 6f 72 65  |riority the more|
00004ea0  20 69 6d 70 6f 72 74 61  6e 74 20 74 68 65 20 6d  | important the m|
00004eb0  65 73 73 61 67 65 20 69  73 2c 20 74 68 65 20 68  |essage is, the h|
00004ec0  69 67 68 65 72 20 74 68  65 20 70 72 69 6f 72 69  |igher the priori|
00004ed0  74 79 20 74 68 65 20 6d  6f 72 65 20 6c 69 6b 65  |ty the more like|
00004ee0  20 64 65 62 75 67 67 69  6e 67 20 6f 75 74 70 75  | debugging outpu|
00004ef0  74 20 69 74 20 69 73 2e  20 42 79 20 64 65 66 61  |t it is. By defa|
00004f00  75 6c 74 20 74 68 65 20  6c 6f 67 73 20 73 74 61  |ult the logs sta|
00004f10  72 74 20 61 74 20 6c 65  76 65 6c 20 31 32 34 20  |rt at level 124 |
00004f20  61 6e 64 20 6f 6e 6c 79  20 6d 65 73 73 61 67 65  |and only message|
00004f30  73 20 62 65 6c 6f 77 20  74 68 69 73 20 61 72 65  |s below this are|
00004f40  20 6c 6f 67 67 65 64 2e  0a 00 00 00 44 49 52 24  | logged.....DIR$|
00004f50  08 01 00 00 08 01 00 00  54 50 00 00 47 fd ff ff  |........TP..G...|
00004f60  67 a3 09 fd 87 01 00 00  13 00 00 00 00 00 00 00  |g...............|
00004f70  21 52 6f 6f 74 00 00 00  dc 51 00 00 47 ff ff ff  |!Root....Q..G...|
00004f80  be ab 2b 4f a6 00 00 00  13 00 00 00 00 00 00 00  |..+O............|
00004f90  56 65 72 73 69 6f 6e 00  84 52 00 00 47 ff ff ff  |Version..R..G...|
00004fa0  b9 ac 0a fd 24 03 00 00  13 00 00 00 00 00 00 00  |....$...........|
00004fb0  64 69 73 70 61 74 63 68  00 00 00 00 a8 55 00 00  |dispatch.....U..|
00004fc0  47 ff ff ff 6a 8b 05 fd  75 01 00 00 13 00 00 00  |G...j...u.......|
00004fd0  00 00 00 00 52 65 71 75  65 73 74 55 52 49 00 00  |....RequestURI..|
00004fe0  20 57 00 00 47 ff ff ff  c3 01 32 4f 97 00 00 00  | W..G.....2O....|
00004ff0  13 00 00 00 00 00 00 00  49 6e 76 61 6c 69 64 61  |........Invalida|
00005000  74 65 55 52 49 00 00 00  b8 57 00 00 47 fd ff ff  |teURI....W..G...|
00005010  96 15 09 fd 69 00 00 00  13 00 00 00 00 00 00 00  |....i...........|
00005020  70 72 6f 63 65 73 73 66  6c 61 67 73 00 00 00 00  |processflags....|
00005030  24 58 00 00 47 fd ff ff  c9 67 09 fd 84 00 00 00  |$X..G....g......|
00005040  13 00 00 00 00 00 00 00  72 65 74 75 72 6e 66 6c  |........returnfl|
00005050  61 67 73 00 44 41 54 41  87 01 00 00 55 52 49 0a  |ags.DATA....URI.|
00005060  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
00005070  72 65 66 69 78 20 55 52  49 5f 0a 23 54 61 62 6c  |refix URI_.#Tabl|
00005080  65 20 43 6f 6c 75 6d 6e  73 20 34 0a 3c 56 65 72  |e Columns 4.<Ver|
00005090  73 69 6f 6e 3e 0a 3c 44  69 73 70 61 74 63 68 3e  |sion>.<Dispatch>|
000050a0  0a 3c 52 65 71 75 65 73  74 55 52 49 3e 0a 3c 49  |.<RequestURI>.<I|
000050b0  6e 76 61 6c 69 64 61 74  65 55 52 49 3e 0a 23 45  |nvalidateURI>.#E|
000050c0  6e 64 54 61 62 6c 65 0a  0a 4d 65 73 73 61 67 65  |ndTable..Message|
000050d0  20 63 61 6c 6c 73 20 3a  0a 23 49 6e 64 65 6e 74  | calls :.#Indent|
000050e0  20 34 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  | 4.#Table Column|
000050f0  73 20 32 0a 3c 34 45 33  38 30 20 55 52 49 5f 4d  |s 2.<4E380 URI_M|
00005100  53 74 61 72 74 65 64 3d  3e 6d 73 67 5f 34 45 33  |Started=>msg_4E3|
00005110  38 30 3e 0a 3c 34 45 33  38 31 20 55 52 49 5f 4d  |80>.<4E381 URI_M|
00005120  44 79 69 6e 67 3d 3e 6d  73 67 5f 34 45 33 38 31  |Dying=>msg_4E381|
00005130  3e 0a 3c 34 45 33 38 32  20 55 52 49 5f 4d 50 72  |>.<4E382 URI_MPr|
00005140  6f 63 65 73 73 3d 3e 6d  73 67 5f 34 45 33 38 32  |ocess=>msg_4E382|
00005150  3e 0a 3c 34 45 33 38 33  20 55 52 49 5f 4d 52 65  |>.<4E383 URI_MRe|
00005160  74 75 72 6e 52 65 73 75  6c 74 3d 3e 6d 73 67 5f  |turnResult=>msg_|
00005170  34 45 33 38 33 3e 0a 3c  34 45 33 38 34 20 55 52  |4E383>.<4E384 UR|
00005180  49 5f 4d 50 72 6f 63 65  73 73 41 63 6b 3d 3e 6d  |I_MProcessAck=>m|
00005190  73 67 5f 34 45 33 38 34  3e 0a 23 45 6e 64 54 61  |sg_4E384>.#EndTa|
000051a0  62 6c 65 0a 0a 23 49 6e  64 65 6e 74 0a 53 65 72  |ble..#Indent.Ser|
000051b0  76 69 63 65 20 63 61 6c  6c 20 3a 0a 23 49 6e 64  |vice call :.#Ind|
000051c0  65 6e 74 20 34 0a 3c 41  37 20 55 52 49 3d 3e 53  |ent 4.<A7 URI=>S|
000051d0  65 72 76 69 63 65 5f 41  37 3e 0a 00 44 41 54 41  |ervice_A7>..DATA|
000051e0  a6 00 00 00 55 52 49 5f  56 65 72 73 69 6f 6e 20  |....URI_Version |
000051f0  20 28 26 34 45 33 38 30  29 0a 23 50 61 72 65 6e  | (&4E380).#Paren|
00005200  74 20 55 52 49 5f 0a 3d  3e 09 52 30 20 3d 09 66  |t URI_.=>.R0 =.f|
00005210  6c 61 67 73 20 28 63 75  72 72 65 6e 74 6c 79 20  |lags (currently |
00005220  72 65 73 65 72 76 65 64  29 0a 5c 3c 3d 09 52 30  |reserved).\<=.R0|
00005230  20 3d 09 63 75 72 72 65  6e 74 20 76 65 72 73 69  | =.current versi|
00005240  6f 6e 20 2a 20 31 30 30  0a 0a 54 68 69 73 20 53  |on * 100..This S|
00005250  57 49 20 69 73 20 75 73  65 64 20 74 6f 20 66 69  |WI is used to fi|
00005260  6e 64 20 74 68 65 20 76  65 72 73 69 6f 6e 20 6f  |nd the version o|
00005270  66 20 74 68 65 20 55 52  49 20 6d 6f 64 75 6c 65  |f the URI module|
00005280  2e 0a 00 00 44 41 54 41  24 03 00 00 55 52 49 5f  |....DATA$...URI_|
00005290  44 69 73 70 61 74 63 68  20 20 28 26 34 45 33 38  |Dispatch  (&4E38|
000052a0  31 29 0a 23 50 61 72 65  6e 74 20 55 52 49 5f 0a  |1).#Parent URI_.|
000052b0  3d 3e 09 52 30 20 3d 09  3c 66 6c 61 67 73 3d 3e  |=>.R0 =.<flags=>|
000052c0  2e 66 6c 61 67 73 3e 0a  09 52 31 20 3d 09 70 6f  |.flags>..R1 =.po|
000052d0  69 6e 74 65 72 20 74 6f  20 30 20 74 65 72 6d 69  |inter to 0 termi|
000052e0  6e 61 74 65 64 20 55 52  49 0a 09 52 32 20 3d 09  |nated URI..R2 =.|
000052f0  73 6f 75 72 63 65 20 74  61 73 6b 20 68 61 6e 64  |source task hand|
00005300  6c 65 20 69 66 20 62 30  20 73 65 74 2c 20 6f 72  |le if b0 set, or|
00005310  20 30 20 6f 74 68 65 72  77 69 73 65 0a 5c 3c 3d  | 0 otherwise.\<=|
00005320  09 52 30 20 3d 09 3c 72  65 74 75 72 6e 20 66 6c  |.R0 =.<return fl|
00005330  61 67 73 3d 3e 2e 72 65  74 75 72 6e 3e 0a 09 52  |ags=>.return>..R|
00005340  32 20 3d 09 74 61 73 6b  20 68 61 6e 64 6c 65 20  |2 =.task handle |
00005350  6f 66 20 55 52 49 20 68  61 6e 64 6c 65 72 0a 09  |of URI handler..|
00005360  52 33 20 3d 09 55 52 49  20 68 61 6e 64 6c 65 0a  |R3 =.URI handle.|
00005370  0a 54 68 69 73 20 53 57  49 20 69 73 20 75 73 65  |.This SWI is use|
00005380  64 20 62 79 20 61 6e 20  61 70 70 6c 69 63 61 74  |d by an applicat|
00005390  69 6f 6e 20 74 6f 20 63  68 65 63 6b 20 74 68 65  |ion to check the|
000053a0  20 76 61 6c 69 64 69 74  79 20 6f 66 2c 20 6f 72  | validity of, or|
000053b0  20 61 63 63 65 73 73 20  61 20 55 52 49 2e 20 54  | access a URI. T|
000053c0  68 65 20 74 61 73 6b 20  77 69 6c 6c 20 62 65 20  |he task will be |
000053d0  69 6e 66 6f 72 6d 65 64  20 6f 66 20 74 68 65 20  |informed of the |
000053e0  72 65 73 75 6c 74 20 62  79 20 77 69 6d 70 20 6d  |result by wimp m|
000053f0  65 73 73 61 67 65 20 3c  55 52 49 5f 4d 52 65 74  |essage <URI_MRet|
00005400  75 72 6e 52 65 73 75 6c  74 3d 3e 4d 73 67 5f 34  |urnResult=>Msg_4|
00005410  45 33 38 33 3e 2c 20 6f  72 20 73 65 72 76 69 63  |E383>, or servic|
00005420  65 20 63 61 6c 6c 20 3c  55 52 49 5f 52 65 74 75  |e call <URI_Retu|
00005430  72 6e 52 65 73 75 6c 74  3d 3e 53 65 72 76 69 63  |rnResult=>Servic|
00005440  65 5f 41 37 3e 2e 0a 23  53 75 62 70 61 67 65 20  |e_A7>..#Subpage |
00005450  66 6c 61 67 73 0a 55 52  49 5f 44 69 73 70 61 74  |flags.URI_Dispat|
00005460  63 68 20 66 6c 61 67 73  0a 62 69 74 09 6d 65 61  |ch flags.bit.mea|
00005470  6e 69 6e 67 20 69 66 20  73 65 74 0a 23 4c 69 6e  |ning if set.#Lin|
00005480  65 0a 30 09 69 6e 66 6f  72 6d 20 63 61 6c 6c 65  |e.0.inform calle|
00005490  72 20 6f 66 20 72 65 73  75 6c 74 20 28 52 32 20  |r of result (R2 |
000054a0  76 61 6c 69 64 29 0a 31  09 6a 75 73 74 20 63 68  |valid).1.just ch|
000054b0  65 63 6b 20 28 62 30 20  6d 75 73 74 20 62 65 20  |eck (b0 must be |
000054c0  73 65 74 29 2c 20 69 66  20 75 6e 73 65 74 20 70  |set), if unset p|
000054d0  72 6f 63 65 73 73 0a 32  09 64 6f 6e 27 74 20 61  |rocess.2.don't a|
000054e0  74 74 65 6d 70 74 20 65  78 74 65 72 6e 61 6c 20  |ttempt external |
000054f0  70 72 6f 63 65 73 73 20  73 74 61 72 74 75 70 0a  |process startup.|
00005500  33 2d 33 31 09 72 65 73  65 72 76 65 64 20 28 6d  |3-31.reserved (m|
00005510  75 73 74 20 62 65 20 30  29 0a 0a 23 53 75 62 70  |ust be 0)..#Subp|
00005520  61 67 65 20 72 65 74 75  72 6e 0a 55 52 49 5f 44  |age return.URI_D|
00005530  69 73 70 61 74 63 68 20  72 65 74 75 72 6e 20 66  |ispatch return f|
00005540  6c 61 67 73 0a 62 69 74  09 6d 65 61 6e 69 6e 67  |lags.bit.meaning|
00005550  20 69 66 20 73 65 74 0a  23 4c 69 6e 65 0a 30 09  | if set.#Line.0.|
00005560  72 65 71 75 65 73 74 20  77 61 73 20 72 65 6a 65  |request was reje|
00005570  63 74 65 64 2c 20 55 52  49 20 77 6f 6e 27 74 20  |cted, URI won't |
00005580  62 65 20 64 69 73 70 61  74 63 68 65 64 0a 31 2d  |be dispatched.1-|
00005590  33 31 09 72 65 73 65 72  76 65 64 20 28 6d 75 73  |31.reserved (mus|
000055a0  74 20 62 65 20 30 29 0a  44 41 54 41 75 01 00 00  |t be 0).DATAu...|
000055b0  55 52 49 5f 52 65 71 75  65 73 74 55 52 49 20 20  |URI_RequestURI  |
000055c0  28 26 34 45 33 38 32 29  0a 23 50 61 72 65 6e 74  |(&4E382).#Parent|
000055d0  20 55 52 49 5f 0a 3d 3e  09 52 30 20 3d 09 66 6c  | URI_.=>.R0 =.fl|
000055e0  61 67 73 20 28 63 75 72  72 65 6e 74 6c 79 20 72  |ags (currently r|
000055f0  65 73 65 72 76 65 64 29  0a 09 52 31 20 3d 09 70  |eserved)..R1 =.p|
00005600  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00005610  20 66 6f 72 20 55 52 49  2c 20 6f 72 20 30 20 74  | for URI, or 0 t|
00005620  6f 20 72 65 61 64 20 73  69 7a 65 0a 09 52 32 20  |o read size..R2 |
00005630  3d 09 6c 65 6e 67 74 68  20 6f 66 20 62 75 66 66  |=.length of buff|
00005640  65 72 0a 09 52 33 20 3d  09 55 52 49 20 68 61 6e  |er..R3 =.URI han|
00005650  64 6c 65 0a 0a 5c 3c 3d  09 52 32 20 3d 09 6f 66  |dle..\<=.R2 =.of|
00005660  66 73 65 74 20 6f 66 20  74 65 72 6d 69 6e 61 74  |fset of terminat|
00005670  69 6e 67 20 6e 75 6c 6c  2c 20 6f 72 20 73 69 7a  |ing null, or siz|
00005680  65 20 69 66 20 52 31 20  77 61 73 20 30 2e 0a 0a  |e if R1 was 0...|
00005690  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
000056a0  20 62 79 20 61 6e 20 61  70 70 6c 69 63 61 74 69  | by an applicati|
000056b0  6f 6e 20 6f 72 20 6d 6f  64 75 6c 65 20 74 6f 20  |on or module to |
000056c0  66 69 6e 64 20 74 68 65  20 73 69 7a 65 20 6f 66  |find the size of|
000056d0  20 61 20 74 68 65 20 55  52 49 20 6f 72 20 74 6f  | a the URI or to|
000056e0  20 63 6f 70 79 20 69 74  20 69 6e 74 6f 20 69 74  | copy it into it|
000056f0  27 73 20 62 75 66 66 65  72 20 61 6e 64 20 61 63  |'s buffer and ac|
00005700  63 65 70 74 20 74 68 61  74 20 69 74 20 77 69 6c  |cept that it wil|
00005710  6c 20 68 61 6e 64 6c 65  20 69 74 2e 0a 00 00 00  |l handle it.....|
00005720  44 41 54 41 97 00 00 00  55 52 49 5f 49 6e 76 61  |DATA....URI_Inva|
00005730  6c 69 64 61 74 65 55 52  49 20 20 28 26 34 45 33  |lidateURI  (&4E3|
00005740  38 33 29 0a 23 50 61 72  65 6e 74 20 55 52 49 5f  |83).#Parent URI_|
00005750  0a 3d 3e 09 52 30 20 3d  09 66 6c 61 67 73 20 28  |.=>.R0 =.flags (|
00005760  63 75 72 72 65 6e 74 6c  79 20 72 65 73 65 72 76  |currently reserv|
00005770  65 64 29 0a 09 52 33 20  3d 09 55 52 49 20 68 61  |ed)..R3 =.URI ha|
00005780  6e 64 6c 65 0a 0a 54 68  69 73 20 53 57 49 20 69  |ndle..This SWI i|
00005790  73 20 75 73 65 64 20 74  6f 20 6d 61 72 6b 20 61  |s used to mark a|
000057a0  20 55 52 49 20 61 73 20  62 65 69 6e 67 20 69 6e  | URI as being in|
000057b0  76 61 6c 69 64 2e 0a 00  44 41 54 41 69 00 00 00  |valid...DATAi...|
000057c0  55 52 49 5f 50 72 6f 63  65 73 73 20 66 6c 61 67  |URI_Process flag|
000057d0  73 0a 62 69 74 09 6d 65  61 6e 69 6e 67 20 69 66  |s.bit.meaning if|
000057e0  20 73 65 74 0a 23 6c 69  6e 65 0a 30 09 6a 75 73  | set.#line.0.jus|
000057f0  74 20 63 68 65 63 6b 2c  20 64 6f 6e 27 74 20 70  |t check, don't p|
00005800  72 6f 63 65 73 73 0a 31  2d 33 31 09 72 65 73 65  |rocess.1-31.rese|
00005810  72 76 65 64 20 28 6d 75  73 74 20 62 65 20 30 29  |rved (must be 0)|
00005820  0a 00 00 00 44 41 54 41  84 00 00 00 55 52 49 5f  |....DATA....URI_|
00005830  52 65 74 75 72 6e 52 65  73 75 6c 74 20 66 6c 61  |ReturnResult fla|
00005840  67 73 0a 62 69 74 09 6d  65 61 6e 69 6e 67 20 69  |gs.bit.meaning i|
00005850  66 20 73 65 74 0a 23 4c  69 6e 65 0a 30 09 55 52  |f set.#Line.0.UR|
00005860  49 20 77 61 73 20 6e 6f  74 20 63 6c 61 69 6d 65  |I was not claime|
00005870  64 20 28 6f 74 68 65 72  77 69 73 65 2c 20 69 74  |d (otherwise, it|
00005880  20 77 61 73 20 63 6c 61  69 6d 65 64 29 0a 31 2d  | was claimed).1-|
00005890  33 31 09 72 65 73 65 72  76 65 64 20 28 6d 75 73  |31.reserved (mus|
000058a0  74 20 62 65 20 30 29 0a  44 49 52 24 2c 00 00 00  |t be 0).DIR$,...|
000058b0  2c 00 00 00 d4 58 00 00  47 fd ff ff f6 55 14 a9  |,....X..G....U..|
000058c0  3c 00 00 00 33 00 00 00  00 00 00 00 21 52 6f 6f  |<...3.......!Roo|
000058d0  74 00 00 00 44 41 54 41  3c 00 00 00 57 65 62 46  |t...DATA<...WebF|
000058e0  54 50 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |TP.#Table Column|
000058f0  73 20 32 0a 4f 70 65 6e  0a 53 74 61 74 75 73 0a  |s 2.Open.Status.|
00005900  43 6c 6f 73 65 0a 23 45  6e 64 54 61 62 6c 65 0a  |Close.#EndTable.|
00005910  44 49 52 24 2c 00 00 00  2c 00 00 00 3c 59 00 00  |DIR$,...,...<Y..|
00005920  47 fd ff ff 65 6b 14 a9  3f 00 00 00 33 00 00 00  |G...ek..?...3...|
00005930  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00005940  3f 00 00 00 57 65 62 47  6f 70 68 65 72 0a 23 54  |?...WebGopher.#T|
00005950  61 62 6c 65 20 43 6f 6c  75 6d 6e 73 20 32 0a 4f  |able Columns 2.O|
00005960  70 65 6e 0a 53 74 61 74  75 73 0a 43 6c 6f 73 65  |pen.Status.Close|
00005970  0a 23 45 6e 64 54 61 62  6c 65 0a 00 44 41 54 41  |.#EndTable..DATA|
00005980  84 00 00 00 1e 40 2d e9  00 20 d0 e5 58 00 52 e3  |.....@-.. ..X.R.|
00005990  01 00 80 02 1e 80 fd 08  00 20 d0 e5 21 00 52 e3  |......... ..!.R.|
000059a0  01 20 d0 05 78 00 52 03  02 20 d0 05 32 00 52 03  |. ..x.R.. ..2.R.|
000059b0  03 20 d0 05 36 00 52 03  1e 80 fd 18 00 30 a0 e1  |. ..6.R......0..|
000059c0  01 40 a0 e1 04 10 80 e2  10 00 a0 e3 21 00 02 ef  |.@..........!...|
000059d0  03 00 a0 61 1e 80 fd 68  02 00 a0 e1 02 08 c0 e3  |...a...h........|
000059e0  04 10 a0 e1 40 20 a0 e3  38 00 02 ef 03 00 a0 61  |....@ ..8......a|
000059f0  01 00 a0 71 1e 80 fd e8  21 78 32 36 00 00 00 00  |...q....!x26....|
00005a00  44 49 52 24 74 00 00 00  74 00 00 00 74 5a 00 00  |DIR$t...t...tZ..|
00005a10  47 fd ff ff 5d 31 e4 c3  2e 00 00 00 33 00 00 00  |G...]1......3...|
00005a20  00 00 00 00 21 52 6f 6f  74 00 00 00 a4 5a 00 00  |....!Root....Z..|
00005a30  48 ff ff ff f4 2e 34 00  36 01 00 00 33 00 00 00  |H.....4.6...3...|
00005a40  00 00 00 00 44 65 63 6f  64 65 4e 61 6d 65 00 00  |....DecodeName..|
00005a50  dc 5b 00 00 47 ff ff ff  9e a8 e4 c3 42 02 00 00  |.[..G.......B...|
00005a60  33 00 00 00 00 00 00 00  45 6e 63 6f 64 65 4e 61  |3.......EncodeNa|
00005a70  6d 65 00 00 44 41 54 41  2e 00 00 00 52 47 42 0a  |me..DATA....RGB.|
00005a80  3c 52 47 42 5f 44 65 63  6f 64 65 4e 61 6d 65 3e  |<RGB_DecodeName>|
00005a90  0a 3c 52 47 42 5f 45 6e  63 6f 64 65 4e 61 6d 65  |.<RGB_EncodeName|
00005aa0  3e 0a 00 00 44 41 54 41  36 01 00 00 52 47 42 5f  |>...DATA6...RGB_|
00005ab0  44 65 63 6f 64 65 4e 61  6d 65 20 20 28 26 39 30  |DecodeName  (&90|
00005ac0  36 38 30 29 0a 23 50 61  72 65 6e 74 20 52 47 42  |680).#Parent RGB|
00005ad0  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
00005ae0  72 20 74 6f 20 63 6f 6c  6f 75 72 20 6e 61 6d 65  |r to colour name|
00005af0  0a 3c 3d 09 52 31 20 3d  09 26 42 42 47 47 52 52  |.<=.R1 =.&BBGGRR|
00005b00  30 30 20 6f 66 20 63 6f  6c 6f 75 72 2c 20 6f 72  |00 of colour, or|
00005b10  20 2d 31 20 69 66 20 63  6f 6c 6f 75 72 20 63 6f  | -1 if colour co|
00005b20  75 6c 64 20 6e 6f 74 20  62 65 20 66 6f 75 6e 64  |uld not be found|
00005b30  20 69 6e 20 64 61 74 61  62 61 73 65 0a 0a 54 68  | in database..Th|
00005b40  69 73 20 53 57 49 20 63  6f 6e 76 65 72 74 73 20  |is SWI converts |
00005b50  61 20 63 6f 6c 6f 75 72  20 6e 61 6d 65 20 69 6e  |a colour name in|
00005b60  74 6f 20 61 20 63 6f 6c  6f 75 72 20 6e 75 6d 62  |to a colour numb|
00005b70  65 72 2e 20 23 72 72 67  67 62 62 20 6e 61 6d 65  |er. #rrggbb name|
00005b80  73 20 77 69 6c 6c 20 61  6c 77 61 79 73 20 77 6f  |s will always wo|
00005b90  72 6b 2c 20 62 75 74 20  27 72 65 61 6c 27 20 6e  |rk, but 'real' n|
00005ba0  61 6d 65 73 20 72 65 71  75 69 72 65 20 74 68 65  |ames require the|
00005bb0  20 64 61 74 61 62 61 73  65 20 74 6f 20 62 65 20  | database to be |
00005bc0  70 72 65 73 65 6e 74 20  69 6e 20 49 6e 65 74 44  |present in InetD|
00005bd0  42 61 73 65 3a 72 67 62  2e 0a 00 00 44 41 54 41  |Base:rgb....DATA|
00005be0  42 02 00 00 52 47 42 5f  45 6e 63 6f 64 65 4e 61  |B...RGB_EncodeNa|
00005bf0  6d 65 20 28 26 39 30 36  38 31 29 0a 23 50 61 72  |me (&90681).#Par|
00005c00  65 6e 74 20 52 47 42 5f  0a 3d 3e 09 52 30 20 3d  |ent RGB_.=>.R0 =|
00005c10  09 26 42 42 47 47 52 52  30 30 20 6f 66 20 63 6f  |.&BBGGRR00 of co|
00005c20  6c 6f 75 72 0a 09 52 31  20 3d 09 3c 66 6c 61 67  |lour..R1 =.<flag|
00005c30  73 3d 3e 2e 66 6c 61 67  73 3e 0a 09 52 32 20 3d  |s=>.flags>..R2 =|
00005c40  09 70 6f 69 6e 74 65 72  20 74 6f 20 36 34 20 62  |.pointer to 64 b|
00005c50  79 74 65 20 62 6c 6f 63  6b 20 28 31 32 38 20 62  |yte block (128 b|
00005c60  79 74 65 73 20 69 66 20  62 30 20 73 65 74 29 0a  |ytes if b0 set).|
00005c70  3c 3d 09 52 30 20 3d 09  64 69 73 74 61 6e 63 65  |<=.R0 =.distance|
00005c80  20 6f 66 20 72 65 74 75  72 6e 65 64 20 63 6f 6c  | of returned col|
00005c90  6f 75 72 20 66 72 6f 6d  20 74 68 61 74 20 72 65  |our from that re|
00005ca0  71 75 65 73 74 65 64 2c  20 69 66 20 62 30 20 73  |quested, if b0 s|
00005cb0  65 74 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |et..R1 =.pointer|
00005cc0  20 74 6f 20 6e 61 6d 65  2c 20 6f 72 20 2d 31 20  | to name, or -1 |
00005cd0  69 66 20 63 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |if could not be |
00005ce0  6d 61 74 63 68 65 64 0a  0a 54 68 69 73 20 53 57  |matched..This SW|
00005cf0  49 20 63 6f 6e 76 65 72  74 73 20 61 20 63 6f 6c  |I converts a col|
00005d00  6f 75 72 20 6e 75 6d 62  65 72 20 69 6e 74 6f 20  |our number into |
00005d10  61 20 63 6f 6c 6f 75 72  20 6e 61 6d 65 2e 20 54  |a colour name. T|
00005d20  68 65 20 27 62 65 73 74  20 6d 61 74 63 68 27 20  |he 'best match' |
00005d30  72 75 6c 65 20 75 73 65  73 20 74 68 65 20 73 61  |rule uses the sa|
00005d40  6d 65 20 77 65 69 67 68  74 69 6e 67 73 20 61 73  |me weightings as|
00005d50  20 74 68 65 20 43 6f 6c  6f 75 72 54 72 61 6e 73  | the ColourTrans|
00005d60  20 6d 6f 64 75 6c 65 20  28 52 3d 32 2c 20 47 3d  | module (R=2, G=|
00005d70  34 2c 20 42 3d 31 29 2e  0a 23 0a 23 53 75 62 70  |4, B=1)..#.#Subp|
00005d80  61 67 65 20 66 6c 61 67  73 0a 52 47 42 5f 45 6e  |age flags.RGB_En|
00005d90  63 6f 64 65 4e 61 6d 65  20 66 6c 61 67 73 0a 42  |codeName flags.B|
00005da0  69 74 09 4d 65 61 6e 69  6e 67 20 69 66 20 73 65  |it.Meaning if se|
00005db0  74 0a 23 6c 69 6e 65 0a  30 09 66 69 6e 64 20 62  |t.#line.0.find b|
00005dc0  65 73 74 20 6d 61 74 63  68 20 77 69 74 68 6f 75  |est match withou|
00005dd0  74 20 72 65 73 6f 72 74  69 6e 67 20 74 6f 20 23  |t resorting to #|
00005de0  72 72 67 67 62 62 2c 20  6f 74 68 65 72 77 69 73  |rrggbb, otherwis|
00005df0  65 20 66 69 6e 64 20 65  78 61 63 74 20 6d 61 74  |e find exact mat|
00005e00  63 68 0a 6f 74 68 65 72  73 09 72 65 73 65 72 76  |ch.others.reserv|
00005e10  65 64 2c 20 6d 75 73 74  20 62 65 20 30 0a 00 00  |ed, must be 0...|
00005e20  44 49 52 24 2c 00 00 00  2c 00 00 00 4c 5e 00 00  |DIR$,...,...L^..|
00005e30  47 fd ff ff 02 a5 e5 c3  72 00 00 00 33 00 00 00  |G.......r...3...|
00005e40  00 00 00 00 21 72 6f 6f  74 00 00 00 44 41 54 41  |....!root...DATA|
00005e50  72 00 00 00 50 50 50 64  72 69 76 65 72 0a 23 74  |r...PPPdriver.#t|
00005e60  61 62 6c 65 20 63 6f 6c  75 6d 6e 73 20 32 0a 44  |able columns 2.D|
00005e70  43 49 56 65 72 73 69 6f  6e 0a 49 6e 71 75 69 72  |CIVersion.Inquir|
00005e80  65 0a 47 65 74 4e 65 74  77 6f 72 6b 4d 54 55 0a  |e.GetNetworkMTU.|
00005e90  53 65 74 4e 65 74 77 6f  72 6b 4d 54 55 0a 54 72  |SetNetworkMTU.Tr|
00005ea0  61 6e 73 6d 69 74 0a 46  69 6c 74 65 72 0a 53 74  |ansmit.Filter.St|
00005eb0  61 74 73 0a 23 65 6e 64  74 61 62 6c 65 0a 00 00  |ats.#endtable...|
00005ec0  44 49 52 24 50 00 00 00  50 00 00 00 10 5f 00 00  |DIR$P...P...._..|
00005ed0  47 fd ff ff 2a ab 25 f7  b3 00 00 00 33 00 00 00  |G...*.%.....3...|
00005ee0  00 00 00 00 21 52 6f 6f  74 00 00 00 c4 5f 00 00  |....!Root...._..|
00005ef0  47 ff ff ff 59 9f 25 f7  ab 02 00 00 33 00 00 00  |G...Y.%.....3...|
00005f00  00 00 00 00 54 72 61 6e  73 6c 61 74 65 00 00 00  |....Translate...|
00005f10  44 41 54 41 b3 00 00 00  4d 69 6d 65 4d 61 70 0a  |DATA....MimeMap.|
00005f20  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
00005f30  72 65 66 69 78 20 4d 69  6d 65 4d 61 70 5f 0a 3c  |refix MimeMap_.<|
00005f40  54 72 61 6e 73 6c 61 74  65 3e 0a 0a 4e 6f 74 65  |Translate>..Note|
00005f50  3a 20 56 65 72 73 69 6f  6e 73 20 6f 66 20 74 68  |: Versions of th|
00005f60  65 20 4d 69 6d 65 4d 61  70 20 6d 6f 64 75 6c 65  |e MimeMap module|
00005f70  20 70 72 69 6f 72 20 74  6f 20 30 2e 30 35 20 75  | prior to 0.05 u|
00005f80  73 65 20 61 6e 20 69 6e  76 61 6c 69 64 20 53 57  |se an invalid SW|
00005f90  49 20 62 61 73 65 2e 20  44 6f 20 2a 4e 4f 54 2a  |I base. Do *NOT*|
00005fa0  20 75 73 65 20 6f 72 20  73 75 70 70 6f 72 74 20  | use or support |
00005fb0  74 68 65 20 6f 6c 64 65  72 20 76 65 72 73 69 6f  |the older versio|
00005fc0  6e 73 2e 00 44 41 54 41  ab 02 00 00 4d 69 6d 65  |ns..DATA....Mime|
00005fd0  4d 61 70 5f 54 72 61 6e  73 6c 61 74 65 20 20 28  |Map_Translate  (|
00005fe0  26 35 30 42 30 30 29 0a  23 50 61 72 65 6e 74 20  |&50B00).#Parent |
00005ff0  4d 69 6d 65 4d 61 70 5f  0a 3d 3e 09 52 30 20 3d  |MimeMap_.=>.R0 =|
00006000  09 69 6e 70 75 74 20 3c  66 6f 72 6d 61 74 3d 3e  |.input <format=>|
00006010  2e 66 6f 72 6d 61 74 3e  0a 09 52 31 20 3d 09 66  |.format>..R1 =.f|
00006020  69 6c 65 74 79 70 65 2c  20 6f 72 20 70 6f 69 6e  |iletype, or poin|
00006030  74 65 72 20 74 6f 20 62  75 66 66 65 72 0a 09 52  |ter to buffer..R|
00006040  32 20 3d 09 6f 75 74 70  75 74 20 3c 66 6f 72 6d  |2 =.output <form|
00006050  61 74 3d 3e 2e 66 6f 72  6d 61 74 3e 0a 09 52 33  |at=>.format>..R3|
00006060  20 3d 09 6f 75 74 70 75  74 20 62 75 66 66 65 72  | =.output buffer|
00006070  2c 20 69 66 20 6e 65 65  64 65 64 0a 0a 3c 3d 09  |, if needed..<=.|
00006080  52 30 2d 52 32 20 70 72  65 73 65 72 76 65 64 0a  |R0-R2 preserved.|
00006090  09 52 33 20 3d 09 72 65  73 75 6c 74 2c 20 6f 72  |.R3 =.result, or|
000060a0  20 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  | pointer to buff|
000060b0  65 72 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |er..This SWI is |
000060c0  75 73 65 64 20 74 6f 20  63 6f 6e 76 65 72 74 73  |used to converts|
000060d0  20 62 65 74 77 65 65 6e  20 52 49 53 43 20 4f 53  | between RISC OS|
000060e0  20 66 69 6c 65 20 74 79  70 65 73 2c 20 4d 49 4d  | file types, MIM|
000060f0  45 20 63 6f 6e 74 65 6e  74 20 74 79 70 65 73 20  |E content types |
00006100  61 6e 64 20 27 64 6f 74  27 20 65 78 74 65 6e 73  |and 'dot' extens|
00006110  69 6f 6e 73 20 74 6f 20  66 69 6c 65 20 6e 61 6d  |ions to file nam|
00006120  65 73 2e 20 41 6e 20 65  72 72 6f 72 20 77 69 6c  |es. An error wil|
00006130  6c 20 62 65 20 72 65 74  75 72 6e 65 64 20 69 66  |l be returned if|
00006140  20 74 68 65 20 74 72 61  6e 73 6c 61 74 69 6f 6e  | the translation|
00006150  20 63 61 6e 6e 6f 74 20  62 65 20 70 65 72 66 6f  | cannot be perfo|
00006160  72 6d 65 64 2e 0a 23 53  75 62 70 61 67 65 20 66  |rmed..#Subpage f|
00006170  6f 72 6d 61 74 0a 4d 69  6d 65 4d 61 70 20 74 72  |ormat.MimeMap tr|
00006180  61 6e 73 6c 61 74 69 6f  6e 20 66 6f 72 6d 61 74  |anslation format|
00006190  73 0a 46 6f 72 6d 61 74  09 4e 61 6d 65 09 09 09  |s.Format.Name...|
000061a0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 3b 57 72  |Meaning.#Line;Wr|
000061b0  61 70 20 6f 66 66 0a 30  09 4d 4d 4d 5f 54 59 50  |ap off.0.MMM_TYP|
000061c0  45 5f 52 49 53 43 4f 53  09 09 46 69 6c 65 74 79  |E_RISCOS..Filety|
000061d0  70 65 20 61 73 20 61 20  6e 75 6d 62 65 72 0a 31  |pe as a number.1|
000061e0  09 4d 4d 4d 5f 54 59 50  45 5f 52 49 53 43 4f 53  |.MMM_TYPE_RISCOS|
000061f0  5f 53 54 52 49 4e 47 09  46 69 6c 65 74 79 70 65  |_STRING.Filetype|
00006200  20 61 73 20 73 74 72 69  6e 67 0a 32 09 4d 4d 4d  | as string.2.MMM|
00006210  5f 54 59 50 45 5f 4d 49  4d 45 09 09 43 6f 6e 74  |_TYPE_MIME..Cont|
00006220  65 6e 74 20 74 79 70 65  20 61 73 20 73 74 72 69  |ent type as stri|
00006230  6e 67 0a 33 09 4d 4d 4d  5f 54 59 50 45 5f 44 4f  |ng.3.MMM_TYPE_DO|
00006240  54 5f 45 58 54 4e 09 45  78 74 65 6e 74 69 6f 6e  |T_EXTN.Extention|
00006250  20 61 73 20 73 74 72 69  6e 67 0a 6f 74 68 65 72  | as string.other|
00006260  73 09 20 09 09 09 72 65  73 65 72 76 65 64 0a 00  |s. ...reserved..|
00006270  44 41 54 41 3b 06 00 00  49 6e 74 65 72 6e 65 74  |DATA;...Internet|
00006280  20 53 57 49 73 20 6d 61  6e 75 61 6c 0a 23 41 6c  | SWIs manual.#Al|
00006290  69 67 6e 20 43 65 6e 74  72 65 0a 7b 66 68 33 7d  |ign Centre.{fh3}|
000062a0  49 6e 74 65 72 6e 65 74  20 53 57 49 73 20 6d 61  |Internet SWIs ma|
000062b0  6e 75 61 6c 7b 66 7d 0a  23 6c 69 6e 65 0a 23 41  |nual{f}.#line.#A|
000062c0  6c 69 67 6e 20 4c 65 66  74 0a 54 68 69 73 20 6d  |lign Left.This m|
000062d0  61 6e 75 61 6c 20 69 73  20 70 61 72 74 20 6f 66  |anual is part of|
000062e0  20 61 20 63 6f 6c 6c 65  63 74 69 6f 6e 20 63 6f  | a collection co|
000062f0  6d 70 72 69 73 69 6e 67  20 74 68 65 20 6d 61 69  |mprising the mai|
00006300  6e 20 70 75 62 6c 69 63  20 64 6f 6d 61 69 6e 20  |n public domain |
00006310  70 72 6f 67 72 61 6d 6d  69 6e 67 20 72 65 66 65  |programming refe|
00006320  72 65 6e 63 65 2e 20 54  68 65 20 6f 74 68 65 72  |rence. The other|
00006330  20 6d 61 6e 75 61 6c 73  20 69 6e 20 74 68 65 20  | manuals in the |
00006340  73 65 72 69 65 73 20 61  72 65 20 3a 0a 23 49 6e  |series are :.#In|
00006350  64 65 6e 74 20 32 0a 23  50 6f 73 74 66 69 78 20  |dent 2.#Postfix |
00006360  3a 21 52 6f 6f 74 0a 3c  4f 53 3e 09 09 54 68 65  |:!Root.<OS>..The|
00006370  20 62 61 73 65 20 6f 70  65 72 61 74 69 6e 67 20  | base operating |
00006380  73 79 73 74 65 6d 20 73  74 75 66 66 0a 3c 57 69  |system stuff.<Wi|
00006390  6d 70 3e 09 09 54 68 65  20 64 65 73 6b 74 6f 70  |mp>..The desktop|
000063a0  20 70 61 72 74 20 6f 66  20 74 68 65 20 6f 70 65  | part of the ope|
000063b0  72 61 74 69 6e 67 20 73  79 73 74 65 6d 0a 3c 49  |rating system.<I|
000063c0  6e 65 74 53 57 49 73 3e  09 49 6e 74 65 72 6e 65  |netSWIs>.Interne|
000063d0  74 20 62 61 73 65 64 20  53 57 49 73 0a 3c 49 6e  |t based SWIs.<In|
000063e0  65 74 53 6f 63 6b 65 74  3e 09 49 6e 74 65 72 6e  |etSocket>.Intern|
000063f0  65 74 20 73 6f 63 6b 65  74 20 63 61 6c 6c 73 0a  |et socket calls.|
00006400  3c 4d 69 73 63 53 57 49  73 3e 09 4d 69 73 63 65  |<MiscSWIs>.Misce|
00006410  6c 6c 61 6e 65 6f 75 73  20 53 57 49 73 0a 3c 56  |llaneous SWIs.<V|
00006420  44 55 3e 09 09 56 44 55  20 63 6f 6d 6d 61 6e 64  |DU>..VDU command|
00006430  73 0a 3c 54 6f 6f 6c 62  6f 78 3e 09 54 6f 6f 6c  |s.<Toolbox>.Tool|
00006440  62 6f 78 20 28 62 79 20  4e 69 65 6c 20 42 69 6e  |box (by Niel Bin|
00006450  67 68 61 6d 29 0a 23 49  6e 64 65 6e 74 0a 0a 46  |gham).#Indent..F|
00006460  6f 72 20 63 6f 6d 6d 65  6e 74 73 2c 20 73 75 67  |or comments, sug|
00006470  67 65 73 74 69 6f 6e 73  20 61 6e 64 20 73 75 62  |gestions and sub|
00006480  6d 69 73 73 69 6f 6e 73  20 66 6f 72 20 74 68 65  |missions for the|
00006490  73 65 2c 20 70 6c 65 61  73 65 20 6d 61 69 6c 20  |se, please mail |
000064a0  4a 75 73 74 69 6e 20 46  6c 65 74 63 68 65 72 20  |Justin Fletcher |
000064b0  3c 5c 3c 67 65 72 70 68  40 69 6e 6e 6f 63 65 6e  |<\<gerph@innocen|
000064c0  74 2e 63 6f 6d 5c 3e 3d  3e 23 55 52 4c 20 6d 61  |t.com\>=>#URL ma|
000064d0  69 6c 74 6f 3a 67 65 72  70 68 40 69 6e 6e 6f 63  |ilto:gerph@innoc|
000064e0  65 6e 74 2e 63 6f 6d 3e  20 77 68 6f 20 69 73 20  |ent.com> who is |
000064f0  63 75 72 72 65 6e 74 6c  79 20 6d 6f 64 65 72 61  |currently modera|
00006500  74 69 6e 67 20 74 68 65  20 63 6f 6c 6c 65 63 74  |ting the collect|
00006510  69 6f 6e 2e 20 54 68 65  20 70 72 69 6d 61 72 79  |ion. The primary|
00006520  20 6c 6f 63 61 74 69 6f  6e 20 66 6f 72 20 74 68  | location for th|
00006530  65 73 65 20 6d 61 6e 75  61 6c 73 20 77 69 6c 6c  |ese manuals will|
00006540  20 62 65 20 3c 68 74 74  70 3a 2f 2f 66 72 65 65  | be <http://free|
00006550  6e 65 74 2e 62 61 72 6e  65 74 2e 61 63 2e 75 6b  |net.barnet.ac.uk|
00006560  2f 6d 61 6e 75 61 6c 73  2f 3d 3e 23 55 52 4c 20  |/manuals/=>#URL |
00006570  68 74 74 70 3a 2f 2f 66  72 65 65 6e 65 74 2e 62  |http://freenet.b|
00006580  61 72 6e 65 74 2e 61 63  2e 75 6b 2f 6d 61 6e 75  |arnet.ac.uk/manu|
00006590  61 6c 73 2f 3e 2e 0a 0a  43 6c 69 63 6b 20 3c 68  |als/>...Click <h|
000065a0  65 72 65 3d 3e 2e 68 69  73 74 31 30 32 3e 20 66  |ere=>.hist102> f|
000065b0  6f 72 20 68 69 73 74 6f  72 79 20 69 6e 66 6f 72  |or history infor|
000065c0  6d 61 74 69 6f 6e 2e 0a  23 0a 23 53 75 62 70 61  |mation..#.#Subpa|
000065d0  67 65 20 68 69 73 74 31  30 30 0a 48 69 73 74 6f  |ge hist100.Histo|
000065e0  72 79 20 66 6f 72 20 49  6e 65 74 53 57 49 73 20  |ry for InetSWIs |
000065f0  76 31 2e 30 30 0a 23 41  6c 69 67 6e 20 52 69 67  |v1.00.#Align Rig|
00006600  68 74 0a 7b 2f 7d 32 32  20 53 65 70 20 31 39 39  |ht.{/}22 Sep 199|
00006610  37 7b 2f 7d 0a 23 41 6c  69 67 6e 20 4c 65 66 74  |7{/}.#Align Left|
00006620  0a 8f 09 46 69 72 73 74  20 72 65 6c 65 61 73 65  |...First release|
00006630  0a 0a 3c 4e 65 78 74 20  68 69 73 74 6f 72 79 3d  |..<Next history=|
00006640  3e 2e 68 69 73 74 31 30  31 3e 0a 23 0a 23 53 75  |>.hist101>.#.#Su|
00006650  62 70 61 67 65 20 68 69  73 74 31 30 31 0a 48 69  |bpage hist101.Hi|
00006660  73 74 6f 72 79 20 66 6f  72 20 49 6e 65 74 53 57  |story for InetSW|
00006670  49 73 20 76 31 2e 30 31  0a 23 41 6c 69 67 6e 20  |Is v1.01.#Align |
00006680  52 69 67 68 74 0a 7b 2f  7d 31 35 20 4e 6f 76 20  |Right.{/}15 Nov |
00006690  31 39 39 37 7b 2f 7d 0a  23 41 6c 69 67 6e 20 4c  |1997{/}.#Align L|
000066a0  65 66 74 0a 8f 09 41 64  64 65 64 20 44 4e 53 52  |eft...Added DNSR|
000066b0  65 73 6f 6c 76 65 72 20  64 6f 63 75 6d 65 6e 74  |esolver document|
000066c0  73 20 28 44 61 76 65 20  54 68 6f 6d 61 73 29 0a  |s (Dave Thomas).|
000066d0  8f 09 46 69 78 65 64 20  62 72 6f 6b 65 6e 20 4d  |..Fixed broken M|
000066e0  69 6d 65 4d 61 70 20 6d  6f 64 75 6c 65 20 64 6f  |imeMap module do|
000066f0  63 73 20 61 74 20 43 61  72 6c 20 45 6c 6b 69 6e  |cs at Carl Elkin|
00006700  73 20 61 64 76 69 63 65  0a 8f 09 43 68 61 6e 67  |s advice...Chang|
00006710  65 64 20 6c 69 6e 6b 20  74 6f 20 49 6e 65 74 53  |ed link to InetS|
00006720  6f 63 6b 65 74 20 72 61  74 68 65 72 20 74 68 61  |ocket rather tha|
00006730  6e 20 49 6e 65 74 0a 8f  09 55 70 64 61 74 65 64  |n Inet...Updated|
00006740  20 55 52 49 20 68 61 6e  64 6c 65 72 20 64 6f 63  | URI handler doc|
00006750  75 6d 65 6e 74 61 74 69  6f 6e 20 74 6f 20 72 65  |umentation to re|
00006760  6c 65 61 73 65 20 38 20  6f 66 20 74 68 65 20 73  |lease 8 of the s|
00006770  70 65 63 69 66 69 63 61  74 69 6f 6e 2e 20 4d 6f  |pecification. Mo|
00006780  76 65 64 20 74 68 65 20  53 65 72 76 69 63 65 73  |ved the Services|
00006790  20 61 6e 64 20 4d 65 73  73 61 67 65 73 20 74 6f  | and Messages to|
000067a0  20 74 68 69 73 20 6d 61  6e 75 61 6c 20 74 6f 20  | this manual to |
000067b0  74 72 79 20 74 6f 20 6b  65 65 70 20 72 65 6c 65  |try to keep rele|
000067c0  76 61 6e 74 20 62 69 74  73 20 74 6f 67 65 74 68  |vant bits togeth|
000067d0  65 72 2e 0a 0a 3c 50 72  65 76 69 6f 75 73 20 68  |er...<Previous h|
000067e0  69 73 74 6f 72 79 3d 3e  2e 68 69 73 74 31 30 30  |istory=>.hist100|
000067f0  3e 09 3c 4e 65 78 74 20  68 69 73 74 6f 72 79 3d  |>.<Next history=|
00006800  3e 2e 68 69 73 74 31 30  32 3e 0a 23 0a 23 53 75  |>.hist102>.#.#Su|
00006810  62 70 61 67 65 20 68 69  73 74 31 30 32 0a 48 69  |bpage hist102.Hi|
00006820  73 74 6f 72 79 20 66 6f  72 20 49 6e 65 74 53 57  |story for InetSW|
00006830  49 73 20 76 31 2e 30 32  0a 23 41 6c 69 67 6e 20  |Is v1.02.#Align |
00006840  52 69 67 68 74 0a 7b 2f  7d 32 32 20 4a 61 6e 20  |Right.{/}22 Jan |
00006850  31 39 39 38 7b 2f 7d 0a  23 41 6c 69 67 6e 20 4c  |1998{/}.#Align L|
00006860  65 66 74 0a 8f 09 53 65  63 74 69 6f 6e 73 20 6f  |eft...Sections o|
00006870  66 20 44 43 49 20 34 20  73 70 65 63 69 66 69 63  |f DCI 4 specific|
00006880  61 74 69 6f 6e 20 61 64  64 65 64 2e 0a 0a 3c 50  |ation added...<P|
00006890  72 65 76 69 6f 75 73 20  68 69 73 74 6f 72 79 3d  |revious history=|
000068a0  3e 2e 68 69 73 74 31 30  31 3e 0a 00 44 49 52 24  |>.hist101>..DIR$|
000068b0  ac 00 00 00 ac 00 00 00  58 69 00 00 47 fd ff ff  |........Xi..G...|
000068c0  cf 61 08 fd a2 00 00 00  13 00 00 00 00 00 00 00  |.a..............|
000068d0  34 45 33 38 30 00 00 00  fc 69 00 00 47 fd ff ff  |4E380....i..G...|
000068e0  1b 67 08 fd e2 00 00 00  13 00 00 00 00 00 00 00  |.g..............|
000068f0  34 45 33 38 31 00 00 00  e0 6a 00 00 47 fd ff ff  |4E381....j..G...|
00006900  23 1a 09 fd 8d 01 00 00  13 00 00 00 00 00 00 00  |#...............|
00006910  34 65 33 38 32 00 00 00  70 6c 00 00 47 fd ff ff  |4e382...pl..G...|
00006920  95 96 0a fd d6 00 00 00  13 00 00 00 00 00 00 00  |................|
00006930  34 65 33 38 33 00 00 00  48 6d 00 00 47 fd ff ff  |4e383...Hm..G...|
00006940  34 9d 09 fd 21 01 00 00  13 00 00 00 00 00 00 00  |4...!...........|
00006950  34 65 33 38 34 00 00 00  44 41 54 41 a2 00 00 00  |4e384...DATA....|
00006960  4d 65 73 73 61 67 65 5f  55 52 49 5f 4d 53 74 61  |Message_URI_MSta|
00006970  72 74 65 64 20 20 28 26  34 45 33 38 30 29 0a 23  |rted  (&4E380).#|
00006980  50 61 72 65 6e 74 20 57  69 6d 70 3a 4d 53 47 5f  |Parent Wimp:MSG_|
00006990  0a 2b 20 32 30 09 66 6c  61 67 73 20 28 63 75 72  |.+ 20.flags (cur|
000069a0  72 65 6e 74 6c 79 20 72  65 73 65 72 76 65 64 29  |rently reserved)|
000069b0  0a 0a 54 68 69 73 20 6d  65 73 73 61 67 65 20 69  |..This message i|
000069c0  73 20 62 72 6f 61 64 63  61 73 74 20 74 6f 20 69  |s broadcast to i|
000069d0  6e 64 69 63 61 74 65 20  74 68 61 74 20 74 68 65  |ndicate that the|
000069e0  20 55 52 49 20 68 61 6e  64 6c 65 72 20 68 61 73  | URI handler has|
000069f0  20 73 74 61 72 74 65 64  2e 0a 00 00 44 41 54 41  | started....DATA|
00006a00  e2 00 00 00 4d 65 73 73  61 67 65 5f 55 52 49 5f  |....Message_URI_|
00006a10  4d 44 79 69 6e 67 20 20  28 26 34 45 33 38 31 29  |MDying  (&4E381)|
00006a20  0a 23 50 61 72 65 6e 74  20 57 69 6d 70 3a 4d 73  |.#Parent Wimp:Ms|
00006a30  67 5f 0a 2b 20 32 30 09  66 6c 61 67 73 20 28 63  |g_.+ 20.flags (c|
00006a40  75 72 72 65 6e 74 6c 79  20 72 65 73 65 72 76 65  |urrently reserve|
00006a50  64 29 0a 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |d)..This message|
00006a60  20 69 73 20 62 72 6f 61  64 63 61 73 74 20 74 6f  | is broadcast to|
00006a70  20 69 6e 64 69 63 61 74  65 20 74 68 61 74 20 74  | indicate that t|
00006a80  68 65 20 55 52 49 20 68  61 6e 64 6c 65 72 20 69  |he URI handler i|
00006a90  73 20 61 62 6f 75 74 20  74 6f 20 64 69 65 2e 0a  |s about to die..|
00006aa0  0a 49 6e 20 4a 75 73 74  69 6e 27 73 20 69 6d 70  |.In Justin's imp|
00006ab0  6c 65 6d 65 6e 74 61 74  69 6f 6e 20 74 68 69 73  |lementation this|
00006ac0  20 63 61 6c 6c 20 6d 61  79 20 6e 6f 74 20 61 6c  | call may not al|
00006ad0  77 61 79 73 20 62 65 20  73 65 6e 74 2e 0a 00 00  |ways be sent....|
00006ae0  44 41 54 41 8d 01 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00006af0  55 52 49 5f 4d 50 72 6f  63 65 73 73 20 20 28 26  |URI_MProcess  (&|
00006b00  34 45 33 38 32 29 0a 23  50 61 72 65 6e 74 20 57  |4E382).#Parent W|
00006b10  69 6d 70 3a 4d 73 67 5f  0a 2b 20 32 30 09 3c 66  |imp:Msg_.+ 20.<f|
00006b20  6c 61 67 73 3d 3e 55 52  49 5f 70 72 6f 63 65 73  |lags=>URI_proces|
00006b30  73 66 6c 61 67 73 3e 0a  2b 20 32 34 09 70 6f 69  |sflags>.+ 24.poi|
00006b40  6e 74 65 72 20 74 6f 20  55 52 49 20 73 74 72 69  |nter to URI stri|
00006b50  6e 67 0a 2b 20 32 38 09  55 52 49 20 68 61 6e 64  |ng.+ 28.URI hand|
00006b60  6c 65 0a 0a 54 68 69 73  20 6d 65 73 73 61 67 65  |le..This message|
00006b70  20 69 73 20 62 72 6f 61  64 63 61 73 74 20 74 6f  | is broadcast to|
00006b80  20 69 6e 64 69 63 61 74  65 20 74 68 61 74 20 74  | indicate that t|
00006b90  68 65 20 55 52 49 20 68  61 6e 64 6c 65 72 20 69  |he URI handler i|
00006ba0  73 20 61 74 74 65 6d 70  74 69 6e 67 20 74 6f 20  |s attempting to |
00006bb0  70 72 6f 63 65 73 73 20  6f 72 20 63 68 65 63 6b  |process or check|
00006bc0  20 61 20 55 52 49 2e 0a  0a 49 66 20 61 6e 20 61  | a URI...If an a|
00006bd0  70 70 6c 69 63 61 74 69  6f 6e 20 63 61 6e 20 70  |pplication can p|
00006be0  72 6f 63 65 73 73 20 74  68 65 20 55 52 49 20 69  |rocess the URI i|
00006bf0  74 20 73 68 6f 75 6c 64  20 61 63 6b 6e 6f 77 6c  |t should acknowl|
00006c00  65 64 67 65 20 74 68 65  20 6d 65 73 73 61 67 65  |edge the message|
00006c10  20 28 77 69 74 68 20 3c  55 52 49 5f 4d 50 72 6f  | (with <URI_MPro|
00006c20  63 65 73 73 41 63 6b 3d  3e 4d 73 67 5f 34 65 33  |cessAck=>Msg_4e3|
00006c30  38 34 3e 29 20 61 6e 64  2c 20 69 66 20 70 72 6f  |84>) and, if pro|
00006c40  63 65 73 73 69 6e 67 20  69 66 20 72 65 71 75 65  |cessing if reque|
00006c50  73 74 65 64 2c 20 63 61  6c 6c 20 3c 55 52 49 5f  |sted, call <URI_|
00006c60  52 65 71 75 65 73 74 55  52 49 3e 2e 0a 00 00 00  |RequestURI>.....|
00006c70  44 41 54 41 d6 00 00 00  4d 65 73 73 61 67 65 5f  |DATA....Message_|
00006c80  55 52 49 5f 4d 52 65 74  75 72 6e 52 65 73 75 6c  |URI_MReturnResul|
00006c90  74 20 20 28 26 34 45 33  38 33 29 0a 23 50 61 72  |t  (&4E383).#Par|
00006ca0  65 6e 74 20 4d 53 47 5f  0a 2b 20 32 30 09 3c 66  |ent MSG_.+ 20.<f|
00006cb0  6c 61 67 73 3d 3e 55 52  49 5f 72 65 74 75 72 6e  |lags=>URI_return|
00006cc0  66 6c 61 67 73 3e 0a 0a  54 68 69 73 20 6d 65 73  |flags>..This mes|
00006cd0  73 61 67 65 20 69 73 20  73 65 6e 74 20 74 6f 20  |sage is sent to |
00006ce0  61 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 74  |an application t|
00006cf0  6f 20 69 6e 64 69 63 61  74 65 20 74 68 61 74 20  |o indicate that |
00006d00  74 68 65 20 55 52 49 20  68 61 6e 64 6c 65 72 27  |the URI handler'|
00006d10  73 20 73 75 63 63 65 73  73 20 6f 72 20 66 61 69  |s success or fai|
00006d20  6c 75 72 65 20 69 6e 20  70 72 6f 63 65 73 73 69  |lure in processi|
00006d30  6e 67 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |ng the specified|
00006d40  20 55 52 4c 2e 0a 00 00  44 41 54 41 21 01 00 00  | URL....DATA!...|
00006d50  4d 65 73 73 61 67 65 5f  55 52 49 5f 4d 50 72 6f  |Message_URI_MPro|
00006d60  63 65 73 73 41 63 6b 20  20 28 26 34 45 33 38 34  |cessAck  (&4E384|
00006d70  29 0a 23 50 61 72 65 6e  74 20 57 69 6d 70 3a 4d  |).#Parent Wimp:M|
00006d80  73 67 5f 0a 2b 20 32 30  09 3c 66 6c 61 67 73 3d  |sg_.+ 20.<flags=|
00006d90  3e 55 52 49 5f 70 72 6f  63 65 73 73 66 6c 61 67  |>URI_processflag|
00006da0  73 3e 0a 2b 20 32 34 09  70 6f 69 6e 74 65 72 20  |s>.+ 24.pointer |
00006db0  74 6f 20 55 52 49 20 73  74 72 69 6e 67 0a 2b 20  |to URI string.+ |
00006dc0  32 38 09 55 52 49 20 68  61 6e 64 6c 65 0a 0a 54  |28.URI handle..T|
00006dd0  68 69 73 20 6d 65 73 73  61 67 65 20 69 73 20 72  |his message is r|
00006de0  65 74 75 72 6e 65 64 20  74 6f 20 69 6e 64 69 63  |eturned to indic|
00006df0  61 74 65 20 74 6f 20 74  68 65 20 55 52 49 20 68  |ate to the URI h|
00006e00  61 6e 64 6c 65 72 20 74  68 61 74 20 61 20 63 6c  |andler that a cl|
00006e10  69 65 6e 74 20 63 61 6e  20 63 6c 61 69 6d 20 6f  |ient can claim o|
00006e20  72 20 70 72 6f 63 65 73  73 20 61 20 67 69 76 65  |r process a give|
00006e30  6e 20 55 52 49 20 61 6e  64 20 74 6f 20 73 74 6f  |n URI and to sto|
00006e40  70 20 69 74 20 62 65 69  6e 67 20 70 61 73 73 65  |p it being passe|
00006e50  64 20 74 6f 20 6f 74 68  65 72 20 61 70 70 6c 69  |d to other appli|
00006e60  63 61 74 69 6f 6e 73 2e  0a 00 00 00 44 49 52 24  |cations.....DIR$|
00006e70  28 00 00 00 28 00 00 00  94 6e 00 00 48 fd ff ff  |(...(....n..H...|
00006e80  96 c3 80 2b 9c 00 00 00  13 01 00 00 00 00 00 00  |...+............|
00006e90  41 37 00 00 44 49 52 24  9c 00 00 00 9c 00 00 00  |A7..DIR$........|
00006ea0  30 6f 00 00 47 fd ff ff  e8 2b 09 fd 06 02 00 00  |0o..G....+......|
00006eb0  13 00 00 00 00 00 00 00  21 72 6f 6f 74 00 00 00  |........!root...|
00006ec0  38 71 00 00 47 fd ff ff  37 cc 05 fd d2 00 00 00  |8q..G...7.......|
00006ed0  13 00 00 00 00 00 00 00  5f 30 00 00 0c 72 00 00  |........_0...r..|
00006ee0  47 fd ff ff 73 dd 05 fd  d7 00 00 00 13 00 00 00  |G...s...........|
00006ef0  00 00 00 00 5f 31 00 00  e4 72 00 00 47 fd ff ff  |...._1...r..G...|
00006f00  94 37 09 fd f4 01 00 00  13 00 00 00 00 00 00 00  |.7..............|
00006f10  5f 32 00 00 d8 74 00 00  47 fd ff ff d0 68 09 fd  |_2...t..G....h..|
00006f20  6d 01 00 00 13 00 00 00  00 00 00 00 5f 33 00 00  |m..........._3..|
00006f30  44 41 54 41 06 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00006f40  55 52 49 20 28 26 41 37  29 0a 23 50 61 72 65 6e  |URI (&A7).#Paren|
00006f50  74 20 4f 53 3a 53 65 72  76 69 63 65 5f 0a 3d 3e  |t OS:Service_.=>|
00006f60  09 52 30 20 3d 09 3c 72  65 61 73 6f 6e 20 63 6f  |.R0 =.<reason co|
00006f70  64 65 3d 3e 2e 72 65 61  73 6f 6e 3e 0a 09 52 31  |de=>.reason>..R1|
00006f80  20 3d 09 26 41 37 0a 09  6f 74 68 65 72 73 20 64  | =.&A7..others d|
00006f90  65 70 65 6e 64 61 6e 74  20 6f 6e 20 72 65 61 73  |ependant on reas|
00006fa0  6f 6e 20 63 6f 64 65 0a  0a 3c 3d 09 52 31 20 3d  |on code..<=.R1 =|
00006fb0  09 30 20 69 66 20 63 6c  61 69 6d 65 64 3b 20 65  |.0 if claimed; e|
00006fc0  6c 73 65 20 70 72 65 73  65 72 76 65 64 0a 09 6f  |lse preserved..o|
00006fd0  74 68 65 72 73 20 64 65  70 65 6e 64 61 6e 74 20  |thers dependant |
00006fe0  6f 6e 20 72 65 61 73 6f  6e 20 63 6f 64 65 0a 0a  |on reason code..|
00006ff0  54 68 69 73 20 73 65 72  76 69 63 65 20 69 73 20  |This service is |
00007000  63 61 6c 6c 65 64 20 62  79 20 74 68 65 20 3c 55  |called by the <U|
00007010  52 49 3d 3e 55 52 49 5f  3e 20 6d 6f 64 75 6c 65  |RI=>URI_> module|
00007020  20 74 6f 20 70 72 6f 76  69 64 65 20 61 6e 20 69  | to provide an i|
00007030  6e 74 65 72 66 61 63 65  20 66 6f 72 20 6d 6f 64  |nterface for mod|
00007040  75 6c 65 73 20 70 72 6f  76 69 64 69 6e 67 20 55  |ules providing U|
00007050  52 49 20 68 61 6e 64 6c  69 6e 67 20 63 61 70 61  |RI handling capa|
00007060  62 69 6c 69 74 69 65 73  2e 0a 23 0a 23 73 75 62  |bilities..#.#sub|
00007070  70 61 67 65 20 72 65 61  73 6f 6e 0a 53 65 72 76  |page reason.Serv|
00007080  69 63 65 5f 55 52 49 20  72 65 61 73 6f 6e 20 63  |ice_URI reason c|
00007090  6f 64 65 73 0a 52 65 61  73 6f 6e 09 4d 65 61 6e  |odes.Reason.Mean|
000070a0  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 3c 48 61 6e  |ing.#Line.0.<Han|
000070b0  64 6c 65 72 20 73 74 61  72 74 69 6e 67 3d 3e 53  |dler starting=>S|
000070c0  65 72 76 69 63 65 5f 41  37 5f 30 3e 0a 31 09 3c  |ervice_A7_0>.1.<|
000070d0  48 61 6e 64 6c 65 72 20  64 79 69 6e 67 3d 3e 53  |Handler dying=>S|
000070e0  65 72 76 69 63 65 5f 41  37 5f 31 3e 0a 32 09 3c  |ervice_A7_1>.2.<|
000070f0  50 72 6f 63 65 73 73 20  6f 72 20 63 68 65 63 6b  |Process or check|
00007100  20 55 52 49 3d 3e 53 65  72 76 69 63 65 5f 41 37  | URI=>Service_A7|
00007110  5f 32 3e 0a 33 09 3c 52  65 74 75 72 6e 20 61 20  |_2>.3.<Return a |
00007120  72 65 73 75 6c 74 3d 3e  53 65 72 76 69 63 65 5f  |result=>Service_|
00007130  41 37 5f 33 3e 0a 00 00  44 41 54 41 d2 00 00 00  |A7_3>...DATA....|
00007140  53 65 72 76 69 63 65 5f  55 52 49 20 30 20 20 28  |Service_URI 0  (|
00007150  26 41 37 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&A7).#Parent Ser|
00007160  76 69 63 65 5f 41 37 0a  3d 3e 09 52 30 20 3d 09  |vice_A7.=>.R0 =.|
00007170  30 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |0 (reason code).|
00007180  09 52 31 20 3d 09 26 41  37 20 28 73 65 72 76 69  |.R1 =.&A7 (servi|
00007190  63 65 20 63 6f 64 65 29  0a 09 52 32 20 3d 09 66  |ce code)..R2 =.f|
000071a0  6c 61 67 73 20 28 63 75  72 72 65 6e 74 6c 79 20  |lags (currently |
000071b0  72 65 73 65 72 76 65 64  29 0a 0a 54 68 69 73 20  |reserved)..This |
000071c0  73 65 72 76 69 63 65 20  69 73 20 63 61 6c 6c 65  |service is calle|
000071d0  64 20 77 68 65 6e 20 74  68 65 20 55 52 49 20 68  |d when the URI h|
000071e0  61 6e 64 6c 65 72 20 69  73 20 73 74 61 72 74 65  |andler is starte|
000071f0  64 2e 20 49 74 27 73 20  75 73 65 20 69 73 20 75  |d. It's use is u|
00007200  6e 64 65 66 69 6e 65 64  2e 0a 00 00 44 41 54 41  |ndefined....DATA|
00007210  d7 00 00 00 53 65 72 76  69 63 65 5f 55 52 49 20  |....Service_URI |
00007220  31 20 20 28 26 41 37 29  0a 23 50 61 72 65 6e 74  |1  (&A7).#Parent|
00007230  20 53 65 72 76 69 63 65  5f 41 37 0a 3d 3e 09 52  | Service_A7.=>.R|
00007240  30 20 3d 09 31 20 28 72  65 61 73 6f 6e 20 63 6f  |0 =.1 (reason co|
00007250  64 65 29 0a 09 52 31 20  3d 09 26 41 37 20 28 73  |de)..R1 =.&A7 (s|
00007260  65 72 76 69 63 65 20 63  6f 64 65 29 0a 09 52 32  |ervice code)..R2|
00007270  20 3d 09 66 6c 61 67 73  20 28 63 75 72 72 65 6e  | =.flags (curren|
00007280  74 6c 79 20 72 65 73 65  72 76 65 64 29 0a 0a 54  |tly reserved)..T|
00007290  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 63  |his service is c|
000072a0  61 6c 6c 65 64 20 77 68  65 6e 20 74 68 65 20 55  |alled when the U|
000072b0  52 49 20 68 61 6e 64 6c  65 72 20 69 73 20 61 62  |RI handler is ab|
000072c0  6f 75 74 20 74 6f 20 64  69 65 2e 20 49 74 27 73  |out to die. It's|
000072d0  20 75 73 65 20 69 73 20  75 6e 64 65 66 69 6e 65  | use is undefine|
000072e0  64 2e 0a 00 44 41 54 41  f4 01 00 00 53 65 72 76  |d...DATA....Serv|
000072f0  69 63 65 5f 55 52 49 20  32 20 20 28 26 41 37 29  |ice_URI 2  (&A7)|
00007300  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00007310  5f 41 37 0a 3d 3e 09 52  30 20 3d 09 32 20 28 72  |_A7.=>.R0 =.2 (r|
00007320  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00007330  3d 09 26 41 37 20 28 73  65 72 76 69 63 65 20 63  |=.&A7 (service c|
00007340  6f 64 65 29 0a 09 52 32  20 3d 09 3c 66 6c 61 67  |ode)..R2 =.<flag|
00007350  73 3d 3e 55 52 49 5f 70  72 6f 63 65 73 73 66 6c  |s=>URI_processfl|
00007360  61 67 73 3e 0a 09 52 33  20 3d 09 70 6f 69 6e 74  |ags>..R3 =.point|
00007370  65 72 20 74 6f 20 55 52  49 20 73 74 72 69 6e 67  |er to URI string|
00007380  0a 09 52 34 20 3d 09 55  52 49 20 68 61 6e 64 6c  |..R4 =.URI handl|
00007390  65 0a 0a 3c 3d 09 52 31  20 3d 09 30 20 69 66 20  |e..<=.R1 =.0 if |
000073a0  63 6c 61 69 6d 65 64 0a  0a 54 68 69 73 20 73 65  |claimed..This se|
000073b0  72 76 69 63 65 20 69 73  20 63 61 6c 6c 65 64 20  |rvice is called |
000073c0  77 68 65 6e 20 74 68 65  20 55 52 49 20 68 61 6e  |when the URI han|
000073d0  64 6c 65 72 20 69 73 20  61 74 74 65 6d 70 74 69  |dler is attempti|
000073e0  6e 67 20 74 6f 20 70 72  6f 63 65 73 73 20 6f 72  |ng to process or|
000073f0  20 63 68 65 63 6b 20 61  20 55 52 49 2e 20 4d 6f  | check a URI. Mo|
00007400  64 75 6c 65 73 20 73 68  6f 75 6c 64 20 63 68 65  |dules should che|
00007410  63 6b 20 74 68 65 20 55  52 49 20 66 6f 72 20 76  |ck the URI for v|
00007420  61 6c 69 64 69 74 79 20  61 6e 64 20 69 66 20 72  |alidity and if r|
00007430  65 63 6f 67 6e 69 73 65  64 20 61 6e 64 20 70 72  |ecognised and pr|
00007440  6f 63 65 73 73 69 6e 67  20 77 61 73 20 72 65 71  |ocessing was req|
00007450  75 65 73 74 65 64 20 63  61 6c 6c 20 3c 55 52 49  |uested call <URI|
00007460  5f 52 65 71 75 65 73 74  55 52 49 3e 20 61 6e 64  |_RequestURI> and|
00007470  20 63 6c 61 69 6d 20 74  68 65 20 73 65 72 76 69  | claim the servi|
00007480  63 65 2e 20 49 66 20 70  72 6f 63 65 73 73 69 6e  |ce. If processin|
00007490  67 20 77 61 73 20 6e 6f  74 20 72 65 71 75 65 73  |g was not reques|
000074a0  74 65 64 2c 20 74 68 65  6e 20 63 6c 61 69 6d 69  |ted, then claimi|
000074b0  6e 67 20 74 68 65 20 73  65 72 76 69 63 65 20 69  |ng the service i|
000074c0  73 20 61 6c 6c 20 74 68  61 74 20 69 73 20 72 65  |s all that is re|
000074d0  71 75 69 72 65 64 2e 0a  44 41 54 41 6d 01 00 00  |quired..DATAm...|
000074e0  53 65 72 76 69 63 65 5f  55 52 49 20 33 20 20 28  |Service_URI 3  (|
000074f0  26 41 37 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&A7).#Parent Ser|
00007500  76 69 63 65 5f 41 37 0a  3d 3e 09 52 30 20 3d 09  |vice_A7.=>.R0 =.|
00007510  33 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |3 (reason code).|
00007520  09 52 31 20 3d 09 26 41  37 20 28 73 65 72 76 69  |.R1 =.&A7 (servi|
00007530  63 65 20 63 6f 64 65 29  0a 09 52 32 20 3d 09 3c  |ce code)..R2 =.<|
00007540  66 6c 61 67 73 3d 3e 55  52 49 5f 72 65 74 75 72  |flags=>URI_retur|
00007550  6e 66 6c 61 67 73 3e 0a  09 52 33 20 3d 09 72 65  |nflags>..R3 =.re|
00007560  73 65 72 76 65 64 20 28  6d 75 73 74 20 62 65 20  |served (must be |
00007570  30 29 0a 09 52 34 20 3d  09 68 61 6e 64 6c 65 20  |0)..R4 =.handle |
00007580  6f 66 20 55 52 49 0a 0a  54 68 69 73 20 73 65 72  |of URI..This ser|
00007590  76 69 63 65 20 69 73 20  63 61 6c 6c 65 64 20 62  |vice is called b|
000075a0  79 20 74 68 65 20 55 52  49 20 68 61 6e 64 6c 65  |y the URI handle|
000075b0  72 20 74 6f 20 72 65 74  75 72 6e 20 61 20 72 65  |r to return a re|
000075c0  73 75 6c 74 20 74 6f 20  74 68 65 20 69 6e 69 74  |sult to the init|
000075d0  69 61 74 6f 72 20 6f 66  20 61 20 3c 55 52 49 5f  |iator of a <URI_|
000075e0  44 69 73 70 61 74 63 68  3e 20 63 61 6c 6c 2e 20  |Dispatch> call. |
000075f0  4d 6f 64 75 6c 65 73 20  73 68 6f 75 6c 64 20 72  |Modules should r|
00007600  65 63 6f 72 64 20 74 68  65 20 68 61 6e 64 6c 65  |ecord the handle|
00007610  20 66 72 6f 6d 20 55 52  49 5f 44 69 73 70 61 74  | from URI_Dispat|
00007620  63 68 20 69 66 20 74 68  65 79 20 72 65 71 75 65  |ch if they reque|
00007630  73 74 20 61 20 72 65 73  75 6c 74 20 6d 65 73 73  |st a result mess|
00007640  61 67 65 2e 0a 00 00 00  44 49 52 24 74 00 00 00  |age.....DIR$t...|
00007650  74 00 00 00 bc 76 00 00  48 ff ff ff 60 f4 5b 03  |t....v..H...`.[.|
00007660  89 01 00 00 13 00 00 00  00 00 00 00 47 65 74 48  |............GetH|
00007670  6f 73 74 00 48 78 00 00  48 fd ff ff 8b 88 5b 03  |ost.Hx..H.....[.|
00007680  7c 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  ||...........!Roo|
00007690  74 00 00 00 c4 78 00 00  48 ff ff ff 76 90 5b 03  |t....x..H...v.[.|
000076a0  90 01 00 00 13 00 00 00  00 00 00 00 47 65 74 48  |............GetH|
000076b0  6f 73 74 42 79 4e 61 6d  65 00 00 00 44 41 54 41  |ostByName...DATA|
000076c0  89 01 00 00 52 65 73 6f  6c 76 65 72 5f 47 65 74  |....Resolver_Get|
000076d0  48 6f 73 74 20 20 28 26  34 36 30 30 31 29 0a 23  |Host  (&46001).#|
000076e0  50 61 72 65 6e 74 20 49  6e 74 65 72 6e 65 74 5f  |Parent Internet_|
000076f0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00007700  20 74 6f 20 7a 65 72 6f  2d 74 65 72 6d 69 6e 61  | to zero-termina|
00007710  74 65 64 20 68 6f 73 74  20 6e 61 6d 65 0a 3c 3d  |ted host name.<=|
00007720  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
00007730  20 65 72 72 6f 72 20 62  6c 6f 63 6b 20 69 66 20  | error block if |
00007740  65 72 72 6f 72 2c 20 6f  72 20 3c 65 72 72 6f 72  |error, or <error|
00007750  20 6e 75 6d 62 65 72 3d  3e 49 6e 65 74 53 6f 63  | number=>InetSoc|
00007760  6b 65 74 3a 45 3e 0a 09  52 31 20 3d 09 70 6f 69  |ket:E>..R1 =.poi|
00007770  6e 74 65 72 20 74 6f 20  3c 68 6f 73 74 65 6e 74  |nter to <hostent|
00007780  3d 3e 49 6e 74 65 72 6e  65 74 5f 68 6f 73 74 65  |=>Internet_hoste|
00007790  6e 74 3e 20 73 74 72 75  63 74 75 72 65 20 69 66  |nt> structure if|
000077a0  20 73 75 63 63 65 73 73  66 75 6c 2c 20 6f 72 20  | successful, or |
000077b0  30 20 6f 74 68 65 72 77  69 73 65 0a 0a 54 68 69  |0 otherwise..Thi|
000077c0  73 20 53 57 49 20 77 69  6c 6c 20 65 69 74 68 65  |s SWI will eithe|
000077d0  72 20 72 65 74 75 72 6e  20 61 20 68 6f 73 74 20  |r return a host |
000077e0  65 6e 74 72 79 20 69 66  20 6f 6e 65 20 69 73 20  |entry if one is |
000077f0  63 61 63 68 65 64 20 6f  72 20 62 65 67 69 6e 20  |cached or begin |
00007800  61 20 6c 6f 6f 6b 75 70  20 69 66 20 6e 6f 74 2e  |a lookup if not.|
00007810  20 54 68 69 73 20 63 61  6c 6c 20 73 68 6f 75 6c  | This call shoul|
00007820  64 20 62 65 20 75 73 65  64 20 66 6f 72 20 6d 75  |d be used for mu|
00007830  6c 74 69 2d 74 61 73 6b  69 6e 67 20 6c 6f 6f 6b  |lti-tasking look|
00007840  75 70 73 2e 0a 00 00 00  44 41 54 41 7c 00 00 00  |ups.....DATA|...|
00007850  52 65 73 6f 6c 76 65 72  0a 23 50 61 72 65 6e 74  |Resolver.#Parent|
00007860  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 52  | !Root.#Prefix R|
00007870  65 73 6f 6c 76 65 72 5f  0a 23 54 61 62 6c 65 20  |esolver_.#Table |
00007880  43 6f 6c 75 6d 6e 73 20  32 0a 3c 47 65 74 48 6f  |Columns 2.<GetHo|
00007890  73 74 42 79 4e 61 6d 65  3e 0a 3c 47 65 74 48 6f  |stByName>.<GetHo|
000078a0  73 74 3e 0a 47 65 74 43  61 63 68 65 0a 43 61 63  |st>.GetCache.Cac|
000078b0  68 65 43 6f 6e 74 72 6f  6c 0a 23 45 6e 64 54 61  |heControl.#EndTa|
000078c0  62 6c 65 0a 44 41 54 41  90 01 00 00 52 65 73 6f  |ble.DATA....Reso|
000078d0  6c 76 65 72 5f 47 65 74  48 6f 73 74 42 79 4e 61  |lver_GetHostByNa|
000078e0  6d 65 20 20 28 26 34 36  30 30 30 29 0a 23 50 61  |me  (&46000).#Pa|
000078f0  72 65 6e 74 20 49 6e 74  65 72 6e 65 74 5f 0a 3d  |rent Internet_.=|
00007900  3e 09 52 30 20 3d 09 30  0a 09 52 31 20 3d 09 70  |>.R0 =.0..R1 =.p|
00007910  6f 69 6e 74 65 72 20 74  6f 20 68 6f 73 74 20 6e  |ointer to host n|
00007920  61 6d 65 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |ame.<=.R0 =.poin|
00007930  74 65 72 20 74 6f 20 65  72 72 6f 72 20 62 6c 6f  |ter to error blo|
00007940  63 6b 20 69 66 20 65 72  72 6f 72 2c 20 6f 72 20  |ck if error, or |
00007950  6e 65 74 62 73 64 20 3c  65 72 72 6f 72 20 6e 75  |netbsd <error nu|
00007960  6d 62 65 72 3d 3e 49 6e  65 74 3a 45 3e 0a 09 52  |mber=>Inet:E>..R|
00007970  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |1 =.pointer to <|
00007980  68 6f 73 74 65 6e 74 3d  3e 49 6e 74 65 72 6e 65  |hostent=>Interne|
00007990  74 5f 68 6f 73 74 65 6e  74 3e 20 73 74 72 75 63  |t_hostent> struc|
000079a0  74 75 72 65 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |ture, or 0 if no|
000079b0  74 20 66 6f 75 6e 64 0a  0a 52 65 74 75 72 6e 73  |t found..Returns|
000079c0  20 61 20 68 6f 73 74 65  6e 74 20 62 6c 6f 63 6b  | a hostent block|
000079d0  20 66 6f 72 20 74 68 65  20 72 65 71 75 65 73 74  | for the request|
000079e0  65 64 20 68 6f 73 74 20  6e 61 6d 65 2e 20 54 68  |ed host name. Th|
000079f0  69 73 20 68 6f 73 74 65  6e 74 20 62 6c 6f 63 6b  |is hostent block|
00007a00  20 77 69 6c 6c 20 72 65  6d 61 69 6e 20 73 74 61  | will remain sta|
00007a10  74 69 63 20 66 6f 72 20  32 34 20 68 6f 75 72 73  |tic for 24 hours|
00007a20  20 61 66 74 65 72 20 77  68 69 63 68 20 69 74 20  | after which it |
00007a30  77 69 6c 6c 20 65 78 70  69 72 65 20 61 6e 64 20  |will expire and |
00007a40  6e 6f 20 6c 6f 6e 67 65  72 20 62 65 20 76 61 6c  |no longer be val|
00007a50  69 64 2e 0a                                       |id..|
00007a54