Let's see...
Starting at bin/prx/prx.c:
- One thread is created that bootstraps the main FTP thread. This is currently allocated to 4 KB stack. Could potentially be less since it doesn't have much to do, but it's set to that to be safe.
- The main FTP thread - that is currently allocated to 16 KB stack, however it can be 8 KB if NTFS functionality is removed.
Now when the server starts up, it allocates 64 KB + 1 KB + 1 KB heap for buffers - shared between all clients. And there is no conflict in this buffer sharing because the server code is single threaded.
Each client is allocated a "sizeof(struct Client)" which is pretty much miniscule compared to the buffers.
And that's it for memory usage
As for external dependencies, I designed it so that it can link statically or dynamically (with ps3ntfs) - so there's no real issue there. See how there's a smaller size build and a larger size build for the SPRX.
Integration should be fairly straight-forward. Compile the "lib" with make option SDK=cell to get the libopenps3ftp_cell_vsh.a file. Then link to that and start the server in the same way as in prx.c. The command code and import functions are in "feat" and can be customizable. Just add something like a "
$(wildcard feat/*/*.c)" in PPU_SRCS. Edit: to add NTFS support add another make option NTFS_SUPPORT=1 (and NTFS_STATIC=1) when compiling lib.