void FuckingWellSetTheDocumentNameAndDontBloodyIgnoreMeYouCunt(LPCSTR psDocName)
{
if (gpLastOpenedModViewDoc)
{ // make absolutely fucking sure this bastard does as it's told... //
gpLastOpenedModViewDoc->SetPathName(psDocName,false);
gpLastOpenedModViewDoc->SetTitle (psDocName);
}
}
My heart goes out to whatever programmer had to meet that deadline. There are a lot more gems in the source tree if you just run: egrep -R -i "fuck" * http://sourceforge.net/projects/vlc
http://sourceforge.net/projects/sevenzip/
http://sourceforge.net/projects/emule/
http://sourceforge.net/projects/filezilla/
http://sourceforge.net/projects/npppluginmgr/
http://sourceforge.net/projects/mingw/
http://sourceforge.net/projects/azureus/
http://sourceforge.net/projects/fceultra/ (Shameless plug)
Just to name a few. As a project admin of fceultra I cannot say that I'm 100% pleased with the UI of the bugtracker and the sf does have its quirks, but sourceforge has had a much better track record than github in respect to uptime. My question to you is "Why not?"If you were starting new today you wouldnt choose it. It is a clusterfuck. How the owners can't see the writing on the wall and change is beyond me.
For all I know maybe they are
It definitely felt cleaner from a UI perspective today (albeit not github-clean) and the sluggish document load times that I remember were also not in evidence.
The open-source ecosystem is definitely richer for every hosting solution that exists, sf included, so if my comment seemed sneery I apologise. It just surprised me at the time is all.
The two games are:
Dark Forces 3: Jedi Knight 2: Jedi Outcast
Dark Forces 4: Jedi Knight 3: Jedi Outcast 2: Jedi Academy
Get it right, people.
I have no idea why it's necessary at all. In fact why not get rid of the blog spam altogether and link straight to the code. Yes, I realise RPS isn't exactly a small site and has quite the following (which seems to extend to HN as well, apparently), but their article adds nothing of real value apart from a quote that was pulled from another article on Kotaku.
cocks gun, blows brains out
(Yes I know the evil goto supposedly has its time and place, blah blah blah)
Goto is just fine if it is used responsibly.
[1]: http://sourceforge.net/p/jediacademy/code/ci/4bebb8ec23200ee...
The nesting is too deep imho, but apart from that it looks ok. This looks more like a design problem, because there are lots of special cases, but the code style is ok.
For example, codemp/game/g_saga.c uses goto just fine. Three "goto failure" jump to the end of the function to handle the error case differently than a normal return. Not a very good example for proper goto use, but ok.
In contrast, codemp/cgame/cg_players.c should be refactored. It seems to be model loading code. If the loading fails, some gotos jump to the start of the function and using a flag variable a default model "kyle" is used instead of the arguments. If the default model is broken, this becomes an infinite loop. My style suggestion:
if (loadModel(foo)) return;
if (loadModel(default)) return;
assert (false && "fallback/default model broken");