Laurent Constantin's network library (lcrzo) ----------------------------------- ---------------------------- | INTEGRATION OF LCRZO | ---------------------------- Lcrzo allows for easy creation of network programs. In order to achieve this, it contains several high level functionalities, hiding some actions. However, when lcrzo is expected to be integrated in a complex program : - hidden functionalities might interfere with those wanted by the developer, or - access to low level ressources might by difficult if not impossible. Here are some points to analyze before integrating lcrzo in a big program : - Lcrzo is conceived for text programs (console). Lcrzo can be used in graphical mode, but functions xxx_print, xxx_fprint, xxx_stdin and xxx_passwd will not work. Under Windows, programs using lcrzo.dll have to be compiled with the type "Win32 Console Application". - Events of kind sniff, spoof, etc. can only be accessed through the use of a lcrzo_wait (so functions select (Unix) or WaitForxxxObjects (Windows) cannot be used). Events from the program have to be converted to a lcrzo_wait by using functions lcrzo_wait_init_fd, lcrzo_wait_init_handle or lcrzo_wait_init_function. - Under Unix, when user presses Control-C or kills a process, all its childs (created by lcrzo_process_init) are killed by lcrzo. Developers have to use fork and deal with the process if this behavior does not feet their needs. - Under Unix, signal handlers for SIGINT and SIGTERM are set by lcrzo_init (they are needed to deal with Control-C or kills as presented in the previous point). Developers have to use lcrzo_unix_signalhandler_set to set their handlers for SIGINT and SIGTERM. - Under Unix, file descriptors do not have the flag "close on exec". Developers might want to set it on concerned descriptors before calling a sensitive external program. Do not hesitate to ask me questions about integration of particular programs.