Commit Graph

3230 Commits

Author SHA1 Message Date
ngosang
dd2bb950be Fix Exit to OS button focus in Pause Menu 2015-02-10 21:23:16 +10:00
Loic Blot
a704c04f00 Network Layer 7 rework (Packet handling)
* Move networkcode to a dedicated directory
* Rename clientserver.h to network/networkprotocol.h (Better name) and sanitize some includes
* Create object NetworkPacket
  * It stores command (opcode) and data separated
  * It also stores peer_id
  * Data reading can be done by using a streaming interface
* Change packet routing analysis
  * Remove old conditional analysis
  * Now uses function pointed analysis and add connection state ({Client,Server}::handlers)
  * Connection state permit to categorize condition to handle before analyze packets
  * Create a handler for depreciated messages, instead of duplicating code
2015-02-10 20:04:08 +10:00
kwolekr
15c037614f Hud: Modify Y-positioning of health/breath starbars to prevent overlapping with Hotbar 2015-02-08 12:47:45 -05:00
gregorycu
a0535d286b Fix rebase bug, make render loop use cache setting 2015-02-07 22:23:36 +10:00
Craig Robbins
0904884ad4 Fix warnings in CGUITTFont.cpp 2015-02-06 23:02:15 +10:00
ShadowNinja
1367e8ffff Fix gettext 2015-02-05 11:49:14 -05:00
ShadowNinja
9e2a9b55e1 Reduce gettext wide/narrow and string/char* conversions 2015-02-05 03:24:22 -05:00
ShadowNinja
84c367bb46 Fix translation memory leak 2015-02-05 03:24:13 -05:00
ShadowNinja
8bbf106379 Fix translation finding of overlay messages 2015-02-05 03:24:00 -05:00
paramat
bec5d3ab22 Mgv7 mountains: Remove divide by zero code that creates vast walls
Conf.example: Add mgv7 cave1, cave2 noiseparams
Mgv7: Make skipping of mountain code relative to y=0 not water level
Mountain noise offset now -0.6 to compensate
Tune chance of large caves
2015-02-05 03:21:04 -05:00
Craig Robbins
9a0dd47057 Fix performance regression 2015-02-05 17:34:10 +10:00
SmallJoker
929e0b0ad8 Give full breath after death 2015-02-05 17:33:08 +10:00
gregorycu
5e075c3344 Fix dying of lava causes repeated death This is a bugfix for issue #81 2015-02-05 17:32:35 +10:00
ngosang
1b4aaa5f50 Suppress 4 gcc 4.9.2 warnings in CGUITTFont.cpp 2015-02-05 02:41:55 +10:00
sapier
d902bd31c4 Fix getCraftRecipe returing wrong reciep due to way to unspecific output matching 2015-02-02 21:32:23 +01:00
kwolekr
0118c111e8 Fix some MSVC-specific warnings and add debug path as an MSVC directory 2015-02-02 02:01:13 -05:00
kwolekr
43f102271d Create minidump on fatal Win32 exceptions
Remove software exception translator function, simplifying exception handler
macros.  FatalSystemExceptions are left unhandled.
2015-02-02 01:39:17 -05:00
kwolekr
48fa893abd Randomly generate seed if field blank for any Settings instance 2015-02-01 02:05:39 -05:00
Kahrl
285655a878 Fix NDT_GLASSLIKE normals
Remove inventorycube() workaround for default:glass in minimal game
2015-01-31 03:06:34 +10:00
Craig Robbins
38561023b4 Fix local map saving when joining a local server from the server tab
Disables local map saving for all local server types

See: https://github.com/minetest/minetest/issues/2024
2015-01-31 00:42:08 +10:00
Kahrl
4d15d63134 Fix uninitialized variable m_database_delete in Database_SQLite3
This fixes issue #2219
2015-01-28 05:01:07 +01:00
kwolekr
ad690c46b1 Write common mapgen params to map_meta.txt on world initialization 2015-01-27 22:29:28 -05:00
Loic Blot
80a7408e4d Fix a crash (assert) when client set serial version < 24 in INIT
When SER_FMT_VER_LOWEST is set to zero, then the test is stupid in INIT because all client works. In mapblock we check if client's serialization version is < 24, but if client sent serialization version < 24 (15 for example) the server set it and tried to send nodes, then BOOM

To resolve the problem:
* Create a different CLIENT_MIN_VERSION to handle this problem
* Remove the exception
* Use an assert in case of bad developer code
2015-01-27 16:55:25 +01:00
kwolekr
eeea454bff Fix missing map_meta.txt error when creating new worlds
A missing map_meta.txt should be treated simply as if there were a blank file.
2015-01-27 02:10:04 -05:00
Craig Robbins
ca217d0416 Revert "Fix a crash (assert) when client set serial version < 24 in INIT command SER_FMT_VER_LOWEST is set to zero, then the test is stupid in INIT because all client works. In mapblock we check if client's serialization version is < 24, but if client sent serialization version < 24 (15 for example) the server set it and tried to send nodes, then BOOM"
nerzhul is (may?) be working on a new solution. For the moment this is reverted because old worlds cannot be loaded (see discussion on github for the commit).

This reverts commit 800d19270250bb13cc6b2d330199815bf8e96446.
2015-01-27 00:39:33 +10:00
gregorycu
5b55deb1eb Suppress MSVC warning in chat.cpp 2015-01-25 16:09:23 +10:00
gregorycu
ed7c9c4cb8 Settings fixes Make the GameGlobalShaderConstantSetter use the settings callback (8% perf improvement in game loop) Ensure variable is set Ensure settings callback is threadsafe 2015-01-25 15:23:37 +10:00
Craig Robbins
2c4a5e1861 Revert "Make the GameGlobalShaderConstantSetter use the settings callback (8% perf improvement in game loop)"
This reverts commit a555e2d9b0ccee452996381a44677b8bec210036.
2015-01-25 01:19:40 +10:00
(@U-Exp)
800d192702 Fix a crash (assert) when client set serial version < 24 in INIT command SER_FMT_VER_LOWEST is set to zero, then the test is stupid in INIT because all client works. In mapblock we check if client's serialization version is < 24, but if client sent serialization version < 24 (15 for example) the server set it and tried to send nodes, then BOOM 2015-01-24 22:41:02 +10:00
Kahrl
f8bd1f3563 Fix uninitialized variable Server::m_next_sound_id 2015-01-24 06:44:41 +01:00
Craig Robbins
0ea843bbdb Fix unitialised variable occassionally being used 2015-01-24 14:54:42 +10:00
gregorycu
a555e2d9b0 Make the GameGlobalShaderConstantSetter use the settings callback (8% perf improvement in game loop)
Amend the settings callback to support userdata
2015-01-23 21:27:51 -05:00
paramat
aafbbcd537 Mgv5: Skip calculation of filler, heat and humidity perlinmaps in underground mapchunks 2015-01-23 21:24:47 -05:00
ShadowNinja
a9f81b729b Send real port to server list 2015-01-23 21:38:34 +10:00
paramat
1702c34b64 Mgv7 generateRidgeTerrain: Make river generation relative to water level
Remove widthn and make nridge zero underwater
2015-01-22 02:21:11 -05:00
paramat
70354ac20b Mgv7: Speed optimise calculateNoise and generateRidgeTerrain
Remove unnecessary range limiting of persistmap
Skip calculation of filler, mountain, ridge, heat and humidity perlinmaps in underground mapchunks
Skip generateRidgeTerrain in underground mapchunks
2015-01-22 02:10:07 -05:00
paramat
408d9b72f0 Mgv7 generateRidgeTerrain: Enable rangelim of widthn to remove abysses, calculate widthn later in function
Reduce width to 0.2
Carve river channels in deeper waters
2015-01-22 02:06:33 -05:00
TriBlade9
db481e7232 Added ratio argument to colorize, removed the weird alpha-based ratio. 2015-01-20 22:56:20 +10:00
paramat
9b89f7aad7 Mapgen V5: Various improvements
Caves check for biome nodes, only excavate stone under water level
Unease caves noises, use MT0.3 parameters
Blobgen after cavegen
Biomegen: remove 'is replaceable content' bool
2015-01-18 23:38:15 -05:00
kwolekr
38bd9e93a2 Fix all warnings and remove -Wno-unused-but-set cflag 2015-01-18 23:29:19 -05:00
kwolekr
e36681101e Add SemiDebug (-O1 with debug symbols) build mode and do not optimize Debug at all
Add -Wall to Debug modes for all compilers and -Wabi for non-MSVC
Use /Ox for MSVC Release mode (potentially higher optimization than /O2)
2015-01-18 22:30:11 -05:00
kwolekr
976d0b2caa Reorganize supported video driver query mechanisms 2015-01-18 13:24:25 -05:00
kwolekr
6e9f287844 Revert "Fix bug in debug build"
This reverts commit 839c4a99cddcacdc19dee42286b7029c4c1e7800.
2015-01-18 13:19:28 -05:00
Craig Robbins
839c4a99cd Fix bug in debug build
-O1 results in executables that are completely useless for actuall debugging
2015-01-19 00:26:59 +10:00
Kahrl
e80a044818 Fix use of uninit data in Sky and (potentially) GUIChatConsole constructors
Clean up nearby code a bit

As a small side effect, it is now possible to add a background texture
to the chat console by simply providing background_chat.jpg, it is no
longer necessary to also add "console_color =" to minetest.conf.
2015-01-18 13:16:01 +01:00
Craig Robbins
29514918f8 Fix particles causing unitialised data being used due to use of incorrect union member 2015-01-18 20:30:57 +10:00
gregorycu
db3466dbe8 Water fixes
Change must_reflow to a deque
Add overload for MapBlock::raiseModified that takes a const char*. This is a speed improvement.
Comment out unused variable
Optimisations to block offset calculations
2015-01-18 20:30:33 +10:00
Craig Robbins
805c8e51e5 Create empty default constructor for MapNode 2015-01-18 13:39:50 +10:00
paramat
2f0a8f1c3e Mgv7: Replace small pseudorandom caves with 3D noise tunnels. Fewer large caves 2015-01-17 21:57:48 -05:00
sapier
a39c136e69 Fix NodeMetadataList loosing memory on deserialize due to invalid clear map call instead of clear 2015-01-17 19:14:36 +01:00
gregorycu
2959d6b3da Fix entitiy WieldMeshSceneNode not freed due to additional grab 2015-01-17 19:13:08 +01:00
Craig Robbins
5481e38d0b Make minor style change(unescape_string()) 2015-01-16 21:05:44 +10:00
Loic Blot
e5b636712c Fix missing return in Database_Dummy::deleteBlock 2015-01-16 21:00:11 +10:00
Craig Robbins
5e58a95491 Fix potential out-of-bounds array index 2015-01-16 14:35:57 +10:00
kwolekr
9736548720 Add ability to delete MapBlocks from map
Also add a Lua API and chatcommand for this
2015-01-15 16:48:56 -05:00
kwolekr
0330cec7ec Initialize noise ptr on creation (fixes crash if OreVein deleted before use) 2015-01-15 16:23:04 -05:00
ShadowNinja
77e20a0c21 Fix unescape_string removing all backslashes 2015-01-15 16:16:41 -05:00
unknown
bd0d786590 Change UniqueQueue to use a queue and a set. 2015-01-15 21:08:35 +10:00
TriBlade9
e19dab2622 Added configurable ambient_occlusion_gamma. Default is 2.2 (same as previous hardcoded values). 2015-01-14 23:35:50 +10:00
Craig Robbins
57f2fa57cd Fix use of uninitialized data 2015-01-14 15:43:33 +10:00
onkrot
0fd1ee0380 Performance fixes. 2015-01-13 23:48:56 +10:00
unknown
5d08ada224 Add VoxelArea::hasEmptyExtent 2015-01-13 23:24:32 +10:00
kwolekr
714a4f8507 Attempt to fix occasional issue of uninitialized MapBlock data 2015-01-12 22:31:08 -05:00
kwolekr
b0efb8f3b2 Prevent transform of noise3d result in getBlockSeed2 2015-01-12 15:46:04 -05:00
paramat
c367f7301a Mapgen V5: Move cave generation from base terrain loop to optional function
This fixes biome surface in tunnels
2015-01-11 22:35:36 -05:00
sapier
aed70cb0b6 Disable sound and key binding settings in "pause" menu on android 2015-01-11 13:58:49 +01:00
sapier
2d9b311e7b Fix invalid stepheight increase calculation on android 2015-01-11 13:57:26 +01:00
sapier
25235a4324 Increase stepheight on android by 0.5 to smoothen movement 2015-01-11 04:33:42 +01:00
Kahrl
b7c0e4b333 Fix clipping rectangle of GUITable row highlight 2015-01-10 19:56:14 +01:00
sfan5
3b16103ca6 Change default font sizes to 14(freetype) and 10(non-freetype) 2015-01-10 18:59:43 +01:00
sfan5
8089d89a51 Set default value for ENABLE_REDIS to 0 2015-01-10 15:28:25 +01:00
sapier
30334b6b22 Revert "Switch default scaling factor to 0.75 as most ppl seem to have 96dpi screens instead of previous assumed 72"
which ain't required any longer as fonts are no longer autoadjusted
This reverts commit 7ad17a25f4dfc81427df54d5c855b40b4472d517.
2015-01-09 19:07:55 +01:00
sapier
de3888ca09 Remove automatic consistent formspec size <-> font size (now has to be done manually)
Set builtin formspecs to autoscale in order to get consistent formspec look and feel
Uncouple label positioning from font size (May break some formspecs but is required to allow manual font adjustment)
2015-01-09 18:46:24 +01:00
Craig Robbins
3c8e372119 Removed superfluous facedir check in mapblock_mesh.cpp 2015-01-10 02:06:33 +10:00
Kahrl
2ab97a7821 Fix logic of checkbox formspec element validity checking 2015-01-09 16:57:54 +01:00
sapier
63867b1a37 Fix memory leaks due to messed up memory handling for particles as well as their spawners 2015-01-09 15:23:49 +01:00
sapier
e201620ee1 Split gui_scaling to gui_scaling + hud_scaling as those elements need different handling on some devices 2015-01-09 14:31:33 +01:00
Craig Robbins
d576235409 Fix facedir > 23 causes segfault in client
See issue #2017
Applied kahrl's gist
2015-01-09 15:42:03 +10:00
sapier
7ad17a25f4 Switch default scaling factor to 0.75 as most ppl seem to have 96dpi screens instead of previous assumed 72 2015-01-09 00:37:02 +01:00
ShadowNinja
a3db918f78 Remove included SQLite3 2015-01-08 16:34:42 -05:00
sfan5
d8cf64a202 Add SQLite3 libraries to buildbot 2015-01-08 16:34:42 -05:00
paramat
56a89fd265 Return step smoothing value to 23 2015-01-08 15:06:28 +10:00
kwolekr
4a57ef12a1 Mapgen V6: Re-enable liquid flowing 2015-01-07 19:27:09 -05:00
rubenwardy
2504da28af Fix direction property of HUD 2015-01-07 20:51:47 +01:00
sapier
ef140eb7b0 Fix emerge thread not cleaning up emerge queue on shutdown 2015-01-07 12:19:48 +01:00
sapier
42f3515c0e Fix andorid build error 2015-01-07 00:10:21 +01:00
sapier
0f1d33933d Implement X11 dpi autodetection 2015-01-06 22:41:07 +01:00
sapier
083d19b3fc Fixes for android
Copy only minetest_game to apk by default
Don't copy .git and .svn folders to apk
Fix bouncing asset copy scrollbar due to long filepaths
Reenable font scaling to fix broken menu on high dpi screens
Implement minetest loglevel to android loglevel mapping
Disable touch digging while moving around
2015-01-06 16:13:39 +01:00
Craig Robbins
beb6b3e593 Prevent client crashing if an NDT_AIRLIKE node is dropped
The player dropping the node can either be themselves or another player (i.e. without this fix you can crash other people's clients)
Thanks CWz for reporting the issue
2015-01-05 22:55:02 +10:00
kwolekr
2d849b0a19 Shorten ManualMapVoxelManipulator to MMVManip 2015-01-05 02:42:27 -05:00
kwolekr
7289d61e99 Optionally specify propagateSunlight area in calcLighting
This fixes the Mapgen V5 calcLighting segfault
2015-01-05 01:20:36 -05:00
kwolekr
3bdf3df223 Exclude vertical mapblock borders when setting light 2015-01-04 23:14:16 -05:00
kwolekr
091594e26e NodeDef: Clear NodeResolver related entries too in clear() 2015-01-04 22:39:57 -05:00
kwolekr
bdcf03ae36 Add minetest.generate_ores() and minetest.generate_decorations() 2015-01-04 22:38:48 -05:00
kwolekr
cd4d213ae0 NodeResolver: Perform callback immediately if node registration phase finished
Also add NodeResolver callbacks on the client
2015-01-04 16:32:31 -05:00
kwolekr
6fdb32361a Remove freezemelt (the remainder of proller nonsense) 2015-01-04 03:30:10 -05:00
kwolekr
8eb9cebdd0 Add warning about using deprecated fields in Mapgen API and update docs 2015-01-04 03:24:40 -05:00
kwolekr
ef8ed5d127 LuaVoxelManip: Error when given out-of-bounds area 2015-01-04 03:07:28 -05:00
kwolekr
7233a1228e Lighting: Fix nearly all issues
The cause of a single light source seemingly being lit without spread
was due to its creation in the +Y mapblock boundary layer during map
generation, which was ignored as the overtop.  This overtop explicitly
needs to be omitted during sunlight propagation, however.  To accomplish
this, Mapgen::calcLighting() was split into separate functions taking
separate parameters.
Additionally, do not diminish light too early during spread.  This fixes the
output inconsistency between Map::updateLighting and Mapgen::calcLighting.
2015-01-04 02:42:31 -05:00
Kahrl
060ae29eaf Update bundled SQLite to 3.8.7.4 2015-01-04 05:21:59 +01:00
ShadowNinja
3c3887bb19 Deduplicate code and use stdlib in string functions 2015-01-03 14:50:16 -05:00
kwolekr
d91559b8f0 Fix crash if NodeResolver destroyed before pending any node resolutions 2015-01-03 11:05:31 -05:00
sapier
0db73bd83e More consistent progress bar from 0-100 on startup 2015-01-02 17:53:42 +01:00
sapier
aaec558f85 Fix rounding error in font size making main menu and in game font sizes inconsistent 2015-01-02 16:52:02 +01:00
paramat
7452d5399b MgV5/6/7: Generate dungeons above water level
Use/add stone_surface_max_y to speed-optimise/guide dungeon generation
MgV7: Don't let mountain terrain chop dungeons at mapchunk borders
Make mountain terrain update stone_surface_max_y for caves in mountains
2015-01-01 15:44:26 -05:00
paramat
938a3f2976 Mgv7: Remove range limits on mountain height to enable modification through .conf 2015-01-01 12:51:49 -05:00
kwolekr
a3d7203be5 Fix map parameter load order 2014-12-30 12:30:42 -05:00
Craig Robbins
3d29be24e0 Add display_gamma option for client 2014-12-31 02:44:31 +10:00
Dmitry Marakasov
2414580754 Fix endian.h include for FreeBSD 2014-12-30 23:00:01 +10:00
Craig Robbins
53bc56dc3c Cleanup updateCameraDirection and fix random input not working 2014-12-30 22:59:55 +10:00
kwolekr
9b0d77a549 Replace instances of height_min/height_max with y_min/y_max to remove ambiguity 2014-12-30 01:48:20 -05:00
kwolekr
b589353d89 Decoration: Fix default parameter values 2014-12-30 00:52:40 -05:00
kwolekr
c6df2bc42c Add support back for resolving group names in NodeResolver 2014-12-29 23:15:53 -05:00
kwolekr
f12118c38b Fix some lingering code style issues 2014-12-29 22:04:47 -05:00
kwolekr
0974337804 Mapgen: Use getBlockSeed2() for blockseeds (much better uniformity) 2014-12-29 21:44:52 -05:00
kwolekr
ca89e63b27 Add core.get_mapgen_names() to Main Menu API (and use it)
Also rewrite mapgen registration for static initialization
2014-12-29 21:23:51 -05:00
kwolekr
5e2753c712 Expose mapgen parameters on scripting init
Add minetest.get_mapgen_params()
Deprecate minetest.register_on_mapgen_init()
2014-12-29 12:59:59 -05:00
Kodexky
a79a116ac8 Center status text for better visibility. 2014-12-30 00:30:28 +10:00
Kodexky
62feade05d Add extra buttons to Android GUI. All icons are licensed by freepik.com under CC BY 3.0 2014-12-30 00:30:28 +10:00
Craig Robbins
3993102e88 Fix -Wtype-limits warnings and remove disabling of -Wtype-limits 2014-12-29 23:56:40 +10:00
kwolekr
5038b9aaec Print unit test failures to dstream 2014-12-29 02:30:03 -05:00
kwolekr
9eb492229b FontEngine: Don't use file extension to check font file compatibility 2014-12-29 01:46:13 -05:00
kwolekr
cc3ab5efa5 LuaVoxelManip: Remove blank allocator 2014-12-29 01:31:37 -05:00
kwolekr
3c637b4baf LuaItemStack: Fix and document behavior of set_name, set_count, set_wear, set_metadata 2014-12-28 23:59:24 -05:00
sapier
acb3519502 Fix MSVC compiler warning about passing this pointer in initializer list 2014-12-28 23:40:44 -05:00
Christophe Piveteau
91c00d29a5 Skip further loading of client if there was an exit signal 2014-12-28 22:46:53 -05:00
kwolekr
863379a4c6 Decoration: Add height_min and height_max parameters
Also set default height_min/height_max to -31000 and 31000,
respectively, for ore and biomes
2014-12-28 22:37:27 -05:00
kwolekr
c5faa64405 Cavegen: Fix copy & paste error (solves #2020) 2014-12-28 22:35:14 -05:00
paramat
570c2042b1 Biome API: Add shore top and shore filler nodes, underwater node, water top node. Add water top depth and shore height parameters. Remove water dust node 2014-12-28 21:37:43 -05:00
kwolekr
61dfa912f5 Ore: Add Vein ore type 2014-12-28 21:17:12 -05:00
kwolekr
900fa26965 Ore: Add Blob ore type 2014-12-28 03:11:00 -05:00
kwolekr
8c98f497d9 PseudoRandom: Expose constant PSEUDORANDOM_MAX 2014-12-28 03:09:32 -05:00
kwolekr
8334100fe1 LuaVoxelManip: Add option to allocate blank data 2014-12-27 23:09:36 -05:00
kwolekr
ae2721f2c8 VoxelManipulator: Remove unnecessary deallocation steps 2014-12-27 22:35:05 -05:00
kwolekr
08d259cf41 Set fallback content if resolving content vector requires everything 2014-12-27 22:20:04 -05:00
kwolekr
b67f37f27e Redefine NodeResolver interface and replace with callback mechanism 2014-12-27 02:12:21 -05:00
ShadowNinja
33eed6eb84 Fix fs::GetRecursiveSubPaths trying to get directory lists for files 2014-12-24 17:23:07 -05:00
Craig Robbins
8621e6de5d Large increase in performance 2014-12-24 23:13:24 +10:00
kwolekr
565959db86 Silence misc. warnings 2014-12-23 01:09:50 -05:00
Craig Robbins
7b93408884 Make limiting of the reflow liquids queue size optional
If liquid_queue_purge_time == 0 then disable the queue size limiting and make this the default setting
Additionally, liquid_loop_max now defaults to 100000
2014-12-23 15:47:06 +10:00
kwolekr
249749dd8c Temporarily fix always bright wieldhand with shaders enabled 2014-12-22 22:37:11 -05:00
Kahrl
7109e8f9fd Fix weird (and wrong) comment in test.cpp 2014-12-21 13:20:42 +01:00
paramat
173e1f6014 Re-add hacky fix for underwater grass, to fix mgv7 user's biomes 2014-12-20 14:50:13 -05:00
unknown
1e8e700ee6 Change TileSpec::frames to be std::vector not std::map
Signed-off-by: Craig Robbins <kde.psych@gmail.com>
2014-12-21 02:41:17 +10:00
Vanessa Ezekowitz
0d55f43977 Fix visual_scale for plantlike nodes (again)
fixes #1989

move the plant to the bottom of its node properly, without affecting its scale.  See isue #1989
2014-12-19 12:25:32 +10:00
Craig Robbins
815876e709 Fix visual_scale for NDT_PLANTLIKE being set too small 2014-12-18 20:28:14 +10:00
Craig Robbins
f5211bbd59 Suppress compiler warning 2014-12-18 19:29:04 +10:00
kwolekr
67063ed59f Remove manual biome noise translation 2014-12-17 16:28:28 -05:00
Craig Robbins
082256a9f8 Do not allow the m_transforming_liquid queue to increase until all RAM is consumed 2014-12-18 03:32:19 +10:00
Pavel Puchkin
3b902fd574 Fix OSX packaging finally
Signed-off-by: Craig Robbins <kde.psych@gmail.com>
2014-12-16 20:33:54 +10:00