File fix-multiple-definitions.patch of Package d2x-xl
diff -Nur b/CMakeLists.txt a/CMakeLists.txt
--- b/CMakeLists.txt 2017-08-05 15:45:30.830536699 +0200
+++ a/CMakeLists.txt 2017-08-05 15:45:39.138678147 +0200
@@ -107,20 +107,22 @@
set(cockpit_sources cockpit/cockpit.cpp cockpit/cockpitdata.cpp cockpit/crosshairs.cpp cockpit/genericcockpit.cpp cockpit/genericdrawers.cpp cockpit/hud.cpp cockpit/hudicons.cpp cockpit/hudmsgs.cpp cockpit/statusbar.cpp cockpit/targetindicators.cpp cockpit/utilities.cpp)
set(console_sources console/console.cpp console/cvar.cpp)
set(effects_sources effects/fireball.cpp effects/glare.cpp effects/lightning.cpp effects/objsmoke.cpp effects/shrapnel.cpp effects/sparkeffect.cpp effects/particle_shader.cpp effects/particle_buffer.cpp effects/particles.cpp effects/particle_emitter.cpp effects/particle_system.cpp effects/particle_manager.cpp effects/particle_images.cpp effects/waypoint.cpp effects/postprocessing.cpp effects/lightning_node.cpp effects/lightning_emitter.cpp effects/lightning_manager.cpp effects/omega_lightning.cpp effects/glow.cpp)
-set(gameio_sources gameio/addon_bitmaps.cpp gameio/createmesh.cpp gameio/loadgeometry.cpp gameio/loadobjects.cpp gameio/hoard.cpp gameio/iff.cpp gameio/loadgame.cpp gameio/loadgamedata.cpp gameio/loadmodeldata.cpp gameio/loadsounds.cpp gameio/loadtextures.cpp gameio/mission.cpp gameio/paging.cpp gameio/piggy.cpp gameio/playerprofile.cpp gameio/savegame.cpp gameio/tga.cpp gameio/IpToCountry.cpp)
+set(gameio_sources gameio/addon_bitmaps.cpp gameio/createmesh.cpp gameio/loadgeometry.cpp gameio/loadobjects.cpp gameio/hoard.cpp gameio/iff.cpp gameio/loadgame.cpp gameio/loadgamedata.cpp gameio/loadmodeldata.cpp gameio/loadsounds.cpp gameio/loadtextures.cpp gameio/mission.cpp gameio/paging.cpp gameio/piggy.cpp gameio/playerprofile.cpp gameio/savegame.cpp gameio/tga.cpp gameio/IpToCountry.cpp gameio/facegrid.cpp)
set(gamemodes_sources gamemodes/entropy.cpp gamemodes/monsterball.cpp)
set(input_sources input/event.cpp input/input.cpp input/joy.cpp input/key.cpp input/mouse.cpp input/systemkeys.cpp)
set(io_sources io/linux/findfile.cpp io/args.cpp io/cfile.cpp io/d_io.cpp io/hogfile.cpp)
set(libmve_sources libmve/decoder16.cpp libmve/decoder8.cpp libmve/mve_audio.cpp libmve/mvelib.cpp libmve/mveplay.cpp)
set(lighting_sources lighting/dynlight.cpp lighting/grayscaleshaders.cpp lighting/headlight.cpp lighting/lightcluster.cpp lighting/light.cpp lighting/lightmap.cpp lighting/lightmapshaders.cpp lighting/lightprecalc.cpp lighting/lightrender.cpp lighting/lightshaders.cpp)
-set(main_sources main/briefings.cpp main/cheats.cpp main/cmd.cpp main/config.cpp main/credits.cpp main/crypt.cpp main/dialheap.cpp main/dropobject.cpp main/effects.cpp main/endlevel.cpp main/findpath.cpp main/findsegment.cpp main/flightpath.cpp main/producers.cpp main/game.cpp main/gameargs.cpp main/gamecntl.cpp main/gamedata.cpp main/gamefolders.cpp main/gameoptions.cpp main/gametime.cpp main/gamestates.cpp main/highscores.cpp main/descent.cpp main/kconfig.cpp main/mglobal.cpp main/movie.cpp main/newdemo.cpp main/scores.cpp main/segmath.cpp main/segment.cpp main/setup.cpp main/side.cpp main/skybox.cpp main/slew.cpp main/trigger.cpp main/terrain.cpp main/texmerge.cpp main/text.cpp main/textdata.cpp main/trackobject.cpp main/vclip.cpp main/update.cpp main/wall.cpp)
+set(main_sources main/briefings.cpp main/cheats.cpp main/cmd.cpp main/config.cpp main/credits.cpp main/crypt.cpp main/dialheap.cpp main/dropobject.cpp main/effects.cpp main/endlevel.cpp main/findpath.cpp main/findsegment.cpp main/flightpath.cpp main/producers.cpp main/game.cpp main/gameargs.cpp main/gamecntl.cpp main/gamedata.cpp main/gamefolders.cpp main/gameoptions.cpp main/gametime.cpp main/gamestates.cpp main/highscores.cpp main/descent.cpp main/kconfig.cpp main/mglobal.cpp main/movie.cpp
+main/newdemo.cpp main/scores.cpp main/segmath.cpp main/segment.cpp main/setup.cpp main/side.cpp main/skybox.cpp main/slew.cpp main/trigger.cpp main/terrain.cpp main/texmerge.cpp main/text.cpp main/textdata.cpp main/trackobject.cpp main/vclip.cpp main/update.cpp main/wall.cpp main/meshedge.cpp)
set(maths_sources maths/fixc.cpp maths/PerlinNoise.cpp maths/rand.cpp maths/SimplexNoise.cpp maths/tables.cpp maths/vecmat.cpp)
set(menus_sources menus/cockpitmenu.cpp menus/configmenu.cpp menus/detailsmenu.cpp menus/effectsmenu.cpp menus/entropymenu.cpp menus/fileselector.cpp menus/gameplaymenu.cpp menus/inputdevicemenu.cpp menus/listbox.cpp menus/mainmenu.cpp menus/menubackground.cpp menus/menu.cpp menus/menuitem.cpp menus/messagebox.cpp menus/miscmenu.cpp menus/monsterballmenu.cpp menus/msgbox.cpp menus/netgamebrowser.cpp menus/netgamehelp.cpp menus/netgameinfo.cpp menus/netmenu.cpp menus/netplayerbrowser.cpp menus/newgamemenu.cpp menus/physicsmenu.cpp menus/rendermenu.cpp menus/screenresmenu.cpp menus/smokemenu.cpp menus/soundmenu.cpp)
set(misc_sources misc/error.cpp misc/hash.cpp misc/strio.cpp misc/strutil.cpp)
set(model_sources models/aseread.cpp models/hiresmodels.cpp models/oofmath.cpp models/oofread.cpp models/pof.cpp models/polymodel.cpp)
-set(network_sources network/linux/ipx_kali.cpp network/linux/ukali.cpp network/linux/ipx_mcast4.cpp network/linux/linuxnet.cpp network/linux/ipx_bsd.cpp network/autodl.cpp network/banlist.cpp network/multi.cpp network/multibot.cpp network/multimsg.cpp network/netmisc.cpp network/network.cpp network/network_handshake.cpp network/network_init.cpp network/network_join.cpp network/network_lib.cpp network/network_phandler.cpp network/network_process.cpp network/network_read.cpp network/network_send.cpp network/network_sync.cpp network/tracker.cpp network/udp_interface.cpp)
+set(network_sources network/linux/ipx_kali.cpp network/linux/ukali.cpp network/linux/ipx_mcast4.cpp network/linux/linuxnet.cpp network/linux/ipx_bsd.cpp network/autodl.cpp network/banlist.cpp network/multi.cpp network/multibot.cpp network/multimsg.cpp network/netmisc.cpp network/network.cpp network/network_handshake.cpp network/network_init.cpp network/network_join.cpp network/network_lib.cpp network/network_phandler.cpp network/network_process.cpp network/network_read.cpp
+network/network_send.cpp network/network_sync.cpp network/tracker.cpp network/udp_interface.cpp network/network_thread.cpp)
set(objects_sources objects/boss.cpp objects/createobject.cpp objects/criticalhit.cpp objects/effectobject.cpp objects/hostage.cpp objects/marker.cpp objects/object.cpp objects/objectio.cpp objects/object_physics.cpp objects/player.cpp objects/playerdeath.cpp objects/powerup.cpp objects/reactor.cpp objects/robot.cpp objects/updateobject.cpp)
-set(ogl_sources ogl/clientstates.cpp ogl/drawbuffer.cpp ogl/fbuffer.cpp ogl/flushbuffers.cpp ogl/gr.cpp ogl/ogl_bitmap.cpp ogl/ogl_color.cpp ogl/ogl_defs.cpp ogl/ogl_draw.cpp ogl/ogl_fastrender.cpp ogl/ogl_hudstuff.cpp ogl/ogl_lib.cpp ogl/oglmatrix.cpp ogl/ogl_palette.cpp ogl/ogl_render.cpp ogl/ogl_shader.cpp ogl/ogl_texcache.cpp ogl/ogl_texture.cpp ogl/pbuffer.cpp ogl/rendertextures.cpp ogl/screenshot.cpp ogl/sdlgl.cpp ogl/shadowmap.cpp ogl/stereo.cpp)
+set(ogl_sources ogl/clientstates.cpp ogl/drawbuffer.cpp ogl/fbuffer.cpp ogl/flushbuffers.cpp ogl/gr.cpp ogl/ogl_bitmap.cpp ogl/ogl_color.cpp ogl/ogl_defs.cpp ogl/ogl_draw.cpp ogl/ogl_fastrender.cpp ogl/ogl_hudstuff.cpp ogl/ogl_lib.cpp ogl/oglmatrix.cpp ogl/ogl_palette.cpp ogl/ogl_render.cpp ogl/ogl_shader.cpp ogl/ogl_texcache.cpp ogl/ogl_texture.cpp ogl/pbuffer.cpp ogl/rendertextures.cpp ogl/screenshot.cpp ogl/sdlgl.cpp ogl/shadowmap.cpp ogl/stereo.cpp ogl/ogl_cartoonize.cpp)
set(physics_sources physics/collide.cpp physics/hitbox_collision.cpp physics/physics.cpp physics/slowmotion.cpp physics/sphere_collision.cpp physics/visibility.cpp)
set(render_sources render/automap.cpp render/cameras.cpp render/fastrender.cpp render/gpgpu_lighting.cpp render/lighttrails.cpp render/morph.cpp render/objeffects.cpp render/objrender.cpp render/oofrender.cpp render/polymodelrender.cpp render/radar.cpp render/renderframe.cpp render/renderlib.cpp render/render_lighting.cpp render/rendermine.cpp render/rendersetup.cpp render/rendershadows.cpp render/rendershields.cpp render/renderthreads.cpp render/sphere.cpp render/thrusterflames.cpp render/transprender.cpp render/visculling.cpp)
set(weapon_sources weapons/controlweapon.cpp weapons/createweapon.cpp weapons/dropweapon.cpp weapons/fireweapon.cpp weapons/fusion.cpp weapons/omega.cpp weapons/pickupweapon.cpp weapons/seismic.cpp weapons/weaponhandlers.cpp weapons/weaponorder.cpp)
diff -Nur b/io/cfile.cpp a/io/cfile.cpp
--- b/io/cfile.cpp 2017-08-05 15:45:30.846536971 +0200
+++ a/io/cfile.cpp 2017-08-05 15:45:39.138678147 +0200
@@ -55,22 +55,22 @@
tGameFolders gameFolders;
// ----------------------------------------------------------------------------
-
-size_t ffilelength (FILE *file)
-{
-long pos = ftell (file);
-if (pos < 0)
- return -1;
-if (fseek (file, 0, SEEK_END) == -1)
- return -1;
-size_t size = ftell (file);
-if (size < 0)
- return -1;
-if (fseek (file, pos, SEEK_SET) == -1)
- return -1;
-return size;
+namespace {
+ size_t ffilelength (FILE *file)
+ {
+ long pos = ftell (file);
+ if (pos < 0)
+ return -1;
+ if (fseek (file, 0, SEEK_END) == -1)
+ return -1;
+ size_t size = ftell (file);
+ if (size < 0)
+ return -1;
+ if (fseek (file, pos, SEEK_SET) == -1)
+ return -1;
+ return size;
+ }
}
-
// ----------------------------------------------------------------------------
// GetAppFolder verifies that szMainFolder/szSubFolder is a valid game folder by
// scanning it for files with the name szFilter (e.g. "c:/games/descent/data/*.hog").
@@ -423,7 +423,7 @@
return 0;
m_info.file = fp;
m_info.rawPosition = 0;
-m_info.size = (length < 0) ? ffilelength (fp) : length;
+m_info.size = (length < 0) ? ::ffilelength (fp) : length;
m_info.libOffset = (length < 0) ? 0 : ftell (fp);
m_info.filename = const_cast<char*> (filename);
m_info.pBuffer = m_info.bufLen = 0;