You are currently viewing a snapshot of taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to, please file a bug.

native methods needed by grendel
by Jamie Zawinski

This document lists the system services that Grendel will require to function properly that are not provided by the core Java 1.1 API. Please add to this list as you find more examples.

Service Platform Consequence
link() system call. Unix Mail file locking cannot work on Unix.

We must have this. It is critical.

truncate() system call. All If an error occurs while appending a message to a folder (such as running out of disk space) it will be impossible to back out the change. The target folder will have had a partial message appended to it (which is spelled ``mail file corruption.'')
Read/write access to resource fork. Mac Mac users will be unable to exchange files that have resources (such as executables.)

Without the ability to read the resource fork of a dual-forked Mac file, we will be unable to generate multipart/appledouble messages. Without the ability to write the resource fork of a Mac file, we will be unable to decode multipart/appledouble messages.

Mac users will find this critical.

chmod() and fchmod() system calls. Unix When we create new mail folders, or compact folders, or empty the trash, the newly-created mail files will be world-readable by default. The user will be able to correct this by hand later, but it opens a window during which other users could read their mail.

When sending mail messages, we sometimes create temporary files in the system's /tmp directory. Without fchmod(), those temporary files will be readable by others, exposing the user's outgoing mail to evesdropping as well.

This is a pretty basic security/privacy issue.