• pktinfo for everyone

    From Alan Ianson@1:153/757 to All on Monday, May 23, 2016 13:27:10
    Hello All,

    Is it possible to have a pktinfo that doesn't depend on fido.config? I have fidoconfig myself so it's not a problem for me, but for others who don't use husky?

    Is there an external utility maybe by perl or something to inspect pkt files?
    I would like to have a utility that can tell me the version of pkt that I
    have if there is such a thing.

    Ttyl :-),
    Al

    --- Mystic BBS v1.12 A14 (Linux)
    * Origin: The Rusty MailBox - Penticton, BC Canada (1:153/757)
  • From Rob Swindell to Alan Ianson on Monday, May 23, 2016 14:24:25
    Re: pktinfo for everyone
    By: Alan Ianson to All on Mon May 23 2016 01:27 pm

    Hello All,

    Is it possible to have a pktinfo that doesn't depend on fido.config? I have fidoconfig myself so it's not a problem for me, but for others who don't use husky?

    Is there an external utility maybe by perl or something to inspect pkt files?
    I would like to have a utility that can tell me the version of pkt that I have if there is such a thing.

    I wrote one:
    ftp://vert.synchro.net/main/bbs/pktdump.exe

    The source code is here: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/pktdump.c

    digital man

    Synchronet/BBS Terminology Definition #22:
    FTS = FidoNet Technical Standard
    Norco, CA WX: 70.1°F, 51.0% humidity, 8 mph ESE wind, 0.00 inches rain/24hrs
  • From Alan Ianson@1:153/757 to Rob Swindell on Monday, May 23, 2016 14:41:04
    On 05/23/16, Rob Swindell said the following...

    I wrote one:
    ftp://vert.synchro.net/main/bbs/pktdump.exe

    The source code is here: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/pktdump.c

    Thank you Rob!

    Ttyl :-),
    Al

    --- Mystic BBS v1.12 A14 (Linux)
    * Origin: The Rusty MailBox - Penticton, BC Canada (1:153/757)
  • From andrew clarke@3:633/267 to Rob Swindell on Wednesday, May 25, 2016 02:55:48
    23 May 16 14:24, you wrote to Alan Ianson:

    Is it possible to have a pktinfo that doesn't depend on fido.config?
    I have fidoconfig myself so it's not a problem for me, but for others
    who don't use husky?

    Is there an external utility maybe by perl or something to inspect
    pkt files? I would like to have a utility that can tell me the
    version of pkt that I have if there is such a thing.

    I wrote one:
    ftp://vert.synchro.net/main/bbs/pktdump.exe

    The source code is here: http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/sbbs3/pktdump.c

    You also need the following header files

    dirwrap.h
    fidodefs.h
    gen_defs.h
    wrapdll.h
    xpendian.h

    from here:

    http://cvs.synchro.net/cgi-bin/viewcvs.cgi/src/xpdev/


    Building with:

    cc -Wall -s -DXPDEV_DONT_DEFINE_INTTYPES=1 -o pktdump pktdump.c

    CLang on FreeBSD 10.3 spits out some warnings:

    pktdump.c:26:3: warning: implicitly declaring library function 'strcat' with type 'char *(char *, const char *)'
    strcat(str,point); }
    ^
    pktdump.c:26:3: note: please include the header <string.h> or explicitly provide a declaration for 'strcat'
    pktdump.c:29:2: warning: implicitly declaring library function 'strcpy' with type 'char *(char *, const char *)'
    strcpy(outstr,str);
    ^
    pktdump.c:29:2: note: please include the header <string.h> or explicitly provide a declaration for 'strcpy'
    pktdump.c:67:11: warning: format specifies type 'unsigned int' but the argument
    has type 'unsigned long' [-Wformat]
    ,fname,sizeof(pkthdr));
    ^~~~~~~~~~~~~~
    pktdump.c:73:5: warning: implicitly declaring library function 'memcmp' with type 'int (const void *, const void *, unsigned long)'
    if(memcmp(buf,"\x00\x00",2)) {
    ^
    pktdump.c:73:5: note: please include the header <string.h> or explicitly provide a declaration for 'memcmp'
    pktdump.c:124:32: warning: field precision should have type 'int', but argument
    has type 'unsigned long' [-Wformat]
    fprintf(stdout,"Password: '%.*s'\n",sizeof(pkthdr.type2.password),pkthdr.type2.password);
    ~~^~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    pktdump.c:196:49: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
    printf("sizeof(fpkthdr_t)=%d, expected: %d\n",sizeof(fpkthdr_t),FIDO_PACKET_HDR_LEN);
    ~~ ^~~~~~~~~~~~~~~~~
    %lu
    pktdump.c:200:49: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
    printf("sizeof(fpkdmsg_t)=%d, expected: %d\n",sizeof(fpkdmsg_t),FIDO_PACKED_MSG_HDR_LEN);
    ~~ ^~~~~~~~~~~~~~~~~
    %lu
    pktdump.c:204:49: warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat]
    printf("sizeof(fmsghdr_t)=%d, expected: %d\n",sizeof(fmsghdr_t),FIDO_STORED_MSG_HDR_LEN);
    ~~ ^~~~~~~~~~~~~~~~~
    %lu
    8 warnings generated.


    Here's a patch:

    -+- pktdump.c.orig 2016-05-25 02:42:08.889406000 +1000
    +++ pktdump.c 2016-05-25 02:51:09.002495601 +1000
    @@ -6,6 +6,7 @@
    #include "xpendian.h" /* swap */
    #include "dirwrap.h" /* _PATH_DEVNULL */
    #include <stdio.h>
    +#include <string.h>

    FILE* nulfp;
    FILE* bodyfp;
    @@ -64,7 +65,7 @@

    if(fread(&pkthdr,sizeof(pkthdr),1,fp) != 1) {
    fprintf(stderr,"%s !Error reading pkthdr (%u bytes)\n"
    - ,fname,sizeof(pkthdr));
    + ,fname,(unsigned)sizeof(pkthdr));
    return(-1);
    }

    @@ -121,7 +122,7 @@
    printf(" to %s%s\n" ,faddrtoa(&dest,NULL),destdomn);

    if(pkthdr.type2.password[0])
    - fprintf(stdout,"Password: '%.*s'\n",sizeof(pkthdr.type2.password),pkthdr.type2.password);
    + fprintf(stdout,"Password: '%.*s'\n",(unsigned)sizeof(pkthdr.type2.password),pkthdr.type2.password);

    fseek(fp,sizeof(pkthdr),SEEK_SET);

    @@ -193,15 +194,15 @@
    bodyfp=nulfp;

    if(sizeof(fpkthdr_t)!=FIDO_PACKET_HDR_LEN) {
    - printf("sizeof(fpkthdr_t)=%d, expected: %d\n",sizeof(fpkthdr_t),FIDO_PACKET_HDR_LEN);
    + printf("sizeof(fpkthdr_t)=%d, expected: %d\n",(unsigned)sizeof(fpkthdr_t),FIDO_PACKET_HDR_LEN);
    return(-1);
    }
    if(sizeof(fpkdmsg_t)!=FIDO_PACKED_MSG_HDR_LEN) {
    - printf("sizeof(fpkdmsg_t)=%d, expected: %d\n",sizeof(fpkdmsg_t),FIDO_PACKED_MSG_HDR_LEN);
    + printf("sizeof(fpkdmsg_t)=%d, expected: %d\n",(unsigned)sizeof(fpkdmsg_t),FIDO_PACKED_MSG_HDR_LEN);
    return(-1);
    }
    if(sizeof(fmsghdr_t)!=FIDO_STORED_MSG_HDR_LEN) {
    - printf("sizeof(fmsghdr_t)=%d, expected: %d\n",sizeof(fmsghdr_t),FIDO_STORED_MSG_HDR_LEN);
    + printf("sizeof(fmsghdr_t)=%d, expected: %d\n",(unsigned)sizeof(fmsghdr_t),FIDO_STORED_MSG_HDR_LEN);
    return(-1);
    }

    --- GoldED+/BSD 1.1.5-b20160201
    * Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
  • From andrew clarke@3:633/267 to Alan Ianson on Wednesday, May 25, 2016 03:04:28
    23 May 16 13:27, you wrote to all:

    Is it possible to have a pktinfo that doesn't depend on fido.config? I have fidoconfig myself so it's not a problem for me, but for others who don't use husky?

    Is there an external utility maybe by perl or something to inspect pkt files? I would like to have a utility that can tell me the version of
    pkt that I have if there is such a thing.

    Years ago I wrote this for Python 2.x.

    I've only tested it with Type 2+ packets as that's the only packet type anyone has ever sent me!

    It will probably need modification for Type 2.2 and other uncommon packet types.

    #!/usr/bin/env python

    import sys, struct, glob

    PROGRAM = 'PyPktList'
    VERSION = '1.3'
    WHO = 'Andrew Clarke <mail@ozzmosis.com>'
    BACKWHEN = '2006'
    WHEN = '2016'

    def show_usage():
    print PROGRAM + ' ' + VERSION
    print 'This program lists the contents of FidoNet Type 2 mail packet.'
    print
    print 'Usage: pktlist.py [pktfile ...]'
    print
    print 'Where pktfile is a file containing FidoNet Type 2 packed messages.'
    print 'Wildcards (eg. *.pkt) are allowed.'
    print
    print PROGRAM + ' was written by ' + WHO + ' in ' + BACKWHEN
    print 'and released to the public domain. Version ' + VERSION + ' was released in ' + WHEN + '.'
    sys.exit(1)

    class PktHdr:
    def __init__(self, fp):
    self.orignode = struct.unpack('<H', fp.read(2))[0]
    self.destnode = struct.unpack('<H', fp.read(2))[0]
    self.year = struct.unpack('<H', fp.read(2))[0]
    self.month = struct.unpack('<H', fp.read(2))[0]
    self.day = struct.unpack('<H', fp.read(2))[0]
    self.hour = struct.unpack('<H', fp.read(2))[0]
    self.minute = struct.unpack('<H', fp.read(2))[0]
    self.second = struct.unpack('<H', fp.read(2))[0]
    self.baud = struct.unpack('<H', fp.read(2))[0]
    self.pkttype = struct.unpack('<H', fp.read(2))[0]
    self.orignet = struct.unpack('<H', fp.read(2))[0]
    self.destnet = struct.unpack('<H', fp.read(2))[0]
    self.prodcode1 = struct.unpack('<H', fp.read(2))[0]
    self.password = fp.read(8)
    self.qorigzone = struct.unpack('<H', fp.read(2))[0]
    self.qdestzone = struct.unpack('<H', fp.read(2))[0]
    self.auxnet = struct.unpack('<H', fp.read(2))[0]
    self.capvalid = struct.unpack('<H', fp.read(2))[0]
    self.prodcode2 = struct.unpack('<H', fp.read(2))[0]
    self.capword = struct.unpack('<H', fp.read(2))[0]
    self.origzone = struct.unpack('<H', fp.read(2))[0]
    self.destzone = struct.unpack('<H', fp.read(2))[0]
    self.origpoint = struct.unpack('<H', fp.read(2))[0]
    self.destpoint = struct.unpack('<H', fp.read(2))[0]
    self.fill = fp.read(4)

    class MsgHdr:
    def __init__(self, fp):
    self.pkttype = struct.unpack('<H', fp.read(2))[0]
    if self.pkttype == 0:
    return
    self.orignode = struct.unpack('<H', fp.read(2))[0]
    self.destnode = struct.unpack('<H', fp.read(2))[0]
    self.orignet = struct.unpack('<H', fp.read(2))[0]
    self.destnet = struct.unpack('<H', fp.read(2))[0]
    self.attribute = struct.unpack('<H', fp.read(2))[0]
    self.cost = struct.unpack('<H', fp.read(2))[0]
    self.datetime = fp.read(20)

    def get0(fp):
    str = ''
    while True:
    ch = fp.read(1)
    if ch == '' or ch == '\0':
    return str
    else:
    str += ch

    def process_pkt(filename):
    fp = file(filename, 'rb')
    pkthdr = PktHdr(fp)

    # use qorigzone if origzone is zero

    if pkthdr.origzone == 0:
    pkthdr.origzone = pkthdr.qorigzone

    # use qdestzone if destzone is zero

    if pkthdr.destzone == 0:
    pkthdr.destzone = pkthdr.qdestzone

    # month is zero-based, so adjust it

    pkthdr.month += 1

    # Thunderbirds are go!

    print 'Dump of packet header'
    print '==============================================================================\n'

    print '%-15s: %s' % ('Packet', filename)
    print '%-15s: %hu:%hu/%hu.%hu' % ('OrigAddr', pkthdr.origzone, pkthdr.orignet, pkthdr.orignode, pkthdr.origpoint)
    print '%-15s: %hu:%hu/%hu.%hu' % ('DestAddr', pkthdr.destzone, pkthdr.destnet, pkthdr.destnode, pkthdr.destpoint)

    print '%-15s: %04hu-%02hu-%02hu %02hu:%02hu:%02hu' % ('DateCreation',
    pkthdr.year, pkthdr.month, pkthdr.day, pkthdr.hour, pkthdr.minute, pkthdr.second)

    print '%-15s: %hu' % ('BaudRate', pkthdr.baud)
    print '%-15s: 0x%04hx' % ('PktType', pkthdr.pkttype)
    print '%-15s: "%s"' % ('Password', pkthdr.password)
    print '%-15s: %hu' % ('AuxNet', pkthdr.auxnet)
    print '%-15s: 0x%04hx' % ('CapWord', pkthdr.capword)
    print '%-15s: 0x%04hx' % ('CapValid', pkthdr.capvalid)
    print '%-15s: "%s"' % ('Fill', pkthdr.fill)

    msgcount = 0

    msghdr = MsgHdr(fp)

    while msghdr.pkttype == 2:
    msgcount += 1

    msgto = get0(fp)
    msgfrom = get0(fp)
    msgsubj = get0(fp)

    print '\nDump of packed message header'
    print '------------------------------------------------------------------------------\n'

    print '%-15s: 0x%04hx' % ('PktType', msghdr.pkttype)
    print '%-15s: %s' % ('From', msgfrom)
    print '%-15s: %s' % ('To', msgto)
    print '%-15s: %s' % ('Subject', msgsubj)
    print '%-15s: %s' % ('DateTime', msghdr.datetime[:19])

    print '%-15s: %hu/%hu' % ('OrigAddr', msghdr.orignet, msghdr.orignode)
    print '%-15s: %hu/%hu' % ('DestAddr', msghdr.destnet, msghdr.destnode)
    print '%-15s: %hu' % ('Cost', msghdr.cost)
    print '%-15s: 0x%04hx' % ('Attr', msghdr.attribute)

    msgtext = get0(fp)

    areatag = 'NETMAIL'

    if msgtext.startswith('AREA:'):
    firstline = msgtext.split('\r', 1)[0]
    areaprefix, areatag = firstline.split(':', 1)

    print '%-15s: %s' % ('AreaTag', areatag)

    msghdr = MsgHdr(fp)

    fp.close()

    print '\n-- Messages in packet: %5lu\n' % (msgcount, )

    return msgcount

    if __name__ == '__main__':
    if len(sys.argv) < 2:
    show_usage()

    totalmsg = 0

    for arg in sys.argv[1:]:
    if '?' in arg or '*' in arg:
    globbed = glob.glob(arg)
    for arg in globbed:
    totalmsg += process_pkt(arg)
    else:
    totalmsg += process_pkt(arg)

    print '-- Total messages: %5d' % (totalmsg,)

    --- GoldED+/BSD 1.1.5-b20160201
    * Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
  • From mark lewis@1:3634/12.73 to andrew clarke on Tuesday, May 24, 2016 16:10:02

    25 May 16 03:04, you wrote to Alan Ianson:

    Years ago I wrote this for Python 2.x.

    to handle pkts from points, add the following above your thunderbirds comment...

    ===== anip =====
    # if orignet is 65535, use auxnet

    if pkthdr.orignet == 65535:
    pkthdr.orignet = pkthdr.auxnet
    ===== snip =====

    I've only tested it with Type 2+ packets as that's the only packet
    type anyone has ever sent me!

    i didn't know you were looking for any ;)

    It will probably need modification for Type 2.2 and other uncommon
    packet types.

    i might mess around with it and see what can be done to add the other two type 2 formats... no sure, though... am kinda interested in python for several projects that have python engines in them... i think, though, that they're doing python3...

    )\/(ark

    Always Mount a Scratch Monkey

    ... There is no failure except in no longer trying.
    ---
    * Origin: (1:3634/12.73)
  • From andrew clarke@3:633/267 to mark lewis on Wednesday, May 25, 2016 09:35:30
    24 May 16 16:10, you wrote to me:

    to handle pkts from points, add the following above your thunderbirds comment...

    pkthdr.origpoint & destpoint should work fine?

    ===== anip =====
    # if orignet is 65535, use auxnet

    if pkthdr.orignet == 65535:
    pkthdr.orignet = pkthdr.auxnet
    ===== snip =====

    Hmm, ok. I'm not sure what software uses this.

    Delving into the HPT source, it has:

    if (header->origAddr.net == 65535) {
    if (header->origAddr.point) header->origAddr.net = header->auxNet;
    else header->origAddr.net = header->destAddr.net; /* not in FSC ! */
    }

    which in my Python code would translate to:

    if pkthdr.orignet == 65535:
    if pkthdr.origpoint != 0:
    pkthdr.orignet = pkthdr.auxnet
    else:
    pkthdr.orignet = pkthdr.destnet

    I trust HPT is doing the correct thing here but it's pretty weird-looking.

    HPT never sets the auxnet field to non-zero anywhere, though. Maybe some older software does.

    i might mess around with it and see what can be done to add the other
    two type 2 formats... no sure, though... am kinda interested in python
    for several projects that have python engines in them... i think,
    though, that they're doing python3...

    Well Python 2 & 3 aren't hugely different.

    The 2to3 program included with Python will convert my code to 3.x syntax.

    --- GoldED+/BSD 1.1.5-b20160201
    * Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
  • From mark lewis@1:3634/12.73 to andrew clarke on Tuesday, May 24, 2016 23:54:58

    25 May 16 09:35, you wrote to me:

    to handle pkts from points, add the following above your thunderbirds
    comment...

    pkthdr.origpoint & destpoint should work fine?

    those do but it is pkthdr.orignet that has to change based on if it is 65535...
    in that case, pkthdr.auxnet should be used...

    ===== anip =====
    # if orignet is 65535, use auxnet

    if pkthdr.orignet == 65535:
    pkthdr.orignet = pkthdr.auxnet
    ===== snip =====

    Hmm, ok. I'm not sure what software uses this.

    BBBS for one... most any that do type 2+ PKTs from point systems should do this
    as well... i will have to set up a special test system to see what fastecho does... if the fmail maintainer is here, perhaps he can tell us what fmail does
    when it creates type 2+ PKTs from point systems...

    Delving into the HPT source, it has:

    if (header->origAddr.net == 65535) {
    if (header->origAddr.point) header->origAddr.net = header->auxNet;
    else header->origAddr.net = header->destAddr.net; /* not in FSC ! */ }

    i think that is OK... i haven't traced it fully, though... it looks like it jumps directly to the auxnet address if there is a point number at all... that's not really right, though... auxnet should be used only if orignet is 65535... not if there is a point address... the logic is similar but the distinction is between the two formulas is ummm... distinct...

    which in my Python code would translate to:

    if pkthdr.orignet == 65535:
    if pkthdr.origpoint != 0:
    pkthdr.orignet = pkthdr.auxnet
    else:
    pkthdr.orignet = pkthdr.destnet

    I trust HPT is doing the correct thing here but it's pretty weird-looking.

    yes, it is kinda... the only key that i'm aware of is if orignet == 65535 then auxnet should be used as it will/should contain the proper origin net number...
    the result would not work if the address is 1:153/123.2 and a pointnet of 1:12345/2 was used... this conversation is taking place over at least two echos... maybe three... i think FIDO_UTIL is the other one where i explained this earlier today...

    HPT never sets the auxnet field to non-zero anywhere, though. Maybe
    some older software does.

    if HPT is creating type 2+ PKTs from a point address, it should be setting orignet to 65535... i'll have to take a look at some of the PKTs from this system to my main host system...

    i might mess around with it and see what can be done to add the other
    two type 2 formats... no sure, though... am kinda interested in python
    for several projects that have python engines in them... i think,
    though, that they're doing python3...

    Well Python 2 & 3 aren't hugely different.

    that's what i thought, too...

    The 2to3 program included with Python will convert my code to 3.x
    syntax.

    cool that they added a conversion tool...

    does python have a way to load a buffer with data and then overlay other formats right on top of that buffer so as to be able to view certain data in different ways? this is like TP's

    header1 : pkthdr1 absolute bulkhdr;
    header2 : pkthdr2 absolute bulkhdr;
    header3 : phthdr3 absolute bulkhdr;

    and then we can use header1, header2 and header3 to look for sane values in certain specific fields to determine which PKT type we are looking at...

    )\/(ark

    Always Mount a Scratch Monkey

    ... It's not nice to *fool* with Mother Nature, is it?
    ---
    * Origin: (1:3634/12.73)
  • From andrew clarke@3:633/267 to Ross Cassell on Thursday, May 26, 2016 10:01:10
    25 May 16 19:32, you wrote to :

    Separate issue, I have been unable to get nltools to compile..

    Currently running what I believe to be relatively recent sources under ubuntu 14.04.

    Here is the make output.

    http://www.easternstar.info/nltools.txt

    Any insight would be appreciated.

    There's an error in the Makefile that's been there since 2012. See below for a patch.

    Index: Makefile ===================================================================
    RCS file: /cvsroot/husky/nltools/Makefile,v
    retrieving revision 1.19
    diff -u -r1.19 Makefile
    -+- Makefile 18 Apr 2012 18:08:10 -0000 1.19
    +++ Makefile 26 May 2016 00:00:53 -0000
    @@ -52,7 +52,7 @@
    string$(_OBJ) nldate$(_OBJ) julian$(_OBJ) nlfind$(_OBJ) \
    $(LIBS)

    -nlupd$(_EXE): nlupdate$(_OBJ) string$(_OBJ) nldate$(_OBJ) julian$(_OBJ) \ +nlupdate$(_EXE): nlupdate$(_OBJ) string$(_OBJ) nldate$(_OBJ) julian$(_OBJ) \
    nlfind$(_OBJ)
    $(CC) $(LFLAGS) -o nlupd$(_EXE) nlupdate$(_OBJ) string$(_OBJ) \
    nldate$(_OBJ) julian$(_OBJ) nlfind$(_OBJ) $(LIBS)

    --- GoldED+/BSD 1.1.5-b20160201
    * Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
  • From mark lewis@1:3634/12.73 to andrew clarke on Thursday, May 26, 2016 09:05:12

    26 May 16 10:01, you wrote to Ross Cassell:

    There's an error in the Makefile that's been there since 2012. See below for a patch.

    Index: Makefile ===================================================================
    RCS file: /cvsroot/husky/nltools/Makefile,v
    retrieving revision 1.19
    diff -u -r1.19 Makefile
    -+- Makefile 18 Apr 2012 18:08:10 -0000 1.19
    +++ Makefile 26 May 2016 00:00:53 -0000
    @@ -52,7 +52,7 @@
    string$(_OBJ) nldate$(_OBJ) julian$(_OBJ) nlfind$(_OBJ) \
    $(LIBS)

    -nlupd$(_EXE): nlupdate$(_OBJ) string$(_OBJ) nldate$(_OBJ) julian$(_OBJ) \ +nlupdate$(_EXE): nlupdate$(_OBJ) string$(_OBJ) nldate$(_OBJ)
    julian$(_OBJ)
    \
    nlfind$(_OBJ)
    $(CC) $(LFLAGS) -o nlupd$(_EXE) nlupdate$(_OBJ) string$(_OBJ) \

    where does nlupd$(_EXE) come from in the above line? should it also be nlupdate$(_EXE)??

    nldate$(_OBJ) julian$(_OBJ) nlfind$(_OBJ) $(LIBS)


    )\/(ark

    Always Mount a Scratch Monkey

    ... I read so much about risks of drinking, I gave up reading.
    ---
    * Origin: (1:3634/12.73)
  • From Nicholas Boel@1:154/10 to mark lewis on Thursday, May 26, 2016 15:54:48
    Hello mark,

    On 26 May 16 09:05, mark lewis wrote to andrew clarke:

    where does nlupd$(_EXE) come from in the above line? should it also be
    nlupdate$(_EXE)??

    By now quoting of those lines is borked, and I didn't care to fix it. But you did notice the "-" and "+" at the beginning of those lines, right? Minus means take out the line, and Plus means add the line in a patch.

    Unless I misread and have no clue what you're referring to, but that's the only
    place I saw "nlupd" was in the 'take out this line' part of the patch.

    Basically, just edit the makefile, and change "nlupd" to "nlupdate" in that one
    line. That is all.

    Regards,
    Nick

    --- GoldED+/LNX 1.1.5-b20160322
    * Origin: thePharcyde_ telnet://bbs.pharcyde.org (Wisconsin) (1:154/10)
  • From mark lewis@1:3634/12.73 to Nicholas Boel on Thursday, May 26, 2016 20:09:04

    26 May 16 15:54, you wrote to me:

    where does nlupd$(_EXE) come from in the above line? should it also be
    nlupdate$(_EXE)??

    By now quoting of those lines is borked, and I didn't care to fix it. But you did notice the "-" and "+" at the beginning of those lines, right? Minus means take out the line, and Plus means add the line in a patch.

    yes... the one i was pointing to was the second occurance on a continued line...

    Unless I misread and have no clue what you're referring to, but that's
    the only place I saw "nlupd" was in the 'take out this line' part of
    the patch.

    Basically, just edit the makefile, and change "nlupd" to "nlupdate" in that one line. That is all.

    there was two changes posted for the file... one changed one line but the more correct one changed another line... the one i'm asking about is in the second more correct posted fix...

    but yes, you are right... that's all it takes to fix it... but will we have to do this every time after we update our local repository? ;)

    )\/(ark

    Always Mount a Scratch Monkey

    ... I have a firm grip on reality. Now I can strangle it!
    ---
    * Origin: (1:3634/12.73)
  • From Jeff Smith@1:14/5 to Alan Ianson on Sunday, May 29, 2016 07:58:40
    Hello Alan.

    23 May 16 13:27, you wrote to all:

    Hello All,

    Is it possible to have a pktinfo that doesn't depend on fido.config? I have fidoconfig myself so it's not a problem for me, but for others
    who don't use husky?

    Is there an external utility maybe by perl or something to inspect pkt files? I would like to have a utility that can tell me the version of
    pkt that I have if there is such a thing.

    I have been looking for a packet file viewer that works on Linux for awhile now. I considered Husky's PKTINFO but didn't really want to install Husky
    if I didn't need to. It's a pain to have to copy files that I need to look
    at over to a Win32 machine.


    Jeff

    --- GoldED+/W32-MINGW 1.1.5-b20070503
    * Origin: Region 14 IP Server - ftn.region14.org (1:14/5)
  • From Maurice Kinal@1:261/38 to Jeff Smith on Sunday, June 05, 2016 14:16:28
    Hey Jeff!

    I have been looking for a packet file viewer that works on Linux for awhile now. I considered Husky's PKTINFO but didn't really want to install Husky
    if I didn't need to. It's a pain to have to copy files that I need to look
    at over to a Win32 machine.

    head -c 58 < filename.pkt | \
    perl -e 'while(<>){@pktHeader = unpack("S12C10S4C2S7", $_);};\
    print join("\n",@pktHeader),"\n";'

    Life is good,
    Maurice

    --- BBBS/Li6 v4.10 Dada-2
    * Origin: Prism bbs (1:261/38)
  • From andrew clarke@3:633/267 to Maurice Kinal on Monday, June 06, 2016 12:15:58
    05 Jun 16 14:16, you wrote to Jeff Smith:

    I have been looking for a packet file viewer that works on Linux for
    awhile now. I considered Husky's PKTINFO but didn't really want to
    install Husky if I didn't need to. It's a pain to have to copy files
    that I need to look at over to a Win32 machine.

    head -c 58 < filename.pkt | \
    perl -e 'while(<>){@pktHeader = unpack("S12C10S4C2S7", $_);};\
    print join("\n",@pktHeader),"\n";'

    FWIW I think this output is only suitable for people with robot brains. It's only fractionally better than using a hex viewer.

    Among other things it shows the header password as numerical values (120 120 120 is xxx), which is not very useful.

    Also obviously it only dumps the packet header using the first 58 bytes, not the message headers within.

    I suppose it's better than nothing, but I'm not sure why you'd suggest using a one-liner when there were far better solutions already offered!

    $ head -c 58 < test.pkt | perl -e 'while(<>){@pktHeader = unpack("S12C10S4C2S7", $_);};\
    print join("\n",@pktHeader),"\n";'
    605
    605
    2012
    0
    4
    1
    39
    12
    0
    2
    2432
    2432
    255
    1
    120
    120
    120
    0
    0
    0
    0
    0
    2
    2
    0
    256
    16
    4
    1
    2
    2
    0
    14
    0
    0


    pktlist or pktdump are a lot friendlier:

    $ pktlist.py test.pkt
    Dump of packet header ==============================================================================

    Packet : test.pkt
    OrigAddr : 2:2432/605.0
    DestAddr : 2:2432/605.14
    DateCreation : 2012-01-04 01:39:12
    BaudRate : 0
    PktType : 0x0002
    Password : "xxx"
    AuxNet : 0
    CapWord : 0x0001
    CapValid : 0x0100
    Fill : ""

    Dump of packed message header ------------------------------------------------------------------------------

    PktType : 0x0002
    From : edde
    To : arix
    Subject : xxx
    DateTime : 04 Jan 12 01:39:12
    OrigAddr : 2432/605
    DestAddr : 2432/603
    Cost : 0
    Attr : 0x0001
    AreaTag : test.ger

    -- Messages in packet: 1

    -- Total messages: 1


    $ pktdump test.pkt
    pktdump rev 1.8 - Dump FidoNet Packets

    Opening test.pkt
    test.pkt Packet Type 2+ (prod: 10FF, rev: 1.4) from 2:2432/605 to 2:2432/605.14 Password: 'xxx'
    0000003A
    test.pkt 00003A Packed Message Type: 2 from 2432/605 to 2432/603
    Attribute: 0001
    Date/Time: 04 Jan 12 01:39:12
    To : arix
    From : edde
    Subj : xxx
    000000A6

    --- GoldED+/BSD 1.1.5-b20160201
    * Origin: Blizzard of Ozz, Melbourne, Victoria, Australia (3:633/267)
  • From Maurice Kinal@1:261/38 to Andrew Clarke on Monday, June 06, 2016 00:31:00
    Hey andrew!

    FWIW I think this output is only suitable for people with robot
    brains.

    That can and does happen. Personally I don't bother with headers. What for?

    I'm not sure why you'd suggest using a one-liner when there were
    far better solutions already offered!

    I am guessing extreme boredom.

    pktlist or pktdump are a lot friendlier:

    Yes but where is the fun in them? I offered a kickstart to a scripted solution
    that doesn't require many additional bytes and is easily adaptable if and when needed.

    Life is good,
    Maurice

    --- BBBS/Li6 v4.10 Dada-2
    * Origin: Prism bbs (1:261/38)