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