General info
------------

Plugins are compiled as shared objects(.so). For gcc, the option for this
is "-shared".
The initialization function [prototype: void initplugin(struct plugininfo)]
will be executed(if found) before any of the commands are loaded.
Be sure to #include dftpd.h.
File locking is accomplished with the flock() function. Use of any other
means of file locking(such as fcntl()) are discouraged.

Importable functions
--------------------

writes():   works like printf, except that it writes its output to the
            connected socket.
cwrites():  the function above plus cookie support.
ftplog():   adds a log entry; first string is the entry class, from then on
            just like printf.
activity(): allows you to specify what the user is doing. NULL argument
            activates the idle timer and other values deactivate it.
viewfile(): first argument = file name, second = numeric reply code value:
            positive: print "<code>-" after each end-of-line
            zero: stops at end-of-line
            negative: prints a space after each end-of-line

SITE commands
-------------

For each command, the plugin must contain the following symbols:
cmdnameX, cmdhelpX(both of const char * type) and the command itself as void
cmdX(char *), where X is the number of the command, starting from 1.
In addition, you may specify the symbol cmdavailX(of type const char) which
advises the server software to make the command available only for certain
user classes(real,guest,anonymous). If this symbol is missing, the command
will be made available for all user classes.

Flags
-----

Symbols needed for each new flag are (const char *)flagnameX and (const
char) flagmarkX. Flag name is the string displayed in DWAT user editor and
flag mark is the character which identifies the flag(goes to passwd.dftp in
the flags field).
