* rtems_servers/ftpd.c, rtems_servers/ftpd.h: Major enhancements
as listed below:
- use pool of pre-created threads to handle sessions instead of
creating/deleting threads on the fly
- LIST output is now similar to what "/bin/ls -al" would output,
thus FTP clients such Netscape are happy with it.
- LIST NAME now works (both for files and directories)
- added support for NLST, CDUP, and MDTM FTP commands to make
more FTP clients happy
- keep track of CWD for every session separately
- ability to specify root directory name for FTPD in configuration
table. FTPD will then create illusion for FTP clients that this
is actually root directory.
- ignore options sent in commands, thus LIST -al FILE works and
doesn't try to list "-al" directory.
- buffers are allocated on stack instead of heap where possible to
eliminate malloc/free calls (avoid possible heap fragmentation
troubles).
- drop using of task notepad to pass parameters - use function
arguments instead
- use snprintf() instead of sprintf() as the latter is unsafe
- use of PF_INET in socket() instead of AF_INET
Here are ftp clients I've tried new FTPD with (all of them
running on Debian GNU/Linux 2.2):
Lftp 2.1.10
NcFTP 2.4.3
Netscape 4.75
ftp
mc 4.5.49
* src/imfs/imfs.h, src/imfs/imfs_creat.c, src/imfs/imfs_debug.c,
src/imfs/imfs_eval.c, src/imfs/imfs_fchmod.c,
src/imfs/imfs_handlers_memfile.c, src/imfs/imfs_init.c,
src/imfs/imfs_initsupp.c, src/imfs/imfs_stat.c, src/imfs/memfile.c,
src/imfs/miniimfs_init.c: Final developmental update to "tarfs".
When rtems_tarfs_load() is called, it checks the permissions
on each file. If there is write permission, it just creates a
standard file using "creat()" and therefore, uses the IMFS MEMORY_FILE.
If there is no write permission, it creates a LINEAR_FILE node
with the appropriate properties. If the permission is ever changed
to writeable, IMFS_fchmod converts it to a regular memory file.
* r46xx/vectorisrs/vectorisrs.c (mips_get_cause): Corrected
constraints from general to register.
* tx39/vectorisrs/vectorisrs.c (mips_get_cause): Corrected
constraints from general to register.
* include/bsp.h, timer/timer.c: Updated so timer appears to
work and support tm27. I would prefer to time a software
interrupt rather than an use an extra timer though.
* Shared memory support removed since it was non-functional.
* shmsupp/.cvsignore, shmsupp/Makefile.am, shmsupp/addrconv.c,
shmsupp/getcfg.c, shmsupp/lock.c, shmsupp/mpisr.c: Removed.
* configure.in, Makefile.am, wrapup/Makefile.am: Modified to
reflect above.
* idtcpu.h: Commented out definition of "wait". It was stupid to
use such a common word as a macro.
* rtems/score/cpu.h (_CPU_ISR_Disable): Fixed for mips ISA 3.
* rtems/score/mips.h: Added include of <idtcpu.h>.
* rtems/score/mips.h (mips_enable_in_interrupt_mask): Corrected.
* custom/p4000.cfg, custom/p4600.cfg, custom/p4650.cfg: Remove
unneeded definitions when compiled for "mips" rather than "mips64orion."
Correct CPU_CFLAGS.
* include/bsp.h: Changed <sh/null.h> to <rtems/devnull.h> to reflect
the movement of this component to libmisc.
* wrapup/Makefile.am: /dev/null driver is no longer in libcpu/sh.
* devnull: New addition. Moved from libcpu/sh.
* devnull/devnull.c, devnull/devnull.h, devnull/.cvsignore,
devnull/Makefile.am: New files.
* Makefile.am, configure.in, wrapup/Makefile.am: Modified to reflect
addition of above.
* clock/clock.c: Use shared clock driver shell.
* console/console.c: Removed. Now use shared polling shell.
* console/console-io.c: New file.
* console/Makefile.am: Correct to use shared polling shell.
* startup/bspstart.c: Remove all fast idle references.