diff --git a/python/local/ovms_module/ovms/atrdef/__init__.py b/python/local/ovms_module/ovms/atrdef/__init__.py index 91c3454e812412de41b668f72f91f5989f64521d_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvYXRyZGVmL19faW5pdF9fLnB5..5d7d55d0d9c3e4f7f8cdd5799031e1c126017f89_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvYXRyZGVmL19faW5pdF9fLnB5 100644 --- a/python/local/ovms_module/ovms/atrdef/__init__.py +++ b/python/local/ovms_module/ovms/atrdef/__init__.py @@ -1,5 +1,14 @@ -'vms Extension Series for Python' -__version__ = '0.3' +"vms Extension Series for Python" +from ctypes import ( + Structure, + c_ushort, + c_void_p, + c_char, + POINTER, + cast, + sizeof, +) + """vms Extension Series for Python Copyright (c) 2002-2020, Jean-Francois Pieronne jf.pieronne@laposte.net @@ -8,7 +17,7 @@ """ # vms Extension Series version number # (note that subpackages have their own version number) -__version__ = '0.3' +__version__ = "0.3" # Copyright notice string __copyright__ = """ @@ -17,7 +26,7 @@ or contact the author. All Rights Reserved. """ -#*** MODULE $ATRDEF *** +# *** MODULE $ATRDEF *** # ATTRIBUTE LIST DESCRIPTION. THE ATTRIBUTE CONTROL LIST IS USED TO READ AND # WRITE FILE ATTRIBUTES. IT CONSISTS OF CONCATENATED ATTRIBUTE CONTROL BLOCKS # TERMINATED BY A SINGLE ZERO LONGWORD. @@ -21,6 +30,6 @@ # ATTRIBUTE LIST DESCRIPTION. THE ATTRIBUTE CONTROL LIST IS USED TO READ AND # WRITE FILE ATTRIBUTES. IT CONSISTS OF CONCATENATED ATTRIBUTE CONTROL BLOCKS # TERMINATED BY A SINGLE ZERO LONGWORD. -# -# 4 BYTE USER FILE CHARACTERISTICS +# +# 4 BYTE USER FILE CHARACTERISTICS ATR_C_UCHAR = 3 @@ -26,3 +35,3 @@ ATR_C_UCHAR = 3 -# 32 BYTES RECORD ATTRIBUTES +# 32 BYTES RECORD ATTRIBUTES ATR_C_RECATTR = 4 @@ -28,3 +37,3 @@ ATR_C_RECATTR = 4 -# 6 BYTE RAD-50 FILE NAME +# 6 BYTE RAD-50 FILE NAME ATR_C_FILNAM = 5 @@ -30,3 +39,3 @@ ATR_C_FILNAM = 5 -# 2 BYTE RAD-50 FILE TYPE +# 2 BYTE RAD-50 FILE TYPE ATR_C_FILTYP = 6 @@ -32,3 +41,3 @@ ATR_C_FILTYP = 6 -# 2 BYTE BINARY FILE VERSION +# 2 BYTE BINARY FILE VERSION ATR_C_FILVER = 7 @@ -34,3 +43,3 @@ ATR_C_FILVER = 7 -# 7 BYTE ASCII EXPIRATION DATE +# 7 BYTE ASCII EXPIRATION DATE ATR_C_EXPDAT = 8 @@ -36,3 +45,3 @@ ATR_C_EXPDAT = 8 -# 32 BYTE STATISTICS BLOCK +# 32 BYTE STATISTICS BLOCK ATR_C_STATBLK = 9 @@ -38,3 +47,3 @@ ATR_C_STATBLK = 9 -# 512 BYTE FILE HEADER +# 512 BYTE FILE HEADER ATR_C_HEADER = 10 @@ -40,3 +49,3 @@ ATR_C_HEADER = 10 -# MAGTAPE BLOCK SIZE +# MAGTAPE BLOCK SIZE ATR_C_BLOCKSIZE = 11 @@ -42,3 +51,3 @@ ATR_C_BLOCKSIZE = 11 -# USER FILE LABEL +# USER FILE LABEL ATR_C_USERLABEL = 12 @@ -44,3 +53,3 @@ ATR_C_USERLABEL = 12 -# REVISION COUNT THRU EXP DATE IN ASCII +# REVISION COUNT THRU EXP DATE IN ASCII ATR_C_ASCDATES = 13 @@ -46,3 +55,3 @@ ATR_C_ASCDATES = 13 -# COMPATIBILITY MODE ALLOCATION DATA +# COMPATIBILITY MODE ALLOCATION DATA ATR_C_ALCONTROL = 14 @@ -48,3 +57,3 @@ ATR_C_ALCONTROL = 14 -# END OF MAGTAPE LABEL PROCESSING AND SUPPLY AST CONTROL BLOCK +# END OF MAGTAPE LABEL PROCESSING AND SUPPLY AST CONTROL BLOCK ATR_C_ENDLBLAST = 15 @@ -50,3 +59,3 @@ ATR_C_ENDLBLAST = 15 -# FILE NAME, TYPE & VERSION IN ASCII +# FILE NAME, TYPE & VERSION IN ASCII ATR_C_ASCNAME = 16 @@ -52,3 +61,3 @@ ATR_C_ASCNAME = 16 -# 64 BIT CREATION DATE +# 64 BIT CREATION DATE ATR_C_CREDATE = 17 @@ -54,3 +63,3 @@ ATR_C_CREDATE = 17 -# 64 BIT REVISION DATE +# 64 BIT REVISION DATE ATR_C_REVDATE = 18 @@ -56,3 +65,3 @@ ATR_C_REVDATE = 18 -# 64 BIT EXPIRATION DATE +# 64 BIT EXPIRATION DATE ATR_C_EXPDATE = 19 @@ -58,3 +67,3 @@ ATR_C_EXPDATE = 19 -# 64 BIT BACKUP DATE +# 64 BIT BACKUP DATE ATR_C_BAKDATE = 20 @@ -60,3 +69,3 @@ ATR_C_BAKDATE = 20 -# 4 BYTE FILE OWNER UIC +# 4 BYTE FILE OWNER UIC ATR_C_UIC = 21 @@ -62,3 +71,3 @@ ATR_C_UIC = 21 -# 2 BYTE FILE PROTECTION +# 2 BYTE FILE PROTECTION ATR_C_FPRO = 22 @@ -64,3 +73,3 @@ ATR_C_FPRO = 22 -# 2 BYTE RECORD PROTECTION +# 2 BYTE RECORD PROTECTION ATR_C_RPRO = 23 @@ -66,3 +75,3 @@ ATR_C_RPRO = 23 -# 1 BYTE FILE ACCESS LEVEL +# 1 BYTE FILE ACCESS LEVEL ATR_C_ACLEVEL = 24 @@ -68,3 +77,3 @@ ATR_C_ACLEVEL = 24 -# FILE SECURITY MASK AND LIMIT +# FILE SECURITY MASK AND LIMIT ATR_C_SEMASK = 25 @@ -70,3 +79,3 @@ ATR_C_SEMASK = 25 -# READ ONLY UIC +# READ ONLY UIC ATR_C_UIC_RO = 26 @@ -72,3 +81,3 @@ ATR_C_UIC_RO = 26 -# DIRECTORY UPDATE SEQUENCE COUNT +# DIRECTORY UPDATE SEQUENCE COUNT ATR_C_DIRSEQ = 27 @@ -74,3 +83,3 @@ ATR_C_DIRSEQ = 27 -# FILE BACK LINK POINTER +# FILE BACK LINK POINTER ATR_C_BACKLINK = 28 @@ -76,3 +85,3 @@ ATR_C_BACKLINK = 28 -# JOURNAL CONTROL FLAGS +# JOURNAL CONTROL FLAGS ATR_C_JOURNAL = 29 @@ -78,4 +87,4 @@ ATR_C_JOURNAL = 29 -# ANSI TAPE HEADER 1 ACCESSIBILITY +# ANSI TAPE HEADER 1 ACCESSIBILITY ATR_C_HDR1_ACC = 30 # CHARACTER @@ -80,4 +89,4 @@ ATR_C_HDR1_ACC = 30 # CHARACTER -# ADD AN ACCESS CONTROL ENTRY +# ADD AN ACCESS CONTROL ENTRY ATR_C_ADDACLENT = 31 @@ -83,3 +92,3 @@ ATR_C_ADDACLENT = 31 -# REMOVE AN ACCESS CONTROL ENTRY +# REMOVE AN ACCESS CONTROL ENTRY ATR_C_DELACLENT = 32 @@ -85,3 +94,3 @@ ATR_C_DELACLENT = 32 -# MODIFY AN ACL ENTRY +# MODIFY AN ACL ENTRY ATR_C_MODACLENT = 33 @@ -87,3 +96,3 @@ ATR_C_MODACLENT = 33 -# LOCATE AN ACL ENTRY +# LOCATE AN ACL ENTRY ATR_C_FNDACLENT = 34 @@ -89,5 +98,5 @@ ATR_C_FNDACLENT = 34 -# FIND A SPECIFIC TYPE OF ACE +# FIND A SPECIFIC TYPE OF ACE ATR_C_FNDACLTYP = 35 # DELETE ACL LEAVING PROTECTED ATR_C_DELETEACL = 36 @@ -91,7 +100,7 @@ ATR_C_FNDACLTYP = 35 # DELETE ACL LEAVING PROTECTED ATR_C_DELETEACL = 36 -# READ THE ENTIRE ACL +# READ THE ENTIRE ACL ATR_C_READACL = 37 # RETURN THE LENGTH OF THE ACL ATR_C_ACLLENGTH = 38 @@ -99,7 +108,7 @@ ATR_C_READACE = 39 # MODIFY RESERVED AREA ATR_C_RESERVED = 40 -# HIGHWATER MARK (USER READ ONLY) +# HIGHWATER MARK (USER READ ONLY) ATR_C_HIGHWATER = 41 # *** AVAILABLE CODE ATR_C_DUMMY_0 = 42 @@ -122,5 +131,5 @@ ATR_C_GRANT_ACE = 50 # Increment ACE number ATR_C_NEXT_ACE = 51 -# Delete the entire ACL +# Delete the entire ACL ATR_C_DELETE_ALL = 52 @@ -126,8 +135,8 @@ ATR_C_DELETE_ALL = 52 -# Alter backup info in RMS journaling ACEs +# Alter backup info in RMS journaling ACEs ATR_C_BACKUP_DONE = 53 # ISO 9660 Descriptors # ISO 9660 Backup Date ATR_C_EFFDATE = 54 # ISO 9660 Recorded Date ATR_C_RCDDATE = 55 @@ -128,8 +137,8 @@ ATR_C_BACKUP_DONE = 53 # ISO 9660 Descriptors # ISO 9660 Backup Date ATR_C_EFFDATE = 54 # ISO 9660 Recorded Date ATR_C_RCDDATE = 55 -# Volume Descriptor +# Volume Descriptor ATR_C_VD = 56 @@ -135,3 +144,3 @@ ATR_C_VD = 56 -# Primary Volume Descriptor +# Primary Volume Descriptor ATR_C_PVD = 57 @@ -137,3 +146,3 @@ ATR_C_PVD = 57 -# Supplementary Volume Descriptor +# Supplementary Volume Descriptor ATR_C_SVD = 58 @@ -139,3 +148,3 @@ ATR_C_SVD = 58 -# Volume Partition Descriptor +# Volume Partition Descriptor ATR_C_VPD = 59 @@ -141,3 +150,3 @@ ATR_C_VPD = 59 -# Volume Descriptor Set Terminator +# Volume Descriptor Set Terminator ATR_C_VDST = 60 @@ -143,3 +152,3 @@ ATR_C_VDST = 60 -# Boot Record +# Boot Record ATR_C_BOOT = 61 @@ -145,3 +154,3 @@ ATR_C_BOOT = 61 -# Path Table Record +# Path Table Record ATR_C_PTR = 62 @@ -147,3 +156,3 @@ ATR_C_PTR = 62 -# Directory Record +# Directory Record ATR_C_DIR = 63 @@ -149,5 +158,5 @@ ATR_C_DIR = 63 -# Extended Attribute Record +# Extended Attribute Record ATR_C_XAR = 64 # ISO 9660 Descriptors Fields # Volume Identifier @@ -160,5 +169,5 @@ ATR_C_VOLUME_SET_ID = 68 # Copyright File Identifier ATR_C_COPYRIGHT_FID = 69 -# Abstract File Identifier +# Abstract File Identifier ATR_C_ABSTRACT_FID = 70 @@ -164,5 +173,5 @@ ATR_C_ABSTRACT_FID = 70 -# Bibliographic File Identifier +# Bibliographic File Identifier ATR_C_BIBLIOGRAPHIC_FID = 71 # Cache sequence number ATR_C_CACHE_SEQ = 72 @@ -195,7 +204,7 @@ ATR_C_SYMLINK = 85 # All new attributes should be # added here before MAX_PLUS1 -# Maximum code plus one +# Maximum code plus one ATR_C_MAX_PLUS1 = 86 # ATR_C_MAX_CODE = 85 @@ -208,6 +217,6 @@ ATR_C_CACHE_POLICY_WRITEBACK = 2 # ATR_C_CACHE_POLICY_DEFAULT = 3 -# ATTRIBUTE MAXIMUM LENGTHS -# 4 BYTE USER FILE CHARACTERISTICS +# ATTRIBUTE MAXIMUM LENGTHS +# 4 BYTE USER FILE CHARACTERISTICS ATR_S_UCHAR = 4 @@ -213,3 +222,3 @@ ATR_S_UCHAR = 4 -# 32 BYTES RECORD ATTRIBUTES +# 32 BYTES RECORD ATTRIBUTES ATR_S_RECATTR = 32 @@ -215,3 +224,3 @@ ATR_S_RECATTR = 32 -# 6 BYTE RAD-50 FILE NAME +# 6 BYTE RAD-50 FILE NAME ATR_S_FILNAM = 6 @@ -217,3 +226,3 @@ ATR_S_FILNAM = 6 -# 2 BYTE RAD-50 FILE TYPE +# 2 BYTE RAD-50 FILE TYPE ATR_S_FILTYP = 2 @@ -219,3 +228,3 @@ ATR_S_FILTYP = 2 -# 2 BYTE BINARY FILE VERSION +# 2 BYTE BINARY FILE VERSION ATR_S_FILVER = 2 @@ -221,3 +230,3 @@ ATR_S_FILVER = 2 -# 7 BYTE ASCII EXPIRATION DATE +# 7 BYTE ASCII EXPIRATION DATE ATR_S_EXPDAT = 7 @@ -223,3 +232,3 @@ ATR_S_EXPDAT = 7 -# 32 BYTE STATISTICS BLOCK +# 32 BYTE STATISTICS BLOCK ATR_S_STATBLK = 32 @@ -225,3 +234,3 @@ ATR_S_STATBLK = 32 -# 512 BYTE FILE HEADER +# 512 BYTE FILE HEADER ATR_S_HEADER = 512 @@ -227,3 +236,3 @@ ATR_S_HEADER = 512 -# MAGTAPE BLOCK SIZE +# MAGTAPE BLOCK SIZE ATR_S_BLOCKSIZE = 2 @@ -229,3 +238,3 @@ ATR_S_BLOCKSIZE = 2 -# USER FILE LABEL +# USER FILE LABEL ATR_S_USERLABEL = 80 @@ -231,3 +240,3 @@ ATR_S_USERLABEL = 80 -# REVISION COUNT THRU EXP DATE IN ASCII +# REVISION COUNT THRU EXP DATE IN ASCII ATR_S_ASCDATES = 35 @@ -233,3 +242,3 @@ ATR_S_ASCDATES = 35 -# COMPATIBILITY MODE ALLOCATION DATA +# COMPATIBILITY MODE ALLOCATION DATA ATR_S_ALCONTROL = 14 @@ -235,5 +244,5 @@ ATR_S_ALCONTROL = 14 -# END OF MAGTAPE LABEL PROCESSING AND SUPPLY AST CONTROL BLOCK +# END OF MAGTAPE LABEL PROCESSING AND SUPPLY AST CONTROL BLOCK ATR_S_ENDLBLAST = 4 # FILE NAME, TYPE & VERSION ATR_S_ASCNAME = 252 @@ -237,5 +246,5 @@ ATR_S_ENDLBLAST = 4 # FILE NAME, TYPE & VERSION ATR_S_ASCNAME = 252 -# 64 BIT CREATION DATE +# 64 BIT CREATION DATE ATR_S_CREDATE = 8 @@ -241,3 +250,3 @@ ATR_S_CREDATE = 8 -# 64 BIT REVISION DATE +# 64 BIT REVISION DATE ATR_S_REVDATE = 8 @@ -243,3 +252,3 @@ ATR_S_REVDATE = 8 -# 64 BIT EXPIRATION DATE +# 64 BIT EXPIRATION DATE ATR_S_EXPDATE = 8 @@ -245,3 +254,3 @@ ATR_S_EXPDATE = 8 -# 64 BIT BACKUP DATE +# 64 BIT BACKUP DATE ATR_S_BAKDATE = 8 @@ -247,3 +256,3 @@ ATR_S_BAKDATE = 8 -# 4 BYTE FILE OWNER UIC +# 4 BYTE FILE OWNER UIC ATR_S_UIC = 4 @@ -249,3 +258,3 @@ ATR_S_UIC = 4 -# 2 BYTE FILE PROTECTION +# 2 BYTE FILE PROTECTION ATR_S_FPRO = 2 @@ -251,3 +260,3 @@ ATR_S_FPRO = 2 -# 2 BYTE RECORD PROTECTION +# 2 BYTE RECORD PROTECTION ATR_S_RPRO = 2 @@ -253,3 +262,3 @@ ATR_S_RPRO = 2 -# 1 BYTE FILE ACCESS LEVEL +# 1 BYTE FILE ACCESS LEVEL ATR_S_ACLEVEL = 1 @@ -255,3 +264,3 @@ ATR_S_ACLEVEL = 1 -# FILE SECURITY MASK AND LIMIT +# FILE SECURITY MASK AND LIMIT ATR_S_SEMASK = 8 @@ -257,3 +266,3 @@ ATR_S_SEMASK = 8 -# READ ONLY UIC +# READ ONLY UIC ATR_S_UIC_RO = 4 @@ -259,3 +268,3 @@ ATR_S_UIC_RO = 4 -# DIRECTORY UPDATE SEQUENCE COUNT +# DIRECTORY UPDATE SEQUENCE COUNT ATR_S_DIRSEQ = 2 @@ -261,3 +270,3 @@ ATR_S_DIRSEQ = 2 -# FILE BACK LINK POINTER +# FILE BACK LINK POINTER ATR_S_BACKLINK = 6 @@ -263,3 +272,3 @@ ATR_S_BACKLINK = 6 -# JOURNAL CONTROL FLAGS +# JOURNAL CONTROL FLAGS ATR_S_JOURNAL = 1 @@ -265,4 +274,4 @@ ATR_S_JOURNAL = 1 -# ANSI TAPE HEADER 1 ACCESSIBILITY +# ANSI TAPE HEADER 1 ACCESSIBILITY ATR_S_HDR1_ACC = 1 # CHARACTER @@ -267,4 +276,4 @@ ATR_S_HDR1_ACC = 1 # CHARACTER -# ADD AN ACCESS CONTROL ENTRY +# ADD AN ACCESS CONTROL ENTRY ATR_S_ADDACLENT = 255 @@ -270,3 +279,3 @@ ATR_S_ADDACLENT = 255 -# REMOVE AN ACCESS CONTROL ENTRY +# REMOVE AN ACCESS CONTROL ENTRY ATR_S_DELACLENT = 255 @@ -272,3 +281,3 @@ ATR_S_DELACLENT = 255 -# MODIFY AN ACL ENTRY +# MODIFY AN ACL ENTRY ATR_S_MODACLENT = 255 @@ -274,3 +283,3 @@ ATR_S_MODACLENT = 255 -# LOCATE AN ACL ENTRY +# LOCATE AN ACL ENTRY ATR_S_FNDACLENT = 255 @@ -276,3 +285,3 @@ ATR_S_FNDACLENT = 255 -# FIND A SPECIFIC TYPE OF ACE +# FIND A SPECIFIC TYPE OF ACE ATR_S_FNDACLTYP = 255 @@ -278,5 +287,5 @@ ATR_S_FNDACLTYP = 255 -# FIND A SPECIFIC TYPE OF ACE +# FIND A SPECIFIC TYPE OF ACE ATR_S_FNDACETYP = 255 # DELETE ACL LEAVING PROTECTED ATR_S_DELETEACL = 255 @@ -280,7 +289,7 @@ ATR_S_FNDACETYP = 255 # DELETE ACL LEAVING PROTECTED ATR_S_DELETEACL = 255 -# READ THE ENTIRE ACL +# READ THE ENTIRE ACL ATR_S_READACL = 512 # RETURN THE LENGTH OF THE ACL ATR_S_ACLLENGTH = 4 @@ -288,7 +297,7 @@ ATR_S_READACE = 255 # MODIFY RESERVED AREA ATR_S_RESERVED = 380 -# FILE HIGH WATER MARK (USER READ ONLY) +# FILE HIGH WATER MARK (USER READ ONLY) ATR_S_HIGHWATER = 4 # *** AVAILABLE CODE ATR_S_DUMMY_0 = 4 @@ -310,10 +319,10 @@ ATR_S_GRANT_ACE = 255 # Increment ACE number ATR_S_NEXT_ACE = 4 -# Delete the entire ACL +# Delete the entire ACL ATR_S_DELETE_ALL = 255 # Alter backup info in RMS journaling ACEs ATR_S_BACKUP_DONE = 1 # ISO 9660 Descriptors # 64 BIT EFFECTIVE DATE ATR_S_EFFDATE = 8 @@ -314,8 +323,8 @@ ATR_S_DELETE_ALL = 255 # Alter backup info in RMS journaling ACEs ATR_S_BACKUP_DONE = 1 # ISO 9660 Descriptors # 64 BIT EFFECTIVE DATE ATR_S_EFFDATE = 8 -# 64 BIT RECORDED DATE +# 64 BIT RECORDED DATE ATR_S_RCDDATE = 8 @@ -321,3 +330,3 @@ ATR_S_RCDDATE = 8 -# Volume Descriptor +# Volume Descriptor ATR_S_VD = 7 @@ -323,3 +332,3 @@ ATR_S_VD = 7 -# Primary Volume Descriptor +# Primary Volume Descriptor ATR_S_PVD = 1395 @@ -325,3 +334,3 @@ ATR_S_PVD = 1395 -# Supplementary Volume Descriptor +# Supplementary Volume Descriptor ATR_S_SVD = 1395 @@ -327,3 +336,3 @@ ATR_S_SVD = 1395 -# Volume Partition Descriptor +# Volume Partition Descriptor ATR_S_VPD = 88 @@ -329,3 +338,3 @@ ATR_S_VPD = 88 -# Volume Descriptor Set Terminator +# Volume Descriptor Set Terminator ATR_S_VDST = 7 @@ -331,3 +340,3 @@ ATR_S_VDST = 7 -# Boot Record +# Boot Record ATR_S_BOOT = 71 @@ -333,3 +342,3 @@ ATR_S_BOOT = 71 -# Path Table Record +# Path Table Record ATR_S_PTR = 45 @@ -335,3 +344,3 @@ ATR_S_PTR = 45 -# Directory Record +# Directory Record ATR_S_DIR = 512 @@ -337,5 +346,5 @@ ATR_S_DIR = 512 -# Extended Attribute Record +# Extended Attribute Record ATR_S_XAR = 512 # ISO 9660 Descriptors Fields # Volume Identifier @@ -348,5 +357,5 @@ ATR_S_VOLUME_SET_ID = 128 # Copyright File Identifier ATR_S_COPYRIGHT_FID = 37 -# Abstract File Identifier +# Abstract File Identifier ATR_S_ABSTRACT_FID = 37 @@ -352,5 +361,5 @@ ATR_S_ABSTRACT_FID = 37 -# Bibliographic File Identifier +# Bibliographic File Identifier ATR_S_BIBLIOGRAPHIC_FID = 37 # Cache sequence number ATR_S_CACHE_SEQ = 8 @@ -382,7 +391,7 @@ ATR_S_SYMLINK = 1024 # ATR_S_ATRDEF = 8 -# ATTRIBUTE CODES +# ATTRIBUTE CODES # Define fields and constant values for ATR$_CACHING_OPTIONS longword. # These must match [STARLET]FIBDEF.SDL exactly # @@ -425,3 +434,32 @@ ATR_C_ODS64 = 64 # ATR_S_ATR_FILESYSTEM_INFO_FIELDS = 2 + + +class ATR(Structure): + _fields_ = [ + ("atr_w_size", c_ushort), # Length of buffer in bytes + ("atr_w_type", c_ushort), # Item code value + ("atr_l_addr", c_void_p), # Buffer address + ] + + +def set_atr_item(item, size=None, type=0, buffer=None): + if ( + size is None + and buffer is not None + and isinstance(buffer, c_char * sizeof(buffer)) + ): + size = sizeof(buffer) - 1 + if size is None: + size = 0 + item.atr_w_size = size + item.atr_w_type = type + if buffer is not None: + buffer = cast(buffer, c_void_p) + item.atr_l_addr = buffer + + +def get_atr_string_item(item): + retlen = item.atr_w_size + 1 + return cast(item.atr_l_addr, POINTER(c_char * (retlen))).contents diff --git a/python/local/ovms_module/ovms/fatdef/__init__.py b/python/local/ovms_module/ovms/fatdef/__init__.py index 91c3454e812412de41b668f72f91f5989f64521d_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvZmF0ZGVmL19faW5pdF9fLnB5..5d7d55d0d9c3e4f7f8cdd5799031e1c126017f89_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvZmF0ZGVmL19faW5pdF9fLnB5 100644 --- a/python/local/ovms_module/ovms/fatdef/__init__.py +++ b/python/local/ovms_module/ovms/fatdef/__init__.py @@ -1,8 +1,6 @@ -'vms Extension Series for Python' -__version__ = '0.3' """vms Extension Series for Python Copyright (c) 2002-2020, Jean-Francois Pieronne jf.pieronne@laposte.net See the documentation for further information on copyrights, or contact the author. All Rights Reserved. """ @@ -3,8 +1,16 @@ """vms Extension Series for Python Copyright (c) 2002-2020, Jean-Francois Pieronne jf.pieronne@laposte.net See the documentation for further information on copyrights, or contact the author. All Rights Reserved. """ +from ctypes import ( + Structure, + c_ushort, + c_int, + c_ulong, + c_ubyte, +) + # vms Extension Series version number # (note that subpackages have their own version number) @@ -9,6 +15,6 @@ # vms Extension Series version number # (note that subpackages have their own version number) -__version__ = '0.3' +__version__ = "0.3" # Copyright notice string __copyright__ = """ @@ -17,5 +23,5 @@ or contact the author. All Rights Reserved. """ -#*** MODULE $FATDEF *** +# *** MODULE $FATDEF *** # + @@ -21,3 +27,3 @@ # + -# +# # Record attributes area as used by FCS and RMS. @@ -23,3 +29,3 @@ # Record attributes area as used by FCS and RMS. -# +# # - @@ -25,3 +31,3 @@ # - -# undefined record type +# undefined record type FAT_C_UNDEFINED = 0 @@ -27,3 +33,3 @@ FAT_C_UNDEFINED = 0 -# fixed record type +# fixed record type FAT_C_FIXED = 1 @@ -29,3 +35,3 @@ FAT_C_FIXED = 1 -# variable length +# variable length FAT_C_VARIABLE = 2 @@ -31,3 +37,3 @@ FAT_C_VARIABLE = 2 -# variable + fixed control +# variable + fixed control FAT_C_VFC = 3 @@ -33,3 +39,3 @@ FAT_C_VFC = 3 -# RMS-11 (DEC traditional) stream format +# RMS-11 (DEC traditional) stream format FAT_C_STREAM = 4 @@ -35,3 +41,3 @@ FAT_C_STREAM = 4 -# LF-terminated stream format +# LF-terminated stream format FAT_C_STREAMLF = 5 @@ -37,3 +43,3 @@ FAT_C_STREAMLF = 5 -# CR-terminated stream format +# CR-terminated stream format FAT_C_STREAMCR = 6 @@ -39,3 +45,3 @@ FAT_C_STREAMCR = 6 -# sequential organization +# sequential organization FAT_C_SEQUENTIAL = 0 @@ -41,3 +47,3 @@ FAT_C_SEQUENTIAL = 0 -# relative organization +# relative organization FAT_C_RELATIVE = 1 @@ -43,3 +49,3 @@ FAT_C_RELATIVE = 1 -# indexed organization +# indexed organization FAT_C_INDEXED = 2 @@ -45,5 +51,5 @@ FAT_C_INDEXED = 2 -# direct organization +# direct organization FAT_C_DIRECT = 3 # Special file organization FAT_C_SPECIAL = 4 @@ -79,5 +85,5 @@ FAT_S_FATDEF = 32 # FAT_S_FAT = 32 -# record type subfield +# record type subfield FAT_S_RTYPE = 4 @@ -83,6 +89,6 @@ FAT_S_RTYPE = 4 -# file organization +# file organization FAT_S_FILEORG = 4 # (record attributes are # meaningless for special files) # any values in GBC16 or GBC32 @@ -85,4 +91,46 @@ FAT_S_FILEORG = 4 # (record attributes are # meaningless for special files) # any values in GBC16 or GBC32 + + +class FAT(Structure): + _fields_ = [ + ("fat_b_rtype", c_ushort), # record type + ("fat_v_fortrancc", c_int, 1), # fat$v_fortrancc + ("fat_v_impliedcc", c_int, 1), # implied carriage control + ("fat_v_fat$v_printcc", c_int, 1), # print file carriage control + ("fat_v_nospan", c_int, 1), # print file carriage control + ("fat_v_msbrcw", c_int, 1), # Format of RCW (0=LSB, 1=MSB) + ("fat_v_fill_1", c_int, 3), # MBZ (or should be zero) + ("fat_w_rsize", c_ushort), # MBZ (or should be zero) + ("fat_l_hiblk", c_ulong), # highest allocated VBN + ("fat_l_efblk", c_ulong), # end of file VBN + ("fat_w_ffbyte", c_ushort), # first free byte in EFBLK + ("fat_b_bktsize", c_ubyte), # bucket size in blocks + ( + "fat_b_vfcsize", + c_ubyte, + ), # size in bytes of fixed length control for VFC records + ("fat_w_maxrec", c_ushort), # maximum record size in bytes + ("fat_w_defext", c_ushort), # default extend quantity + ("fat_w_gbc", c_ushort), # global buffer count (original word) + ( + "fat_v_gbc_percent", + c_int, + 1, + ), # Interpret value in GBC32 as percent instead of count + ( + "fat_v_gbc_default", + c_int, + 1, + ), # RMS should set default for GBC at runtime and ignore + ("fat___fill_4", c_int, 6), # Reserved for future use + ( + "fat___fill_2", + c_ubyte, + ), # reserved for future use (possible flags word union) + ("fat_l_gbc32", c_ulong), # longword implementation of global buffer count + ("fat___fill_3", c_ushort), # spare space documented as unused in I/O REF + ("fat_w_versions", c_ushort), # default version limit for directory file + ] diff --git a/python/local/ovms_module/ovms/iledef/__init__.py b/python/local/ovms_module/ovms/iledef/__init__.py index 91c3454e812412de41b668f72f91f5989f64521d_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvaWxlZGVmL19faW5pdF9fLnB5..5d7d55d0d9c3e4f7f8cdd5799031e1c126017f89_cHl0aG9uL2xvY2FsL292bXNfbW9kdWxlL292bXMvaWxlZGVmL19faW5pdF9fLnB5 100755 --- a/python/local/ovms_module/ovms/iledef/__init__.py +++ b/python/local/ovms_module/ovms/iledef/__init__.py @@ -1,5 +1,16 @@ """vms Extension Series for Python""" -__version__ = '0.3' +from ctypes import ( + Structure, + Union, + c_ushort, + c_ulong, + c_void_p, + c_char, + POINTER, + cast, + sizeof, + pointer, +) """vms Extension Series for Python Copyright (c) 2002-2020, Jean-Francois Pieronne jf.pieronne@laposte.net @@ -67,20 +78,6 @@ # Length of ILEA ILEA_64_C_LENGTH = 24 -from ctypes import ( - Structure, - Union, - c_ushort, - c_ulong, - c_uint32, - c_void_p, - c_char, - POINTER, - cast, - sizeof, - pointer, -) - class RETLEN(Union): _fields_ = [('ushort', POINTER(c_ushort)), ('ulong', POINTER(c_ulong))]