- races: two parallel `autojump --add` can lead to database purging
(overwriting by one of tmp files)
- ENOSPC: will leave autojump.txt empty, because no free space available
- fsync: can take a while
All of this can be fixed with fsync(2).
The original implementation used str.encode() on input and str.decode() on
output. However this would cause UnicodeDecodeError since certain characters
can't be encoded / decoded in ASCII.
The new solution is to use unicode() on all input strings and output UTF-8
encoded strings. This makes the assumption that the shell can handle UTF-8
strings.