diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-11-12 12:14:56 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-11-12 12:14:56 -0500 |
commit | e39423c78c6c66e08ed65a162e2a6d1a21606881 (patch) | |
tree | 1ae9c7149fb205058da74572f3f74379ff60a8fb /doc/HACKING | |
parent | 6744f6b6bba2af2d3d3712825a28e75b0304d7b8 (diff) | |
download | tor-e39423c78c6c66e08ed65a162e2a6d1a21606881.tar.gz tor-e39423c78c6c66e08ed65a162e2a6d1a21606881.zip |
Remove 01e-os-compat: the module docs cover this much better.
Diffstat (limited to 'doc/HACKING')
-rw-r--r-- | doc/HACKING/design/01e-os-compat.md | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/doc/HACKING/design/01e-os-compat.md b/doc/HACKING/design/01e-os-compat.md deleted file mode 100644 index 072e95bc8a..0000000000 --- a/doc/HACKING/design/01e-os-compat.md +++ /dev/null @@ -1,50 +0,0 @@ - -## OS compatibility functions ## - -We've got a bunch of functions to wrap differences between various -operating systems where we run. - -### The filesystem ### - -We wrap the most important filesystem functions with load-file, -save-file, and map-file abstractions declared in util.c or compat.c. If -you're messing about with file descriptors yourself, you might be doing -things wrong. Most of the time, write_str_to_file() and -read_str_from_file() are all you need. - -Use the check_private_directory() function to create or verify the -presence of directories, and tor_listdir() to list the files in a -directory. - -Those modules also have functions for manipulating paths a bit. - -### Networking ### - -Nearly all the world is on a Berkeley sockets API, except for -windows, whose version of the Berkeley API was corrupted by late-90s -insistence on backward compatibility with the -sort-of-berkeley-sort-of-not add-on *thing* that was WinSocks. - -What's more, everybody who implemented sockets realized that select() -wasn't a very good way to do nonblocking IO... and then the various -implementations all decided to so something different. - -You can forget about most of these differences, fortunately: We use -libevent to hide most of the differences between the various networking -backends, and we add a few of our own functions to hide the differences -that Libevent doesn't. - -To create a network connection, the right level of abstraction to look -at is probably the connection_t system in connection.c. Most of the -lower level work has already been done for you. If you need to -instantiate something that doesn't fit well with connection_t, you -should see whether you can instantiate it with connection_t anyway -- or -you might need to refactor connection.c a little. - -Whenever possible, represent network addresses as tor_addr_t. - -### Process launch and monitoring ### - -Launching and/or monitoring a process is tricky business. You can use -the mechanisms in procmon.c and tor_spawn_background(), but they're both -a bit wonky. A refactoring would not be out of order. |