Combined README files to reduce clutter. However, the build instructions are incomplete ... I've started by modifying these so a build will complete using the instructions once I get a closer look at libtorrent ... additions welcome.
Allows short form with number of arguments and long flexible form with table:
```lua
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler', { '$argument.0=' })
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler', { 0 })
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler', { [1] = 0 })
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler', 1)
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler', 0)
```
Also, there are way to pass no arguments at all:
```lua
rtorrent.insert_lua_method('d.watch_handler', 'watch_handler')
```
Type checking added.
Additional step to test in development (non-packaged) mode:
- In packaged mode, rtorrent knows where to search rtorrent.lua, but in
project mode, rtorrent.lua located in a non-standard location.
Therefore run rtorrent with following environment variabler set:
LUA_PATH=<full path to rtorrent project dir>/lua/?.lua
Deep-copy `__namestack` decouples all instances of Autocall, previously it
worked as singleton. This allows to store call-chains as variables, aliases.
Target-object allows to avoid duplication of the target-parameter as required
with Autocall by storing them as variables.
Autocall_config renamed to Autocall for brevity.
Trying `rc.print()` causes redirection to native global Lua `print()`, which
prints to stdout. I don't see any proc of shor-circuiting `autocall_config`
with global environment `_G`.
- missing `pos = end + 1` pos caused infinite loop
- there was no processing of the last element after the last ';', i.e. it was
assumed that `lua_path` always has ';' in the last character
When system.files.session.fdatasync is set to "no", file descriptors
were not being closed after writing session files, causing a severe
resource leak. Each save operation would leak one file descriptor.
With hundreds of torrents, this leads to tens of thousands of leaked
file descriptors within hours, mostly pointing to deleted session files.
This can exhaust the system's file descriptor limit and cause rtorrent
to fail when opening new files.
The fix moves the close() call outside the fdatasync conditional block,
ensuring file descriptors are always properly closed regardless of the
fdatasync setting.