The strnicmp problem was something Neo and I changed in the 1st wave of patch changes, Image probably just grabbed a version of the source file before we dropped the i.
Edit: Ok, I see why they're being missed in linking , those functions are all wrapped in a #ifdef SHAREMEM which isnt defined or available for linux, so they're not being compiled into the object in the first place.
This is images new way of loading doors into shared memory, I think the problem will need to be in addressed in net.cpp and client_process.cpp. well need to make a couple of changes to ensure that the Linux version uses the old way of loading doors, or we fix sharemem for linux. (Thats a harder one, but it would be really cool, it would signifanctly decrease memory usage).
Comment out the database::LoadDoor call in net.cpp, and GetDoors call and if statement right behind it in client_process.cpp .
It does work, I compiled everything, started the servers up, and zoned in and doors are still working.
Heres my changed files for linux
http://denial.dyndns.org/eqemu/3.13
Unless we get shared mem working, we'll need them to wrap those too sections in #ifdef 's so it will work the same for windows/linux.
If you look in the directories I posted, I made alot of minor changes in the world source and a couple in common. These are to fix alot of warnings in gcc, and start working on bringing the code up to the new C++ standards.
The new standards ask you to drop the .h off of standard c++ includes, and drop the .h and add a c in front of standard c libraries.
for instance,
#include <stdio.h>
becomes
#include <cstdio>
also, some functions need to be called differently, things like hex and dec need to be called with std::hex and std::dec to specify them as being in the Standard Template Library. cout's should be changed to std::cout also, this is considered the good form so you can override them easily, if you want the standard ones, you'd just call them with the direct reference to std::
The good thing here is with these changes, world will compile out of the box with gcc3.2 . I'll be working on getting the zone code compiling with it also. Right now, Im running a 3.2 build world server with a 2.95 built zone server. Make sure if you use 3.2, you modify your makefile to take advantage of the new cpu specific optimizations. I use -march=athlon-xp , the binary wont be compatible on any other processer, but it's optimized with athlon specific instructions so it will execute faster.
Make sure if you do it this way though to do a 'make clean' in between building zone and world. The .o files in common aren't compatible between the 2.