Tillbaka till svenska Fidonet
English   Information   Debug  
FIDONEWS_OLD4   0/37224
FIDO_SYSOP   12847
FIDO_UTIL   0/180
FILEFIND   0/209
FILEGATE   0/212
FILM   0/18
FNEWS_PUBLISH   4208
FN_SYSOP   41525
FN_SYSOP_OLD1   71952
FTP_FIDO   0/2
FTSC_PUBLIC   0/13587
FUNNY   0/4886
GENEALOGY.EUR   0/71
GET_INFO   105
GOLDED   0/408
HAM   0/16054
HOLYSMOKE   0/6791
HOT_SITES   0/1
HTMLEDIT   0/71
HUB203   466
HUB_100   264
HUB_400   39
HUMOR   0/29
IC   0/2851
INTERNET   0/424
INTERUSER   0/3
IP_CONNECT   719
JAMNNTPD   0/233
JAMTLAND   0/47
KATTY_KORNER   0/41
LAN   0/16
LINUX-USER   0/19
LINUXHELP   0/1155
LINUX   0/22013
LINUX_BBS   0/957
mail   18.68
mail_fore_ok   249
MENSA   0/341
MODERATOR   0/102
MONTE   0/992
MOSCOW_OKLAHOMA   0/1245
MUFFIN   0/783
MUSIC   0/321
N203_STAT   902
N203_SYSCHAT   313
NET203   321
NET204   69
NET_DEV   0/10
NORD.ADMIN   0/101
NORD.CHAT   0/2572
NORD.FIDONET   189
NORD.HARDWARE   0/28
NORD.KULTUR   0/114
NORD.PROG   0/32
NORD.SOFTWARE   0/88
NORD.TEKNIK   0/58
NORD   0/453
OCCULT_CHAT   0/93
OS2BBS   0/787
OS2DOSBBS   0/580
OS2HW   0/42
OS2INET   0/37
OS2LAN   0/134
OS2PROG   0/36
OS2REXX   0/113
OS2USER-L   207
OS2   0/4786
OSDEBATE   0/18996
PASCAL   0/490
PERL   0/457
PHP   0/45
POINTS   0/405
POLITICS   0/29554
POL_INC   0/14731
PSION   103
R20_ADMIN   1117
R20_AMATORRADIO   0/2
R20_BEST_OF_FIDONET   13
R20_CHAT   0/893
R20_DEPP   0/3
R20_DEV   399
R20_ECHO2   1379
R20_ECHOPRES   0/35
R20_ESTAT   0/719
R20_FIDONETPROG...
...RAM.MYPOINT
  0/2
R20_FIDONETPROGRAM   0/22
R20_FIDONET   0/248
R20_FILEFIND   0/24
R20_FILEFOUND   0/22
R20_HIFI   0/3
R20_INFO2   2852
R20_INTERNET   0/12940
R20_INTRESSE   0/60
R20_INTR_KOM   0/99
R20_KANDIDAT.CHAT   42
R20_KANDIDAT   28
R20_KOM_DEV   112
R20_KONTROLL   0/13078
R20_KORSET   0/18
R20_LOKALTRAFIK   0/24
R20_MODERATOR   0/1852
R20_NC   76
R20_NET200   245
R20_NETWORK.OTH...
...ERNETS
  0/13
R20_OPERATIVSYS...
...TEM.LINUX
  0/44
R20_PROGRAMVAROR   0/1
R20_REC2NEC   534
R20_SFOSM   0/340
R20_SF   0/108
R20_SPRAK.ENGLISH   0/1
R20_SQUISH   107
R20_TEST   2
R20_WORST_OF_FIDONET   12
RAR   0/9
RA_MULTI   106
RA_UTIL   0/162
REGCON.EUR   0/2056
REGCON   0/13
SCIENCE   0/1206
SF   0/239
SHAREWARE_SUPPORT   0/5146
SHAREWRE   0/14
SIMPSONS   0/169
STATS_OLD1   0/2539.065
STATS_OLD2   0/2530
STATS_OLD3   0/2395.095
STATS_OLD4   0/1692.25
SURVIVOR   0/495
SYSOPS_CORNER   0/3
SYSOP   0/84
TAGLINES   0/112
TEAMOS2   0/4530
TECH   0/2617
TEST.444   0/105
TRAPDOOR   0/19
TREK   0/755
TUB   0/290
UFO   0/40
UNIX   0/1316
USA_EURLINK   0/102
USR_MODEMS   0/1
VATICAN   0/2740
VIETNAM_VETS   0/14
VIRUS   0/378
VIRUS_INFO   0/201
VISUAL_BASIC   0/473
WHITEHOUSE   0/5187
WIN2000   0/101
WIN32   0/30
WIN95   0/4277
WIN95_OLD1   0/70272
WINDOWS   0/1517
WWB_SYSOP   0/419
WWB_TECH   0/810
ZCC-PUBLIC   0/1
ZEC   4

 
4DOS   0/134
ABORTION   0/7
ALASKA_CHAT   0/506
ALLFIX_FILE   0/1313
ALLFIX_FILE_OLD1   0/7997
ALT_DOS   0/152
AMATEUR_RADIO   0/1039
AMIGASALE   0/14
AMIGA   0/331
AMIGA_INT   0/1
AMIGA_PROG   0/20
AMIGA_SYSOP   0/26
ANIME   0/15
ARGUS   0/924
ASCII_ART   0/340
ASIAN_LINK   0/651
ASTRONOMY   0/417
AUDIO   0/92
AUTOMOBILE_RACING   0/105
BABYLON5   0/17862
BAG   135
BATPOWER   0/361
BBBS.ENGLISH   0/382
BBSLAW   0/109
BBS_ADS   0/5290
BBS_INTERNET   0/507
BIBLE   0/3563
BINKD   0/1119
BINKLEY   0/215
BLUEWAVE   0/2173
CABLE_MODEMS   0/25
CBM   0/46
CDRECORD   0/66
CDROM   0/20
CLASSIC_COMPUTER   0/378
COMICS   0/15
CONSPRCY   0/899
COOKING   28828
COOKING_OLD1   0/24719
COOKING_OLD2   0/40862
COOKING_OLD3   0/37489
COOKING_OLD4   0/35496
COOKING_OLD5   9370
C_ECHO   0/189
C_PLUSPLUS   0/31
DIRTY_DOZEN   0/201
DOORGAMES   0/2031
DOS_INTERNET   0/196
duplikat   6000
ECHOLIST   0/18295
EC_SUPPORT   0/318
ELECTRONICS   0/359
ELEKTRONIK.GER   1534
ENET.LINGUISTIC   0/13
ENET.POLITICS   0/4
ENET.SOFT   0/11701
ENET.SYSOP   33811
ENET.TALKS   0/32
ENGLISH_TUTOR   0/2000
EVOLUTION   0/1335
FDECHO   0/217
FDN_ANNOUNCE   0/7068
FIDONEWS   23559
FIDONEWS_OLD1   0/49742
FIDONEWS_OLD2   0/35949
FIDONEWS_OLD3   0/30874
Möte FTSC_PUBLIC, 13587 texter
 lista första sista föregående nästa
Text 8071, 455 rader
Skriven 2016-02-27 13:47:06 av mark lewis (1:3634/12.73)
   Kommentar till text 8064 av Stephen Hurd (44.fido-ftscpubl)
Ärende: FSP-1040.001 draft 0
============================
27 Feb 16 12:25, you wrote to FTSC:

 SH> 1. Fidonet Packets
 SH> ------------------

 SH>   In Fidonet terms, a "packet" is a file which contains zero or more
 SH>   separate messages to be transfered together to a system.  The
 SH>   "original" packet format only supported 3D node addressing (zone, net

s/"original" packet/"original" Type 2 packet/

 SH>   and node numbers) so different new types of packets were developed.
 SH>   None of them have previously been ratified as a standard despite
 SH> being
 SH>   in common use on Fidonet.

 SH>   These type 2 "compatible" formats all use a similar fixed-length
 SH>   header and the same packet message format.

s/packet message/packed message/

[trim]

 SH> 2. Original Type 2 Packet
 SH> -------------------------

 SH>   Originally defined in FSC0001, supports 3D addressing only.  This can
 SH>   cause problems when transferring them to/from points, and across
 SH>   domain gateways.

 SH>   This header has eighteen fields specified below:

 SH> ,-------------------------------------------------------------------.
 SH> | Name     | Offset | Bytes | Type  | Description                   |
 SH> +----------+--------+-------+-------+-------------------------------+
 SH> | origNode | 0      | 2     | Int16 | Node number packet is from    |
 SH> | destNode | 2      | 2     | Int16 | Node number packet is to      |
 SH> | year     | 4      | 2     | Int16 | Year packet was created       |
 SH> | month    | 6      | 2     | Int16 | Month  "     "     "          |
 SH> | day      | 8      | 2     | Int16 | Day    "     "     "          |
 SH> | hour     | 10     | 2     | Int16 | Hour   "     "     "          |
 SH> | minute   | 12     | 2     | Int16 | Minute "     "     "          |
 SH> | second   | 14     | 2     | Int16 | Second "     "     "          |
 SH> | baud     | 16     | 2     | Int16 | See Notes                     |
 SH> | Type     | 18     | 2     | Int16 | MUST have a value of 2        |

this one is pktver... having a 2 means that it is one of the type 2 formats...
if there's a 3 then it is a type 3 packet... a 5 would be a type 5 packet...
the idea of the fixed header was so that software could at least read this one
byte and know if they could possibly handle the pkt or not...

 SH> | origNet  | 20     | 2     | Int16 | Network number packet is from |
 SH> | destNet  | 22     | 2     | Int16 | Network number packet is to   |
 SH> | prodCode | 24     | 1     | Int8  | Assigned by the FTSC          |
 SH> | serialNo | 25     | 1     | Int8  | See Notes                     |
 SH> | password | 26     | 8     | Str   | Packet password, NUL padded   |

str is incorrect for this field... it is a nul padded 8 byte array of
characters... str indicates either an ending nul or a leading length byte...

 SH> | origZone | 34     | 2     | Int16 | Zone number packet is from    |
 SH> | destZone | 36     | 2     | Int16 | Zone number packet is to      |
 SH> | fill     | 38     | 20    | Str   | SHOULD be NULs                |

same thing for fill... it is a nul padded 20 byte array of characters...

 SH> `----------+--------+-------+-------+-------------------------------'

[trim]

 SH> 3. Type 2+ Packet
 SH> -----------------

 SH>   Originally specified in FSC-0039, then updated by FSC-0048, this
 SH>   introduced a mechanism to detect packet type support which, due to
 SH>   multiple incompatible "type 3" packet formats, never really caught on.
 SH>   This "Capability Word" feature is not specified in this document.

not mentioned in this document? which document? it is definitely mentioned in
this one we're reviewing right now ;)

 SH>   The Type 2+ packet added point information and zone information
 SH> before
 SH>   FTS-0001 was updated to include zones.  As a result, the zone numbers
 SH>   are in different places in the Type 2 and Type 2+ packet definitions.
 SH>   Type 2+ was extended to include zone information in the same location,
 SH>   so the type 2+ packet has the zone information twice.  Software
 SH>   creating or modifying packets MUST set these two sets of zone fields
 SH>   to the same values.

 SH>   In the following table, fields on lines beginning with an "H" reflect
 SH>   changes from the type two packet above.

 SH> ,-------------------------------------------------------------------.
 SH> | Name     | Offset | Bytes | Type  | Description                   |
 SH> +----------+--------+-------+-------+-------------------------------+
 SH> | origNode | 0      | 2     | Int16 | Node number packet is from    |
 SH> | destNode | 2      | 2     | Int16 | Node number packet is to      |
 SH> | year     | 4      | 2     | Int16 | Year packet was created       |
 SH> | month    | 6      | 2     | Int16 | Month  "     "     "          |
 SH> | day      | 8      | 2     | Int16 | Day    "     "     "          |
 SH> | hour     | 10     | 2     | Int16 | Hour   "     "     "          |
 SH> | minute   | 12     | 2     | Int16 | Minute "     "     "          |
 SH> | second   | 14     | 2     | Int16 | Second "     "     "          |
 SH> | baud     | 16     | 2     | Int16 | See Notes                     |
 SH> | Type     | 18     | 2     | Int16 | MUST have a value of 2        |
 SH> | origNet  | 20     | 2     | Int16 | Network number packet is from |
 SH> | destNet  | 22     | 2     | Int16 | Network number packet is to   |
 SH> | prodCode | 24     | 1     | Int8  | Assigned by the FTSC          |
 SH> |          |        |       |       | (Low byte only)               |
 SH> H prodVerM | 25     | 1     | Int8  | Major Version Number          |
 SH> | password | 26     | 8     | Str   | Packet password, NUL padded   |

str again... should be array...

 SH> | origZone | 34     | 2     | Int16 | Zone number packet is from    |
 SH> | destZone | 36     | 2     | Int16 | Zone number packet is to      |
 SH> H auxNet   | 38     | 2     | Int16 | origNet when orig is a point  |
 SH> H capValid | 40     | 2     | Int16 | See Notes                     |
 SH> H prodCodH | 42     | 1     | Int8  | Assigned by the FTSC          |
 SH> H          |        |       |       | (High byte only)              |
 SH> H prodVerN | 43     | 1     | Int8  | Minor Version Number          |
 SH> H capWord  | 44     | 2     | Int16 | See Notes                     |
 SH> H origZ2   | 46     | 2     | Int16 | See Notes                     |
 SH> H destZ2   | 48     | 2     | Int16 | See Notes                     |
 SH> H origPnt  | 50     | 2     | Int16 | Point number packet is from   |
 SH> H destPnt  | 52     | 2     | Int16 | Point number packet is to     |
 SH> H prodData | 54     | 4     | Int32 | Product-specific data         |
 SH> `----------+--------+-------+-------+-------------------------------'

 SH>   Notes:
 SH>   auxNet
 SH>     If origNet is 65535 (0xffff), indicates that the originator is a
 SH>     point, and the originating network can be found in this field.
 SH>     Some old software may not follow this convention, so the network
 SH>     number may be found in either of the two fields.  When parsing a
 SH>     type 2+ packet, if origNet is 65535, the software MUST use the
 SH>     value from the auxNet field.  When creating a packet, if the
 SH>     originating system is a point, it SHOULD set origNet to 65535 and
 SH>     put the net number in this field.  In the case where the originating
 SH>     net is 65535 (As recommended by Policy 4), it SHOULD be placed in
 SH>     both origNet and auxNet.

where is this recommendation by P4? why are political documents being
referenced in a technical document?

aside from that, it doesn't make sense as to why software should do this when
the original fields are specifically there to hold this data... the /only/
thing in can think of as to why this might be done is for the old fakenet (aka
pointnet) stuff done for points so that they looked like zone:net/node
addresses... i forget the boundary but net numbers above a certain value were
fakenets for points... this was done specifically for point systems before the
pkts could carry the point information so they faked it by pretending to be a
net and their point number was placed in the node field... type 2+ started
allowing points to be represented as actual points without the fakenet mess
being needed...

 SH>   capValid
 SH>     Byte-swapped copy of the least-significant 15 bits of capWord.
 SH>     That is to say that the most significant bit of capWord is masked
 SH>     off, and the resulting two bytes are swapped.  In C:
 SH>     capValid = ((capWord & 0x7f00) >> 8) | ((capWord & 0xff) << 8));

 SH>     If the capValid and capWord fields do not match, the packet SHOULD
 SH>     NOT be processed as a type 2+ packet.

 SH>   prodVerM
 SH>     Major version number of product generating the packet.  This
 SH>     replaces the serialNo field of packet type 2.

 SH>   prodCodH
 SH>     High (most-significant) byte of FTSC-assigned product code.

 SH>   prodVerN
 SH>     Minor version number of product generating the packet.

 SH>   capWord
 SH>     Capability Word.  Not specified in this document, SHOULD have a
 SH>     value of 1.  MUST at least have the least significant bit set (ie:
 SH>     be an odd number) or the packet is not a valid type 2+ packet.

 SH>   origZ2
 SH>     A copy of origZone.  If origZone and origZ2 are different, the
 SH>     non-zero one SHOULD be used.  If neither is zero, origZ2 SHOULD be
 SH>     used.  A compliant program MUST set these two fields to the same
 SH>     value.

 SH>   destZ2
 SH>     A copy of destZone.  As with origZ2, this is the "preferred" copy
 SH>     for software to use.

since these two are the preferred, rename the other two and leave these as
OrigZone and DestZone.. especially to avoid possible confusion with "Z2"
meaning "zone 2"... ya never know what new budding programmers or average joes
may be reading to learn about the intracasies of FTN stuffs... in my code, i
actually have the other two named qorgzone and qdstzone... the 'q' being
significant for some old piece of software but i don't recall which one...

 SH>   origPnt
 SH>     Point number of the originating system.

 SH>   destPnt
 SH>     Point number of the destination system.

 SH>   prodData
 SH>     Value defined by the holder of the FTSC product code specified.


 SH> 4. Type 2.2 Packet
 SH> ------------------

 SH>   Originally specified in FSC-0045, this packet format supports full 5D
 SH>   addressing.

 SH>   The type 2.2 packet format adds both point and domain information, but
 SH>   replaces some rarely used fields, so is not as compatible with type 2
 SH>   as type 2+ is.

 SH>   In the following table, fields on lines beginning with an "H" reflect
 SH>   changes from the type two packet in section 2.

pedantic: s/type two packet/type 2 packet/

probably should also standardize on "Type" being capatilized, too... Type 2,
Type 2+, Type 2.2...

 SH> ,-------------------------------------------------------------------.
 SH> | Name     | Offset | Bytes | Type  | Description                   |
 SH> +----------+--------+-------+-------+-------------------------------+
 SH> | origNode | 0      | 2     | Int16 | Node number packet is from    |
 SH> | destNode | 2      | 2     | Int16 | Node number packet is to      |
 SH> H origPnt  | 4      | 2     | Int16 | Point number packet is from   |
 SH> H destPnt  | 6      | 2     | Int16 | Point number packet is to     |
 SH> H fill     | 8      | 8     | Str   | MUST be NULs                  |
 SH> H subType  | 16     | 2     | Int16 | MUST have a value of 2        |
 SH> | Type     | 18     | 2     | Int16 | MUST have a value of 2        |
 SH> | origNet  | 20     | 2     | Int16 | Network number packet is from |
 SH> | destNet  | 22     | 2     | Int16 | Network number packet is to   |
 SH> | prodCode | 24     | 1     | Int8  | Assigned by the FTSC          |
 SH> H prodRev  | 25     | 1     | Int8  | See Notes                     |
 SH> | password | 26     | 8     | Str   | Packet password, NUL padded   |
 SH> | origZone | 34     | 2     | Int16 | Zone number packet is from    |
 SH> | destZone | 36     | 2     | Int16 | Zone number packet is to      |
 SH> H origDom  | 38     | 8     | Str   | Domain packet is from,        |
 SH> H          |        |       |       | NUL padded                    |
 SH> H destDom  | 46     | 8     | Str   | Domain packet is to,          |
 SH> H          |        |       |       | NUL padded                    |

again with the str... they're nul padded (actually nul filled) arrays of
characters... there's no trailing nul byte and no leading length byte...

 SH> H prodData | 54     | 4     | Int32 | Product-specific data         |
 SH> `----------+--------+-------+-------+-------------------------------'

[trim]

 SH> 5. Packed Message
 SH> -----------------

 SH> All type 2 compatible formats share the same packed message format.
 SH> It consists of a fixed-length header followed by variable-length header
 SH> followed by the message text.

i've never heard it expressed in this manner... specifically the
"variable-length header" part... that section should be better indicate below
as you have done with the fixed-length header here... see below...

 SH> The fixed-length header is as follows:

 SH> ,-------------------------------------------------------------------.
 SH> | Name      | Offset | Bytes | Type  | Description                  |
 SH> +-----------+--------+-------+-------+------------------------------+
 SH> | Type      | 0      | 2     | Int16 | MUST have a value of 2       |
 SH> | origNode  | 2      | 2     | Int16 | Node number packet is from   |
 SH> | destNode  | 4      | 2     | Int16 | Node number packet is to     |
 SH> | origNet   | 6      | 2     | Int16 | Network number packet is from|
 SH> | destNet   | 8      | 2     | Int16 | Network number packet is to  |
 SH> | attribute | 10     | 2     | Int16 | See Notes                    |
 SH> | cost      | 12     | 2     | Int16 | See Notes                    |
     | datetime  | 14     | 20    | array | 19 chars + NUL; see notes    |
 SH> `-----------+--------+-------+-------+------------------------------'

The variable-length header is as follows:

 ,--------------+-------+--------------+---------------------------------.
 | Name         | Type  | # Bytes      | Description                     |
 +--------------+-------+--------------+---------------------------------+
 | toUserName   | array | up to 36+NUL | MUST be NUL terminated          |
 | fromUserName | array | up to 36+NUL | MUST be NUL terminated          |
 | MsgSubject   | array | up to 72+NUL | MUST be NUL terminated          |
 `--------------+-------+--------------+---------------------------------'

"array" in the above may be better known as a "C string" or a "nul terminated
string"... some languages have to take special care to process them correctly
as they don't read/understand them natively...

then follow with something like

the message body is unbounded. that means that it is not limited in size by
this specification. the message body should be composed of paragraphs
terminated by 0x0d. there should not be any line breaks attempting to limit the
length of the lines in a paragraph. display of the paragraph is handled by the
terminal and it should deal with the wrapping of paragraph lines according to
its view port on the client's display.

and then maybe describe the mess that the older software creates... including
that so-called soft-CR that some software used to indicate a line break...

 SH>   Notes:

 SH>   origNode/origNet
 SH>     Net and node the message originated from (not the node the packet
 SH>     was created on).

 SH>   destNode/destNet
 SH>     Net and node the message is directed to (not the node the packet is
 SH>     directed to).

 SH>   attribute
 SH>     The attribute word of the message.  The following bits are defined,
 SH>     any undefined bits MUST be zeroed before the message is packed.
 SH>     When processing these packets, undefined attributes MUST be ignored.

 SH>     ,--------------------------------.
 SH>     | Bit | Meaning                  |
 SH>     +-----+--------------------------|
 SH>     | 0   | Private                  |
 SH>     | 1   | Crash                    |
 SH>     | 4   | File Attached            |
 SH>     | 10  | unused                   |
 SH>     | 12  | Return Receipt Requested |
 SH>     | 13  | Is a Return Receipt      |
 SH>     | 14  | Audit Request            |
 SH>     `-----+--------------------------'

 SH>     Bit 10 SHOULD be retained unchanged when packing messages despite it
 SH>     being unused.  All other bits SHOULD be cleared when packing.  The
 SH>     attributes can be ANDed with 29715 (0x7413) to clear the appropriate
 SH>     bits.

 SH>   cost
 SH>     Expressed in the lowest unit of originators currency.  Usually set
 SH>     to zero.

===== snip =====
 SH>   After the fixed-length portion is a series of NUL terminated
 SH> strings.
 SH>   In order, they are:

 SH>     dateTime (Length = 19)
 SH>     toUserName (Length <= 36)
 SH>     fromUserName (Length <= 36)
 SH>     subject (Length <= 72)
 SH>     text
===== snip =====

cut the about section between the "snips" as it is right below the fixed-length
header chart now...

 SH>   The lengths above do NOT include the NUL terminator.

shouldn't need this line with the above chart...

 SH>   dateTime MUST occupy twenty bytes including the NUL terminator.  The
 SH>   following is the ABNF notation of the format that messages SHOULD use:

definitely keep these notes to go with the charts...

 SH>     digit      = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" /
 SH>                  "9"

 SH>     dayOfMonth = "00" / "01" / "02" / "03" / "04" / "05" / "06" / "07" /
 SH>                  "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" /
 SH>                  "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" /
 SH>                  "24" / "25" / "26" / "27" / "28" / "29" / "30" / "31" /

 SH>     month      = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" /
 SH>                  "Aug" / "Sep" / "Oct" / "Nov" / "Dec"

 SH>     year       = 2*( digit )

 SH>     hour       = "00" / "01" / "02" / "03" / "04" / "05" / "06" / "07" /
 SH>                  "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" /
 SH>                  "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" /
 SH>                  "24"

 SH>     oneToSixty = "00" / "01" / "02" / "03" / "04" / "05" / "06" / "07" /
 SH>                  "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" /
 SH>                  "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" /
 SH>                  "24" / "25" / "26" / "27" / "28" / "29" / "30" / "31" /
 SH>                  "32" / "33" / "34" / "35" / "36" / "37" / "38" / "39" /
 SH>                  "40" / "41" / "42" / "43" / "44" / "45" / "46" / "47" /
 SH>                  "48" / "49" / "50" / "51" / "52" / "53" / "54" / "55" /
 SH>                  "56" / "57" / "58" / "59" / "60"

 SH>     minute     = oneToSixty

 SH>     second     = oneToSixty

there can be 61 seconds on the day when a lead-second is added... not allowing
for that can cause problems with some software depending on what they do with
the time fields...

 SH>     dateTime   = dayOfMonth " " month " " year "  " hour ":" minute
 SH> ":"
 SH>                  second %x00

 SH>     January 1st, 2016 at 11:15:55pm would therefore be
 SH>     "01 Jan 16  23:15:55" with a NUL at the end.  Notice the two spaces
 SH>     between the year and the hour.

 SH>     This format ensures the broadest compatibility however, other
 SH>     formats are known to be in use.  SEAdog has been known to use the
 SH>     format "Mon  1 Jan 86 02:34" with a single NUL terminator.

these are the only two formats that i've ever seen... the seadog format comes
from the C ISO time format stuff, IIRC... it has a non-zero-padded day of month
but the time is zero-padded but only hours and minutes... the other (more
popular) format dropped the day of week and added a colon plus the seconds to
the time portion... that took care of the three characters the day of week
used... it had to leave the extra space that trailed the removed day of week to
maintain the field length so it moved that space and added it between the two
digit year and the hour for two spaces in that position...

 SH>   After the message text is either the next message or the two-NUL
 SH>   packet terminator.

 SH>   Some old systems MAY terminate the message text with an EOF (0x1A)

or they just terminate the file with no EOF character...

 SH>   Some even older systems MAY terminate the message text with an empty
 SH>   line (0x0D 0x0A 0x0D 0x0A).  To detect this, software MAY use the
 SH> NUL
 SH>   in the second byte of the Type field to attempt to resynchronize.  It
 SH>   is up to the developer if this needs to be supported.

between messages there should be at least one NUL... message bodies are
unbounded in length but they SHOULD be NUL terminated by the existing spec...
the tail end of a properly terminated PKT with at least one packed message
contains three NUL characters... one for the packed message body termination
and two for the PKT termination...

[trim]

over all, excellent work gathering this all together and presenting it like
this... i hope you take my comments in the manner they are intended :)

)\/(ark

Always Mount a Scratch Monkey

... I'm so poor I can't even pay attention.
---
 * Origin:  (1:3634/12.73)