[HECnet] VMS FTP server?

Mark Pizzolato - Info Comm Mark at infocomm.com
Thu Jan 8 12:57:36 PST 2015


On Thursday, January 08, 2015 at 12:22 PM, Johnny Billquist wrote:
Even better. This I can work with, and I can do the same...
Actually, I'll be tricky and start with RSX, and if that fails, try VMS, on the
client side. While the server should understand both.

Now I just need to figure out the binary blob. Could you capture one from a
plain text file transfer for me? I think that should be enough.
(Actually, any file, as long as you can also provide me with what a DIR /FULL
shows for the file.)

I have a very strong suspicion what is in there, I just want to verify it.

When I looked earlier there were a lot of zeros.   Guessing is probably not worth it.   I think it would be more productive to dig through the source to the HGFTP server.   The source is in the HGFTP033.F saveset within the previously mentioned zip file.   The module FTP_FTON.B32 seems to contain the relevant magic:

      fileattr_buffer[FATTR_L_VERSION] = FATTR_C_FILEATTR_VERSION;
      fileattr_buffer[FATTR_L_LENGTH] = FATTR_S_FATTRDEF;

      fileattr_buffer[FATTR_L_FAB_L_ALQ] = .in_fab[FAB$L_ALQ];
      fileattr_buffer[FATTR_L_FAB_L_FOP] = .in_fab[FAB$L_FOP];
      fileattr_buffer[FATTR_L_FAB_L_MRN] = .in_fab[FAB$L_MRN];
      fileattr_buffer[FATTR_W_FAB_W_DEQ] = .in_fab[FAB$W_DEQ];
      fileattr_buffer[FATTR_W_FAB_W_MRS] = .in_fab[FAB$W_MRS];
      fileattr_buffer[FATTR_B_FAB_B_ORG] = .in_fab[FAB$B_ORG];
      fileattr_buffer[FATTR_B_FAB_B_RAT] = .in_fab[FAB$B_RAT];
      fileattr_buffer[FATTR_B_FAB_B_RFM] = .in_fab[FAB$B_RFM];
      fileattr_buffer[FATTR_B_FAB_B_BKS] = .in_fab[FAB$B_BKS];
      fileattr_buffer[FATTR_B_FAB_B_FSZ] = .in_fab[FAB$B_FSZ];

      fileattr_buffer[FATTR_B_XAB_B_RFO] = .in_xabfhc[XAB$B_RFO];
      fileattr_buffer[FATTR_W_XAB_W_LRL] = .in_xabfhc[XAB$W_LRL];
      fileattr_buffer[FATTR_B_XAB_B_BKZ] = .in_xabfhc[XAB$B_BKZ];
      fileattr_buffer[FATTR_B_XAB_B_HSZ] = .in_xabfhc[XAB$B_HSZ];
      fileattr_buffer[FATTR_W_XAB_W_MRZ] = .in_xabfhc[XAB$W_MRZ];
      fileattr_buffer[FATTR_W_XAB_W_DXQ] = .in_xabfhc[XAB$W_DXQ];
      fileattr_buffer[FATTR_W_XAB_W_GBC] = .in_xabfhc[XAB$W_GBC];
      fileattr_buffer[FATTR_B_XAB_B_ATR] = .in_xabfhc[XAB$B_ATR];

      fileattr_buffer[FATTR_B_FAB_B_RTV] = .in_fab[FAB$B_RTV];
      fileattr_buffer[FATTR_W_FAB_W_BLS] = .in_fab[FAB$W_BLS];

Where in FTP.R32 the FATTR structure seems to be defined:

_DEF(FATTR)
      FATTR_L_VERSION                         = _LONG,
      FATTR_L_LENGTH                           = _LONG,
      FATTR_L_FAB_L_ALQ                     = _LONG,
      FATTR_L_FAB_L_FOP                     = _LONG,
      FATTR_L_FAB_L_MRN                     = _LONG,
      FATTR_W_FAB_W_DEQ                     = _WORD,
      FATTR_W_FAB_W_MRS                     = _WORD,
      FATTR_B_FAB_B_ORG                     = _BYTE,
      FATTR_B_FAB_B_RAT                     = _BYTE,
      FATTR_B_FAB_B_RFM                     = _BYTE,
      FATTR_B_FAB_B_BKS                     = _BYTE,
      FATTR_B_FAB_B_FSZ                     = _BYTE,
      FATTR_B_XAB_B_RFO                     = _BYTE,
      FATTR_W_XAB_W_LRL                     = _WORD,
      FATTR_B_XAB_B_BKZ                     = _BYTE,
      FATTR_B_XAB_B_HSZ                     = _BYTE,
      FATTR_W_XAB_W_MRZ                     = _WORD,
      FATTR_W_XAB_W_DXQ                     = _WORD,
      FATTR_W_XAB_W_GBC                     = _WORD,
      FATTR_B_XAB_B_ATR                     = _BYTE,
      FATTR_B_FAB_B_RTV                     = _BYTE,
      FATTR_W_FAB_W_BLS                     = _WORD,
      FATTR_W_XAB_SEMANTICS_LENGTH= _WORD,               ! sizeof(xab_stored_semantics)
      FATTR_W_XFILL                             = _WORD,               ! Preserve QUAD alignment
      FATTR_X_XAB_STORED_SEMANTICS= _BYTES(XAB$C_SEMANTICS_MAX_LEN)
_ENDDEF(FATTR);

This implies that for some files there are extended attributes appended.

If you don't have the system to unpack the zip and extract these files from the saveset I'll be glad to send them directly.   Otherwise I'm done digging.

- Mark



More information about the Hecnet-list mailing list