Need help with copyover problem...

Posted by Brihtwulf on Sat 25 Oct 2003 02:32 AM — 10 posts, 38,090 views.

#0
Hey,

I'm running a self-compiled version of the smaug1.4 for win32 on windowsXP Pro. Got everything working fine. But I wanted to install some coding for copyover, and it's not going too well... I used the code from Samson's site, and got everything to compile fine. However, when I ran the exe, it would crash out saying something about accept_new and it wouldn't accept any descriptors. Well, I removed the other control ports that are defined in the code, so now I can connect back up to the server.

Only when I do a copyover from in the game, I get this error:

imc: imc_shutdown_network: called with imc_active==0
do_copyover: execl: No such file or directory

I checked in comm.c and the execl file is set to "smaug", which is correct for the win32 port right??? Well, anyway, can someone help me or point me in the right direction to get things working? I probably didn't need to erase the other 3 ports the server holds, but it seemed like a good idea at the time...

-Brihtwulf
USA #1
Don't forget that it won't find the file "smaug" because the active directory of the program is the area directory, not the source directory. You'll need to run something like "../src/smaug".
#2
No, actually, with the windows port the exe is right in the smaug folder. so, there is no reason to make it backtrack. Has anyone actually gotten copyover to work under windows? I don't mean cygwin, I mean directly edited and compiled with MSVC6 or something like it. I could really use some help in getting this to work...

-Brihtwulf
USA #3
What's your directory structure? Unless the windows port changes even more, your executable should be running in the area/ directory, otherwise it won't be finding the files.

When you start the game, do you use a startup script? If so, could you paste it?

Obviously, if the exec function is not finding the smaug executable, then something is wrong with your path settings...
#4
Well, I have the same structure as most smaug systems. I have the main smaug folder, then src, area, player, gods, etc... Using the port to windows, there is a MSVC workspace that contains all the c files and connects them together as a project. Once compiled, the smaug.exe is placed in the c:/smaug/ directory, and executed from there. I simply start the program by opening a command prompt, going to c:/smaug/ and typing smaug /run, since I am not running it as a service. I have tried adding the /run to the command in the code, but it made no difference. I think that the real problem may have been with the accept_new issue I had before I tried to do a workaround, but I'm not totally sure, since I've never tried to use this snip before. Anyway,...that's what I've got going on... I hope that helps.

-Brihtwulf
USA #5
Always been my understanding that copyover won't work in native Win32 no matter what you do. Unless this has changed recenly, I see no reason to expect it will at this stage either. Though if you get it working it will be welcome news to plenty of Win32 mud admins :)

BTW, ignore the silly imc error. It's just telling you the shutdown routine for it got called but the connection wasn't active.
Amended on Sun 26 Oct 2003 12:20 AM by Samson
USA #6
I don't know how much, if at all this helps, but I got at least one incarnation of copyover working on a somewhat recent release of Samson's FUSS package. This would be under Win 98/98SE so I can't speak toward XP or anything, but it can't hurt to give it a shot right?

Anyway the details are far too lengthy to post here, but you can find them in the Mud Planet MUD Forums (http://forums.mudplanet.org) under Smaug and coding. They're not shown right off, but if you list all the posts "from the beginning" and go to page 2, it should be near the top and pretty obvious. If finding it is that big of a problem I can probably email you a .txt file I made with the instructions.

Basically I got this working stand alone, but you have to compile under cygwin and put a copy of cygwin1.dll in the /area directory with the smaug executable. That doesn't really seem like such a bad tradeoff to me, but to each his own I guess. Anyway, it's all just patchwork and I don't take credit for it at all, nor do I imply any warranty. It works for me, quite flawlessly from what I've seen, and that's all that I can say about it.

Check it out and see if it helps. :-)
USA #7
Well, note there that the .dll file is placed in the area directory, which is the working directory for SMAUG.

Brihtwulf, how does your copy open up the area files? In the code, what path does it reference? If it's not even finding the executable then you're not telling it to look in the right place. It's possible that the program changes its active directory to the area directory to open up the area files, in which case you will no longer be able to run just "smaug" because you're not in the right folder anymore.
USA #8
My SMAUG-based MUD uses copyover, and currently runs under WinXP. It's touchy as hell; even a small code change somewhere else can cause it to start crashing (kinda like the SMAUG switch function eh?). But it does work if you install it correctly.

As for the specific problem, that sounds eerily familiar. I'm pretty sure I had that same error in the beginning, and obviously fixed it, though I can't remember how (or even if that was the same problem) offhand....

But yes, if it's SMAUG running in Windows (tested it personally in 98SE, ME, 2k, and XP), then copyover will work, though it will put-up a fight =)
USA #9
Should be noted that the original post was asking how to get this working in the native Win32 environment. From everything I've ever been told about copyover, it simply won't work using MSVC++. Getting it to work under Cygwin probably won't help this guy much, although it's a start since even that didn't used to work very well.