Difference between revisions of "VMS Python compatibility issues"

From VSI OpenVMS Wiki
Jump to: navigation, search
m
Line 1: Line 1:
 
#File system
 
#File system
##Directories and files with the same name are allowed
+
##Directories and files with the same name are allowed.
##File has a version, therefore two files with the same name might have different content
+
##File has a version, therefore two files with the same name might have different content.
##Shared stream I/O does not work.  
+
##Shared stream I/O does not work.
##To guarantee the file content is on the disk user have to use <code>fsync()</code> function.
+
##To guarantee the file content is on the disk the <code>fsync()</code> function must be used.
 
##Because of using logical names the real file path may be different from path used to open file.
 
##Because of using logical names the real file path may be different from path used to open file.
##File has no access time attribute.
+
##Files has no access time attribute.
##Changing the file permissions also changes its modification time.
+
##Changing a files permissions also changes its modification time.
##Changing content of directory does not change directory modification time.
+
##Changing the content of a directory does not change the directory modification time.
 
##File has four rights bits - read, write, execute and delete. In unix it has three of it - read, write and execute.  
 
##File has four rights bits - read, write, execute and delete. In unix it has three of it - read, write and execute.  
 
##‘.DIR’ extension is reserved
 
##‘.DIR’ extension is reserved
##Non-blocking file IO does not supported in CRTL.
+
##Non-blocking file IO is not supported in the OpenVMS CRTL.
##There are a lot of issues with symbolic link implementation
+
##There are various known issues with symbolic link implementation.
 
##Symbol '$' is usual for file and directory names
 
##Symbol '$' is usual for file and directory names
 
##OpenVMS <code>chmod(0)</code> sets user's default permissions, not resets them
 
##OpenVMS <code>chmod(0)</code> sets user's default permissions, not resets them

Revision as of 23:54, 12 September 2020

  1. File system
    1. Directories and files with the same name are allowed.
    2. File has a version, therefore two files with the same name might have different content.
    3. Shared stream I/O does not work.
    4. To guarantee the file content is on the disk the fsync() function must be used.
    5. Because of using logical names the real file path may be different from path used to open file.
    6. Files has no access time attribute.
    7. Changing a files permissions also changes its modification time.
    8. Changing the content of a directory does not change the directory modification time.
    9. File has four rights bits - read, write, execute and delete. In unix it has three of it - read, write and execute.
    10. ‘.DIR’ extension is reserved
    11. Non-blocking file IO is not supported in the OpenVMS CRTL.
    12. There are various known issues with symbolic link implementation.
    13. Symbol '$' is usual for file and directory names
    14. OpenVMS chmod(0) sets user's default permissions, not resets them
    15. To delete directory user has to have ‘delete’ permission for this directory
    16. OpenVMS creates all intermediate directories on mkdir()
  2. Process
    1. There is no normal fork(), spawn() function.
    2. Pipes are created via mailbox and have a lot of compatibility issues.
    3. If child has threads, each thread posts 'END-OF-PIPE' when it finishes.
    4. There is no normal select(), poll() e.t.c
    5. siginterrupt() is not supported
    6. A lot of issues with signals
    7. Interrupting I/O operation may hang
    8. There is no root user with zero uid
    9. There is no unix commands like: echo, exit …
    10. OpenVMS cannot handle recursion overflow properly - just crashes
  3. Sockets
    1. AF_UNIX has different meaning
    2. Binding socket to empty address fails (wildcard resolved to multiple address).
    3. getpeername() returns ‘0.0.0.0’ instead of error
    4. OpenVMS crashed on socket.socket.sendall
  4. Time
    1. time_t is unsigned
    2. strftime()
      • Does not support %G format
      • Undefined behavior when format ends with '%'
      • ‘%4Y’ is padded with spaces
  5. Miscellaneous
    1. Environment variables have unusual implementation - through logical names. There is no appropriate way to get all environment variables.
    2. OpenVMS sqlite3 port does not support "OR ROLLBACK"
    3. Program prints crush dump
    4. locale.strxfrm() works unusual
  6. Compiler
    1. uint_ptr is always 64 bit, void* is 32 bit or 64 bit
    2. Compiler does not support relative include paths