mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Remove 01e-os-compat: the module docs cover this much better.
This commit is contained in:
parent
6744f6b6bb
commit
e39423c78c
@ -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.
|
Loading…
Reference in New Issue
Block a user