Time Nick Message 00:47 est31 ok https://play.google.com/store/apps/details?id=net.minetest.minetest is up again 00:47 est31 weird... 00:51 est31 but it should be fixed 00:51 est31 it only shows up when searching for "Minete" 00:51 est31 after all thats its "title" 00:53 est31 ~tell nrzkt can you fix the app's title? its only "Minete". 00:53 ShadowBot est31: O.K. 01:03 paramat hmmmm the schematic issue is here https://github.com/minetest/minetest/issues/2481 a few months ago i also had the 'invalid schematic file' error when trying to place a schematic saved using worldedit. back later 02:05 WarrTab Any interest in getting MT into f-droid? 02:07 hmmmm paramat: the bug is clearly part of builtin 02:07 est31 WarrTab, yes there is, however I'm waiting for authorisation of c55 02:07 hmmmm why 02:07 est31 I dunno 02:08 hmmmm you don't need it. celeron isn't an active part of this project and hasn't been for several years. 02:08 hmmmm what could he possibly have to object about it 02:08 est31 most of the code is his 02:09 hmmmm wrt function pointers in C++... yes, perfectly fine. preferable, even 02:09 est31 ok, I'm giving it a try (app store). 02:09 hmmmm don't understand the irrational hate 02:09 hmmmm virtual function callbacks are basically masking the same exact mechanism with ugly multiple inheritance and OOO (object oriented overhead) 02:10 hmmmm you can make the same functionality take 5x as many lines of code as it would be passing a simple function pointer instead 02:12 hmmmm paramat: erm, no it's not, my mistake. didn't see the "invalid schematic file" part :-P... it looks like your .mts file somehow got corrupted, would be prudent to attach it as part of the issue report 03:41 * Zeno` wonders how much less efficient 083c8c73 makes the network code 03:42 Zeno` with the adding copying of objects 03:42 Zeno` added* 04:02 paramat thanks hmmmmm. will push #2487 very soon 04:02 ShadowBot https://github.com/minetest/minetest/issues/2487 -- mg_decoration: Raise highest allowed deco top to max edge of voxelmanip by paramat 04:14 paramat now pushing 04:24 paramat done! 05:22 hmmmm Zeno`, ? 05:22 hmmmm where does it copy objects 05:23 Zeno` when pushing them onto the queue 05:24 hmmmm that is not good 05:24 Zeno` Before they were allocated and just the pointer to them was finally pushed onto the queue 05:25 Zeno` and the object deleted after it was popped off and processed 05:25 hmmmm but it was messier having to keep track of NetworkPacket allocations 05:25 hmmmm I think it might be a good idea to keep the copying of NetworkPackets, but make the structure itself lightweight 05:26 hmmmm actually nevermind that wouldn't work because we don't use c++11 yet 05:26 hmmmm not having move ctors makes this messy 05:28 Zeno` yeah 05:29 Zeno` it's cleaner this way but there was no need to "keep track of" the NetworkPacket allocations because so long as they were sent (via Send()) they would be deleted 05:29 Zeno` I know the new way makes sense, I just wonder how much impact it has 05:29 Zeno` maybe it's nothing significant, I dunno 05:29 hmmmm both ways make sense for different reasons 05:30 hmmmm at first I thought the first way *didn't* make sense because I missed the part where it got enqueued 05:30 Zeno` I had the reverse confusion, heh 05:30 Zeno` I was wondering how the pointer of the queue remained valid (before I looked at how it was enqueued) 05:31 Zeno` pointer on* 05:32 hmmmm https://github.com/minetest/minetest/commit/083c8c734e8af037d8ad3a1a35475a5d4756572c#diff-ad60d65b34e16a3319296bb5d683acd6R1456 05:32 hmmmm don't tell me that SendMovement is actually sent every single time there's movement 05:33 hmmmm does it actually NEED to read 5000 entries from the config each time 05:33 hmmmm this is a candidate for caching 05:35 Zeno` yikes 05:35 hmmmm hmm 05:35 hmmmm Zeno`: I can't seem to actually find the part where it copies it into the queue... I'd assume this would need to be modified in this commit, no? 05:36 Zeno` no it wasn't modified in this commit because Send() still takes a pointer to the packet 05:37 hmmmm where is it then? 05:38 kahrl SendMovement is only called in response to INIT2 05:38 Zeno` connection.cpp line 2842 is where it finally ends up 05:38 hmmmm that's an awfully misleading name 05:38 kahrl yeah 05:39 hmmmm hmm wait, isn't that sapier's original code? 05:39 Zeno` server.cpp is the actual Send() function (line 1448) 05:42 Zeno` maybe. I stopped looking at it (I mainly looked at it because I wondered why the pointers were not becoming dangling) 05:44 Zeno` maybe it's a reference counted object; I'd have to look again 05:45 Zeno` hmm. seems it was always copied even in the original version 05:46 Zeno` oldForgePacket()? I wonder what that means heh 05:48 hmmmm me too 05:48 hmmmm so wait 05:49 hmmmm is oldForgePacket sapier's or nerzhuel 05:49 hmmmm oh, nevermind 05:49 hmmmm i thought that was part of Connection 06:22 Zeno` http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/ <--- interesting 06:23 Zeno` Even though I've read similar before it's good to see that the view is still current/valid in 2015 06:29 hmmmm yeah, I hope nerzhuel doesn't still think he's going to switch the network to TCP... 06:32 Zeno` I dunno. Haven't heard any mention of it apart from at the beginning 08:09 est31 #2491 doesn't compile for some reason, but I don't know why 08:09 ShadowBot https://github.com/minetest/minetest/issues/2491 -- Finer progress bar updates when initializing nodes by est31 08:12 est31 hmmmm, I didn't use function pointers after all, because the only use case you can use them with < c++11 doesn't fit for me. c++11 isn't viable though, as debian 7 isn't released yet. 08:12 hmmmm ??? 08:12 hmmmm what do you mean 08:13 hmmmm aww man, think about separation of concerns 08:13 hmmmm why does updateTextures need a handle to the device and guienv 08:14 est31 to call the update method 08:14 hmmmm why can't you pass the update method along 08:14 est31 because it will need the parameters too 08:15 hmmmm yeah but they can be abstracted away from updateTextures 08:15 est31 I'm not sure whether they are the same which the client class has 08:15 hmmmm so what's wrong with this: 08:15 hmmmm virtual void updateTextures(IGameDef *gamedef, void (*progress_callback)(void *), void *progress_callback_args)=0; 08:16 est31 hmmmm, that sounds reasonable 08:16 hmmmm struct TextureUpdateArgs { IrrlichtDevice *device; gui::IGUIEnvironment *guienv; }; 08:16 hmmmm TextureUpdateArgs args; 08:17 hmmmm args.device = device; args.guienv = guienv; 08:17 est31 yes, I'll need two additional params to the pointer, but mostly it looks good. 08:17 hmmmm okay 08:17 hmmmm in fact maybe you don't even need to define a struct for that 08:17 hmmmm just make it a void ** 08:18 hmmmm then pass along void *callback_args = {device, guienv, NULL}; 08:18 hmmmm erm, void *callback_args[]; 08:18 neoascetic what system requirements for the Android app? 08:18 est31 neoascetic, --> #minetest 08:18 hmmmm see you shouldn't even technically need NULL there even 08:19 est31 yes seems so, I always know the length 08:19 hmmmm because using callback arguments is basically done by an agreement between the one passing the callback and the callback itself 08:19 hmmmm there are lots of very bad, overcomplicated solutions to this problem 08:19 hmmmm in C++11 there are lambdas and other functional things that are used as closures 08:20 hmmmm when we adopt C++11.... the functional features is one thing I'd like to avoid entirely 08:20 hmmmm s/is/are/ 08:21 hmmmm without C++11, you can have something like what Google did in their base chromium library and all these gay Closures and Callbacks<> which is a few thousands of lines of extremely confusing template code to accomplish what I accomplished in 5 lines of code 08:22 hmmmm don't ever fall into this trap of making some trivial mechanism overly complicated because you're convinced it needs to be done The C++ Way(tm) 08:47 nrzkt est31: done sorry :) 08:47 est31 np :) 08:47 nrzkt application is now valid on play store, please increase the download number, the reviews, etc :p 08:47 nrzkt and don't hesitate to add comments :p 08:48 nrzkt the first download stats will be available tomorrow or in 2 days 08:48 est31 is it valid? 08:48 Krock *downloads* 08:48 nrzkt the state is published on playstore now, since the last update (i don't modify many things) 08:49 est31 ah this must be "google update": not all users see the same version 08:50 neoascetic nrzkt I've add 5 stars, but cannot run it :D 08:50 neoascetic how to debug? there is no debug.txt 08:51 Krock hmm.. where's it? I can't find it on the app store :/ 08:51 Krock maybe too less downloads to get noticed 08:51 est31 Krock, search for "Minete" :D 08:51 nore https://play.google.com/store/apps/details?id=net.minetest.minetest 08:51 Krock found! 08:52 est31 neoascetic, either the problem is so severe it doesn't even populate that directory, or it doesn't populate that directory, but some other 08:52 est31 neoascetic, can you inspect catlog? 08:52 neoascetic Mac developer program costs $99/year. F*king Apple 08:54 neoascetic est31 there is the only Minetest directory, and it is empty 08:55 neoascetic probably RAM issue 08:55 est31 neoascetic, can you run catlog on that device? 08:55 Krock Minete keeps crashing when I try to open t :( 08:55 neoascetic 383Mb free of 645 08:55 est31 https://play.google.com/store/apps/details?id=com.nolanlawson.logcat 08:55 neoascetic Oh, seems like same problem as mine 08:55 nrzkt sorry german, was a typo fix yesterday when fixing the deleted app :s 08:56 nrzkt with logcat we can know what is the problem Krock 08:57 neoascetic so, should I search for minetest in catlog? 08:58 est31 yes 08:58 neoascetic E: unable to read bindir 08:59 est31 neoascetic, do you have more info? 09:01 Krock unknown permission android.permission. READ_EXTERNAL_STORAGE 09:01 Krock .. in package net.minetest.minetest 09:03 nrzkt oh ? what is your android version ? 09:04 Krock 1min. I re-tried and now I get another error: unable to read bindir 09:04 nrzkt hmmmm: the oldForgePacket is here for compat, because we need a SharedBuffer in the queue, not a NetworkPacket, it's not sapier's work but mine 09:04 kilbith he's not here 09:04 Krock it also can't find the sharedir 09:04 kilbith use ~tell 09:04 nrzkt oops :p 09:04 Krock use memo 09:05 nrzkt ~tell hmmmm the oldForgePacket is here for compat, because we need a SharedBuffer in the queue, not a NetworkPacket, it's not sapier's work but mine 09:05 ShadowBot nrzkt: O.K. 09:06 celeron55_ nrzkt: where is that apk available outside of google play? 09:06 Calinou celeron55_, see the news post 09:06 celeron55_ ok 09:06 Calinou https://forum.minetest.net/viewtopic.php?f=18&t=11483 09:06 Calinou https://github.com/minetest/minetest/releases/download/0.4.12/Minetest-0.4.12.7-android.apk 09:07 neoascetic here my log: https://gist.github.com/neoascetic/47d5eb88b61dc2e25b4d 09:07 nrzkt ~tell Zeno` our reliability process create a TCP stack over UDP. I want to use a native TCP for reliable packets, and after, add a UDP socket for non reliable packets. This permit to handle connections efficiently with the reliability and the connection state and UDP for unreliable packets, natively 09:07 ShadowBot nrzkt: O.K. 09:08 Calinou I like the hybrid TCP + UDP idea, but you will have to make a notice about it 09:08 Calinou so that people hosting servers forward both TCP and UDP 09:08 Krock neoascetic, I'm getting +/- the same 09:08 neoascetic yep 09:09 celeron55_ https://metacrane.com/ff/33667/20150315110836.png 09:09 celeron55_ this happens for me 09:09 nrzkt Calinou: right, but it's not time to tell admins to do it because stack isn't finished yet, i need to finish it but i have so many things to do :p. The TCP part is finished except for big packets which need a special socket handling 09:10 est31 That bug celeron55_ ? Zeno should have fixed it. 09:10 nrzkt celeron55_ i think we must use current master instead of stable 0.4, many android fixes have been added. I only release stable-0.4 to keep our release process correct but i got bugs too 09:10 est31 ah yes the fix was added > 0.4.12 09:10 nrzkt est31: i also have the bug, but not in master. If you find the commit i cherry pick into stable-0.4 and release a new apk 09:11 celeron55_ well in this situation we probably have to use a custom version 09:11 est31 nrzkt, celeron55_ https://github.com/minetest/minetest/commit/5698e2baf8008b11706a4bbc4d62c8b584703834 09:11 nrzkt ok, i cherry pick and test the apk. If okay celeron55_ can i release 0.4.12.10 on play store ? 09:12 est31 I'm not sure perhaps this is needed too :https://github.com/minetest/minetest/commit/aefe80769bc515e0ddbfc734d41de396aca1259c 09:12 celeron55_ i think the version should be something that clearly indicates it's an android-only version 09:13 celeron55_ i'd go for 0.4.12.a1 or something :P 09:13 nrzkt android build doesn't use the tags if i can remember 09:13 est31 it does 09:14 nrzkt celeron55 why not. I look at this 09:14 est31 but if it fails it replaces the version with "gUnknown" -- which is bad as thats used then instead of "0.4.12". 09:15 Krock I've seen MagiChet on the appstore (with desktop browser) and that version has the gUnknown problem 09:17 est31 sfan5 has found out about it 09:23 nrzkt est31: i picked the 2 commits into stable-0.4, will now test it, if it fix i push the stable-0.4 branch and then try to fix this versioning status 09:26 nrzkt thanks est31: that's good. I can now look at the version problem 09:27 nrzkt xD for gUnknown 09:27 nrzkt grep -R gUnkn ../.. 09:27 nrzkt ../../build/android/Makefile: export GITHASH=gUnknown; 09:27 est31 It just shouldnt do anything 09:28 nrzkt simple: android uses gUnknown , and only android :). Then i replace gUnknown with Android, that's better, no ? :) 09:28 nrzkt then the version will be 0. 09:28 Zeno` est31: #include doesn't fix the problem (#2491)? 09:28 nrzkt 0.4.12-Android 09:28 est31 nrzkt, the problem is it will only print "Android" 09:29 est31 GITHASH also contains the 0.4.12 09:29 est31 thats why setting it that way doesnt work at all 09:29 Zeno` actually you probably don't need to do that; just forward declare it and make sure IAnimatedMesh.h is in the appropriate .cpp files where/if necessary 09:29 nrzkt oh, really ? i verify this 09:29 est31 Zeno`, I'll do it as hmmm suggested 09:29 est31 with func pointers 09:29 Zeno` est31, what did hmmm suggest? 09:29 est31 and no needless inclusions 09:30 Zeno` a fwd decl is not an include :P 09:31 fz72 nrzkt: did you cherry pick the fix of Zeno` for fgettext? 09:31 nrzkt hmmmm githash is properly shown in my released in fact. It's a problem with other builds 09:31 nrzkt fz72: yes 09:32 nrzkt but the version is only the tag there, i don't see 0.4.12 09:32 est31 still nrzkt this logic makes the makefile stuff unneccessary: https://github.com/minetest/minetest/blob/587167e940228e52e5df5e4b5ecb7b5ff1ea1a7b/src/version.cpp#L29 09:32 Zeno` est31, it's actually a (compile-)bug that really should be fixed despite the approach you finally take 09:33 est31 Zeno`, so you mean its unrelated? 09:33 Zeno` est31, not totally unrelated but I've seen the same "bug" (if it can be called a bug) in other PRs before 09:33 Zeno` I'll fix it after your final solution if you like 09:34 est31 ok Zeno`, thanks 09:37 Zeno` I suspect it's down to different irrlicht versions and a file move or something. I'll see if your PR compiles for me 09:37 est31 even if its still WIP 09:37 Zeno` *shrug* can't hurt 09:48 nrzkt ok, i will push a version fix for Android in stable-0.4. The VERSION_STRING is now: $(git-tag)-(git-commit)-Android 09:50 est31 I don't know but isn't an android branch better for this? 09:50 est31 what are opinions on this? 09:50 est31 & then use tags for "releases". 09:50 nrzkt no 09:51 nrzkt we don't have hands for this. I do this because we need to have a proper Android release because we have many and many users on it. But the code remains the same 09:52 nrzkt i think we could backport some useful fixes for Android or 0.4 into stable-0.4 branch but maintain another branch is too hard. Look at dev-0.5, i was the dev to maintain it. If we are more maybe it's useful but not there 09:52 est31 with installed version mostly being controlled by us, we can have a separate release schedule, with shorter cycles (but only stability fixes between versions). 09:53 nrzkt stable-0.4 09:53 nrzkt :) 09:53 est31 ok perhaps stable-0.4 does exactly that. 09:54 est31 but still would be better to have a stable branch that will work after 0.5 release too. 09:54 neoascetic stable-0.5? 09:54 nrzkt stable-0.4 will not be removed. 09:54 nrzkt yes stable-0.5 i think, our tree is divergent between stable-0.4 and master 09:55 est31 but then you would need to change the branch in order to update. 09:55 nrzkt but at 0.5 release we must keep master and stable-0.5 in sync 09:56 nrzkt okay, i publish APK v 10 to google play store, it's working properly. Calinou are you there ? 09:56 Calinou yes 09:56 est31 I'm just asking because f-droid has an automatic version detection system: it gets the versions from the git tags. also it would benefit from your maintaining nrzkt if you tag your pushes to play store. 09:56 nrzkt i will publish a new release on github 09:57 est31 thats enough nrzkt :) 09:57 est31 is neoascetic's and Krock's problem fixed, too? 09:57 nrzkt est31: i understand, but i think don't automate a use commits could be better atm because the release process is not very very clear :s 09:58 nrzkt the permission problem ? they don't give me their android version 09:58 est31 no, something else 09:58 est31 https://gist.github.com/neoascetic/47d5eb88b61dc2e25b4d 09:59 est31 "10:58:15: ERROR[main]: Unable to read bindir" 09:59 nrzkt Calinou: please change the 0.4.12.7 links to 0.4.12.10 please 09:59 Krock nrzkt, I said it's not the error, it was a warning 09:59 Calinou changed 10:00 nrzkt i'll look at this after, but i need your android version to look at the dev documentation about permission. I suspect something between android versions 10:00 est31 Zeno`, PR updated 10:02 est31 Krock, can you do uname -a on that android? 10:02 Krock est31, ehm what? I have no idea how to open something like a console 10:04 Zeno` est31 I think you can't (have to look at proc/something from memory) 10:04 nrzkt you can view your android version into settings 10:04 nrzkt uname -a will return the kernel, i'm not interest with the kernel but Android :p 10:05 est31 oh zeno can be right, busybox is required... 10:06 est31 I'm just wondering whether it could be linux < 2.2 10:06 Krock kernal 2.6.35.7 android version 2.3.6 10:07 neoascetic When app will be updated in play store? 10:07 nrzkt in a few hours :p 10:07 nrzkt the APK is published, now google must validate it 10:07 neoascetic okay 10:07 est31 This is where the error is triggered. https://github.com/minetest/minetest/blob/9da99efca226c377d3bc2914561edffd812a9c1a/src/porting.cpp#L479 10:11 nrzkt this proc is available on my Android 4.2.2 10:11 est31 yes its available since linux 2.2 10:11 est31 man sais that 10:11 est31 even before its available 10:11 est31 just no real symlink 10:14 nrzkt then Krock, the right problem you get is normal... if i remember the right was added in android 4.x 10:15 nrzkt note: i will backport the makefile changes to master in a few minutes 10:16 nrzkt est31 #2490 ok ? 10:16 ShadowBot https://github.com/minetest/minetest/issues/2490 -- Update and complete German translation and fix mistakes (second try) by Wuzzy2 10:17 est31 nrzkt, https://github.com/minetest/minetest/commit/0429ec4cfde636dd8dda3d1a0dcf6e175c821196#commitcomment-10202147 10:18 nrzkt right i don't know why i let this :p 10:18 nrzkt i fix the backport, not the stable-0.4, only at next release of android if needed 10:19 Zeno` what is BUFSIZ? 10:19 Zeno` I wish I didn't look 10:20 est31 lol :D 10:21 est31 Zeno`, http://dev.minetest.net/Code_style_guidelines#Function_declarations 10:21 est31 "Indention for follow up lines is exactly one tab." 10:24 Zeno` est31, but not for function prototypes 10:24 Zeno` lol 10:24 Zeno` well, that used to be the rule anyway... maybe it's changed 10:25 Zeno` https://github.com/minetest/minetest/blob/9da99efca226c377d3bc2914561edffd812a9c1a/src/porting.cpp#L474 <--- I'm surprised that this has never caused a stack overflow 10:25 Zeno` est31, even if it's not the rule it makes the code prototype clearer (especially since it's a fn ptr) 10:26 Zeno` oh wait... they're not rules; just guidelines :) 10:29 est31 ok, adding two tabs 10:29 Zeno` only if you see what I mean... 10:29 est31 its just we are talking abut 10:29 Zeno` it just seems clearer to me (especially in that case) 10:29 Zeno` that specific case* 10:30 est31 you mean it can be confused with \tprivate:\n\t\tvoid? 10:31 Zeno` I mean just scanning the code really quickly that line 402 looks like another function prototype that has been indented improperly 10:31 est31 ah also github's tab width exactly matches "virtual " 10:31 Zeno` yes 10:31 est31 it isn't constant 10:31 est31 so I might do the identation with spaces... 10:31 Zeno` I know, but I'm talking about scanning not correctness 10:32 est31 two tabs wont help, what if somebody sets their editor to half width= 10:32 Zeno` true 10:33 est31 e.g. this is what my editor shows: http://pbrd.co/1BkR33a 10:35 Zeno` est31, wanna see something even weirder? http://codepad.org/8Io3RamE 10:36 Zeno` (and yes that's compliant with the standard) 10:36 est31 (void) just means that its empty 10:36 Zeno` nothing related of course... just something of interest 10:36 est31 wasn't even some ancient C version that required this? 10:36 Zeno` well it's ok with c89 10:37 Zeno` In c blah() and blah(void) are quite different --- not sure about C++ 10:38 est31 Zeno`, better? 10:38 Zeno` if the void is not there the function /may/ have arguments (that you can retrieve using va_ functions) 10:38 Zeno` hmm? 10:38 est31 see PR 10:38 Zeno` oh, the PR.. stop remaining on-topic 10:38 Zeno` lol, /me looks 10:39 est31 now its mixed spaces and tabs in order to guaranteed break from normal reading. 10:39 est31 except people set their tab width to 0 10:40 Zeno` seems ok to me 10:41 est31 some benchmarks: dreambuilder loading requires 20 seconds in that textureupdate method 10:41 est31 0.2 of those are spent drawing 10:41 est31 100 times 10:42 est31 minimal test spends 140 ms in that method 10:42 est31 and spends indistinguishably nothing in the method 10:42 est31 after all, only one frame is drawn 10:42 neoascetic btw why only windows and android binaries present in release? 10:42 est31 (usually around 20% for some reason) 10:43 est31 neoascetic, linux has package managers. 10:43 neoascetic okay, same for OSX then... 10:43 est31 and spends indistinguishably nothing for **drawing** 10:44 * est31 continues reading the wuzzy translation PR 10:46 Zeno` performance isn't a huge issue in this part of the code 10:47 est31 its just important that the gui gets updated 10:47 Zeno` yes 10:47 est31 android even asks you whether to kill the app because it doesnt react 10:47 est31 when you touch it while loading 10:48 neoascetic > There are no Android builds yet, we'll add them soonâ„¢. in release 0.4.12 notes on github. I guess this is not true atm :) 10:48 kahrl Zeno`, is it really compliant to pass a function pointer returning void when a function pointer returning void* is expected? 10:48 * kahrl is confused 10:48 est31 kahrl, this is the OT stuff? 10:48 kahrl oh, yes 10:49 Zeno` kahrl, it's not returning a void * 10:49 Zeno` the function is the pointer 10:50 Zeno` (right-to left associativity) and yeah it's compliant although I've never really seen anyone use that form of the prototype in real life 10:51 kahrl I'm pretty sure void *(void) expands to void *(*)(void) which is a pointer to function returning void* 10:51 kahrl you probably want void (*callback)(void) 10:51 Zeno` kahrl, that is equivalent 10:52 Zeno` we had a very interesting discussion about this very topic on ##c one night 10:53 kahrl http://codepad.org/FLJdf9NP 10:53 Zeno` no, no 10:53 Zeno` that's in a different context... it must be in the parameter list 10:53 Zeno` only in the parameter list is it equivalnet 10:54 kahrl I never heard of such a thing 10:54 Zeno` neither had most people on ##c 10:54 Zeno` I think the only one who had was pragma 10:55 Zeno` Zhivago at first said it was wrong as well but then changed his mind 10:55 kahrl AFAIK functions get promoted to function pointers in argument lists, which makes void *callback(void) equivalent to void *(*callback)(void) 10:55 kahrl gcc complains about your code: http://codepad.org/SP5OQOS2 10:55 Zeno` I wish I'd kept the log and my bookmarks 10:56 est31 nrzkt, commented on #2490 10:56 ShadowBot https://github.com/minetest/minetest/issues/2490 -- Update and complete German translation and fix mistakes (second try) by Wuzzy2 10:56 nrzkt Thanks est31 10:58 kilbith sfan5: you can ban ElectionLibre plz ? he's impersonating ppl on several channels 10:59 est31 This ElectionLibre 97e4d023@gateway/web/cgi-irc/kiwiirc.com/ip.151.228.208.35 10:59 est31 not the one who joined right now. 10:59 est31 thats ElectionLibre :) 11:00 ElectronLibre ^ The one with the webgate adress is KittenHelper. 11:00 est31 nrzkt, if you have time to review #2491? 11:00 ShadowBot https://github.com/minetest/minetest/issues/2491 -- Finer progress bar updates when initializing nodes by est31 11:01 nrzkt what is the change in fact ? 11:01 nrzkt i didn't test it, which bar ? at loading ? 11:01 est31 at joining yes 11:01 est31 right now, its not even updating. 11:03 nrzkt i think having a constructor could be nice 11:03 est31 ? 11:03 nrzkt TextureUpdateArgs tu_args(device, guienv, getTimeMS() ... ); 11:04 est31 if you know a compact way. 11:04 est31 but I dont want to add a huge constructor thats used precisely one time 11:04 nrzkt i see 11:06 nrzkt seems good but not familiar with those void* :p 11:06 Zeno` they're fine 11:06 nrzkt then if they are fine let me a second 11:07 nrzkt please fix whitespaces 11:08 est31 lol Zeno` demanded them that way. 11:08 nrzkt git am is not happy 11:08 est31 "mixed whitespace"? 11:09 nrzkt http://pastie.org/10027506 11:09 Zeno` I suggested 2 tabs :P 11:10 est31 two tabs then to satisfy git? 11:11 nrzkt space before tab in indent said git 11:11 est31 ha! with two tabs, my editor has the issue. 11:11 nrzkt i like the feature, except that :p 11:15 est31 Zeno`, what about new way? 11:15 est31 (nrzkt, too) 11:17 sfan5 kilbith: which channels? 11:18 est31 sfan5, #minetest-dev, I think they are already banned from #minetest 11:19 sfan5 est31: they are already muted here 11:19 kilbith sfan5: here and #minetest-fr 11:20 sfan5 i can't do anything in #minetest-fr 11:20 kilbith already banned in that channel 11:20 Zeno` well, it's not an argument it's a parameter 11:20 Zeno` heh 11:20 Zeno` (since we're being pedantic) 11:22 est31 wow Zeno` you are a compiler? 11:22 Zeno` nah. But just one real nitpick... void (*progress_callback)(void *, u32 progress, u32 max_progress) ... the first parameter is not named but the rest are 11:23 Zeno` I think they should all be named 11:23 Zeno` why is it void* anyway? For future expansion? 11:24 est31 Zeno`, to not require any type stuff from the caller 11:24 Zeno` I don't really see why it cannot be TextureUpdateArgs * 11:24 est31 I dont even know whether client.cpp is included there 11:24 Zeno` hmm 11:24 est31 I would also need to make it non-local too 11:24 Zeno` ok, so it's for forward-compatibility? 11:25 est31 its for decoupledness 11:25 Zeno` ok, that's a fair enough argument I guess 11:25 Zeno` *shrug* 11:25 Zeno` I will merge. Can another dev agree or disagree please? 11:26 est31 but I'll fix the names if you want 11:26 Zeno` yeah maybe give it a name 11:26 Zeno` user_data is probably more "traditional" that "args" 11:27 Zeno` s/that/than 11:27 est31 I'm using args elsewhere too 11:27 est31 and thats a real nitpick isnt it? 11:27 Zeno` yep, leave it as args then and just add the name to the prototype 11:27 Zeno` yeah it was real 11:29 nrzkt est31, tell me when everything is good :p 11:29 est31 Zeno`, nrzkt should be now :) 11:29 Zeno` I could nitpick more if you like :) 11:30 Zeno` but anyway, I'll merge if another dev agrees 11:33 Zeno` s/if/when 11:33 Zeno` haha 11:34 est31 in the meantime, you could have a look at #2482 too. 11:34 ShadowBot https://github.com/minetest/minetest/issues/2482 -- Fix bug that disabled game-based minetest.conf default setting by est31 11:34 Zeno` for reference, there are casts that are not required 11:34 est31 in which PR? 11:34 Zeno` e.g. u16 cur_percent = ceil(progress / (float) max_progress * 100.); should simply be u16 cur_percent = ceil(progress / max_progress * 100.0); 11:35 neoascetic Could one more core developer review #2471 please? 11:35 ShadowBot https://github.com/minetest/minetest/issues/2471 -- Standalone bundle for OSX (w/ dependencies!) by neoascetic 11:36 Zeno` ceil() requires a double and the expression you are evaluating casts the result to a float and then the call to ceil casts it back to double (any compiler will fix that though) 11:39 est31 I'm not casting to u16? 11:41 Zeno` in the assignment you're "effectively" casting, I was talking about the type of the result of the expression passed to ceil (which you cast to float when it's already of type double but ceil() wants a double) 11:41 est31 ah 11:41 Zeno` 100.0 <--- double 11:42 sfan5 100.0f <--- float 11:42 Zeno` but why do that when ceil wants a double? :) 11:42 Zeno` it's going to be reinterpreted anyway (back to double) 11:43 est31 ok fixing that too 11:43 Zeno` if you like... it's kind of just a nitpick as I said 11:43 Zeno` I will merge in 10 minutes if nobody disagrees 11:44 est31 Zeno`, btw how is the rule, "one double makes everything double?" 11:44 est31 and "one cast casts everything"? 11:46 Krock Looks like everyone else had something else to do, it was quite easy to fix that bug #2493 11:46 ShadowBot https://github.com/minetest/minetest/issues/2493 -- Connect rails with connect_to_raillike again by SmallJoker 11:49 Zeno` est31, type promotion 11:49 sfan5 uhh 11:49 sfan5 nrzkt: https://github.com/minetest/minetest/commit/2bc0165652ec9244081f7c0db28c8d9c81b5d308 11:49 sfan5 nrzkt: why? 11:50 est31 nrzkt released a custom android version with backported fixes 11:50 sfan5 thats not what i mean 11:51 nrzkt sfan5 why on what ? 11:51 est31 to not confuse it with "real" version, he added the "-Android". 11:51 sfan5 i was about to ask about that 11:51 nrzkt you talk about the -Android suffix ? 11:51 sfan5 yes 11:52 nrzkt because i fixed the gUnknown version, celeron55 suggest to add a thing to know it's an android build, then i add this suffix to build 11:52 nrzkt then know version is 0.4.12--Android 11:52 sfan5 we know that it's android by the arch anyway 11:52 nrzkt if i play on my raspberry pi it's not android :) 11:53 est31 Zeno`, http://pastie.org/10027544 11:53 est31 this version works 11:53 est31 somehow I couldn't remove the casts 11:53 sfan5 this complicated things a bit 11:53 nrzkt why ? 11:54 sfan5 because there are two ways android versions will appear 11:54 sfan5 1st Minetest/0.4.12-commit-Android armv7 and 2nd Minetest/0.4.11 armv7 11:55 nrzkt with older official builds the version was only commit :s 11:56 Zeno` est31, that's just precedence :) 11:57 sfan5 3 ways then 11:57 Zeno` leave it as it is if you like, but ceil(100.0 * progress / max_progress) would work fine 11:57 sfan5 "Minetest/0.4.12-commit-Android armv7l" or "Minetest/0.4.11 armv7" or "Minetest/commit armv7" or "Minetest/gUnknown armv7" 11:57 sfan5 actually 4 11:58 est31 its staying that way. 11:58 est31 :P 11:58 sfan5 nrzkt: also you didn't fix gUnknown 11:58 nrzkt i don't know where does 0.4.11 comes from, it's not the makefile way . Only commit exissts in the logs ? 11:58 sfan5 nrzkt: gUnknown only happens when it doesn't find a .git directory 11:59 est31 or git isnt installed? 11:59 sfan5 nrzkt: currently if it doesn't find git it will look like "Minetest/--Android" 11:59 nrzkt the official build is done by myself and will contain the githash 11:59 sfan5 which isn't much better than gUnknown 11:59 Zeno` also, 72 + (u16) ((18 / (float) 100) * targs->last_percent)); is better written as 72 + (u16) (18.0f / 100) * targs->last_percent); IMHO :p 12:00 Zeno` but... merging now 12:00 est31 Zeno`, see latest version 12:00 sfan5 x.x.x.x - - [15/Mar/2015:11:59:58 +0000] "GET /list HTTP/1.1" 200 112176 "-" "Minetest/0.4.10 (Linux/3.4.5 armv7l)" "-" 12:00 sfan5 ^ nrzkt, there are enough of these 12:00 sfan5 some third party clients 12:00 nrzkt i can re-add gUnknown if you want sfan5 12:01 sfan5 no 12:01 sfan5 you don't need to re-add anything 12:01 sfan5 with that commit gUnknown because --Android 12:01 nrzkt --Android will be non git builds 12:01 sfan5 yes 12:01 sfan5 gUnknown was non git builds too 12:02 nrzkt then we could add the stats for those unofficials. Now we have a pattern for our official builds. I will have google play store stats in few days and if F-Droid and Amazon Store will be supported you will have more stats :) 12:02 sfan5 what I suggest is: don't set the CMAKE_VERSION_GITHASH at all when it isn't found 12:03 nrzkt then the version will be only 0.4.12 12:03 sfan5 or set it to STR(VERSION_MAJOR)"."STR(VERSION_MINOR)"."STR(VERSION_PATCH)"-Android" 12:04 sfan5 even 0.4.12 would be more useful than --Android 12:04 nrzkt i'll look at this idea in a few minutes 12:05 est31 good idea: or set it to STR(VERSION_MAJOR)"."STR(VERSION_MINOR)"."STR(VERSION_PATCH)"-Android" 12:06 sfan5 nrzkt: https://play.google.com/store/apps/details?id=net.minetest.minetest is called "Minete" 12:06 sfan5 at least for me 12:06 est31 german problem 12:07 nrzkt yes, it will be fixed when 0.4.12.10 will be available 12:07 sfan5 also the icon is still not very high-res 12:07 nrzkt typo fix when republishing the app because google delete it because someone report it as spam... 12:07 nrzkt if you get a 512x512 proper i'll change it 12:10 nrzkt can somes look at minetest_game, sfan5, many pr are waiting for approval :( 12:11 fz72 Any Core Dev wants to review #2382? 12:11 ShadowBot https://github.com/minetest/minetest/issues/2382 -- Remap Mouse and Key Buttons by fz72 12:15 sfan5 nrzkt: here's a 512x512 http://meow.minetest.net/i/33b96e7e749ab565.png 12:16 nrzkt thank, i updated the playstore 12:16 Krock sfan5, meow lies to me, it tells me /i/ could not be found! 12:17 sfan5 Krock: directory listing is disabled 12:17 Krock too bad 12:58 nrzkt Okay guys, 0.4.12.10 is online on Play Store 12:58 nrzkt please update your clients :). Also the german fix may be there 12:59 nrzkt this will fix the problem with translations :) 13:01 Krock is it still Minete? 13:04 Krock Repaired #2480 13:04 ShadowBot https://github.com/minetest/minetest/issues/2480 -- Add mg spflags in dlg create world by srifqi 13:04 Krock [needs testing] 13:04 nrzkt Krock, can you verify on the playstore, it's fixed but after the apk update maybe not now 13:05 sfan5 nrzkt: it says "Minetest" for me 13:05 nrzkt thanks sfan5 13:57 nrzkt what about adding a message at login for outdated clients and integrate this in core or minetest_game ? 13:58 nrzkt we check if client < server and send him a message 13:58 nrzkt this could be good :) 14:14 Zeno` DarkRoses, stop pretending you're someone you're not 14:14 Zeno` social engineering so blatantly obvious will not work here 14:15 est31 FYI Zeno` that user is quieted on this channel. 14:15 est31 I'm still for a ban 14:15 Zeno` good :) 14:15 Zeno` I'd ban as well 14:20 Zeno` hmm 14:20 Zeno` seems they have logged into my server with similar names to my known players as well 14:20 * Zeno` adjusts iptables 14:21 est31 on my server they logged in as admin, using social engineering attack 14:21 Zeno` yikes 14:23 Zeno` iptables -A INPUT -s 151.228.208.35 -j DROP that should fix it 14:30 fz72 Zeno`: I don't see any progress on #2382 14:30 ShadowBot https://github.com/minetest/minetest/issues/2382 -- Remap Mouse and Key Buttons by fz72 14:35 fz72 Sorry, I have not seen your comment. 14:39 Zeno` fz72, I really don't like the setting and reading of those... are they necessary? 14:39 nrzkt sfan5, calls to masterservers are done with HTTP ? 14:39 sfan5 nrzkt: yes 14:41 fz72 Zeno`: I don't know another way. That's the same as for normal buttons. Why you don't like them? 14:41 nrzkt can we have a new call please, i need to ask the master server what is last minetest version 14:41 nrzkt #2442 14:41 ShadowBot https://github.com/minetest/minetest/issues/2442 -- Notifications of new engine versions. 14:42 nrzkt i need 0 4 and 12 14:42 sfan5 just extend https://github.com/minetest/master-server 14:42 est31 I think we solve this problem using other methods. 14:43 est31 we should solve* 14:43 nrzkt est31, what is your idea ? master server is a good server to point this :) 14:43 est31 make people use officially supported minetest 14:43 nrzkt i don't talk about android 14:43 est31 afaik play store auto-updates 14:43 est31 so you talk about windows? 14:43 nrzkt android problem must be solved by server admins 14:43 nrzkt yes, windows for example 14:44 est31 because mac os and linux have own package repositories 14:44 nrzkt add a masterserver test on windows (minimally on windows) which add a notification on the main menu when an update is available 14:44 Zeno` KeyList is a std::list 14:44 est31 why do our own updater? 14:44 nrzkt not an updater, i want a notification 14:44 Zeno` those string values/lookups are not exactly efficient 14:44 nrzkt we need the information 14:45 fz72 ok, then it isn't good for all key buttons. 14:46 est31 my idea would be to encourage use of the chocolatey repo. 14:46 Zeno` yeah it's no good for any key settings 14:46 est31 but that feature should be disabled by default, and only enabled for official release builds for windows and mac. 14:46 nrzkt nobody use chocolatey, and there are many windows 7 without it 14:46 sfan5 est31: that will confuse the ordinary windows user 14:46 sfan5 and nobody use chocolatey, and there are many windows 7 without it 14:47 Zeno` what other key settings currently use that approach? 14:47 est31 having to download zip and extract it too. 14:47 fz72 What do you mean? 14:47 nrzkt i use it because i'm a good user, but which windows user, which is a minetest play uses chocolatey ? 1/50k ? 14:47 Zeno` I mean does the current code do a string search in a list for each key? 14:48 Calinou Atom used to use Chocolatey for the Windows installs 14:48 Calinou keep it up-to-date, it's something useful 14:48 nrzkt we can keep it updated, but we don't forget the classic windows way: barbarian way 14:48 nrzkt and a notification on masterserver could be good :p 14:48 fz72 I don't know. 14:48 Calinou we should have an .exe installer preferably 14:49 Calinou alongside with the .zip (which is portable) 14:49 Calinou make it using NSIS or InnoSetup 14:49 Calinou rubenwardy had a prototype of it 14:49 kilbith kaeza too 14:49 nrzkt +1 for InnoSetup :) 14:49 est31 barbarian way good description 14:49 fz72 Zeno`: I must go, but I will think about it. 14:50 est31 ok I agree now, having old installer is better. 14:50 est31 there are no convenient ways how to package chocolatey apps into installers 14:51 nrzkt we need to handle all distribution paths, old paths included :p 14:55 rubenwardy https://gist.github.com/rubenwardy/5397343 14:55 rubenwardy ^ Outdated inno setup script for Minetest 14:56 rubenwardy I stopped using Windows and so stopped making InnoSetup installers 14:58 rubenwardy We can't rely on repositories telling uses of new versions, as they may not be updated. 14:59 Calinou we could eventually get portable GNU/Linux builds too 14:59 Calinou build them using Ubuntu 12.04 32 bit + 64-bit, should run nearly everywhere 15:01 est31 rubenwardy, then thats a problem with the repository, but we shouldnt reinvent the wheel 15:01 Zeno` I would not run on my distro :( 15:01 Zeno` it's unlikely anyway 15:02 rubenwardy No it's the problem with the person that put the package there and then didn't maintain it 15:02 Calinou Zeno`, Arch users can use the AUR anyway 15:02 Calinou I'm not sure if 12.04 builds would run into Fedora 15:11 nrzkt on arch the extra version is correct 15:11 nrzkt we don't need the AUR 15:21 sfan5 build them using Ubuntu 12.04 32 bit + 64-bit, should run nearly everywhere 15:21 sfan5 or... 15:21 sfan5 just built (almost) completly static binaries 15:23 est31 xdg-app? 15:23 est31 I guess its too early for that 15:23 est31 no X support 15:23 est31 (not that I suggest that they add, but that wayland gets adopted) 16:06 hmmmm guys, 16:06 hmmmm I really am not too picky about coding style, just as long as it approximates something like the offical style 16:06 hmmmm but please make your own code consistent 16:07 hmmmm it sort of makes me upset when I see people switching between Type* and Type * within the same declaration 16:08 * est31 ducks 16:08 est31 those idents were zeno's wish btw. 16:08 est31 also agree to them. 16:09 est31 reason: the "void"s can be confused with wrongly idented methods. 16:09 hmmmm in any case, switching topics to NetworkPacket buffer copies... 16:11 hmmmm I think it would make more sense if SharedBuffer were extended to take a vector, or maybe switch the queueing system to accept NetworkPackets, or something 16:12 hmmmm that way we could have the internal std::vector become allocated on ctor, deleted on dtor, but ownership is 'taken' from it once it gets enqueued 16:13 hmmmm NetworkPacket::NetworkPacket(...) { buf = new std::vector(blah blah blah); } then in Send: m_con.send(pkt.buf); pkt.buf = NULL; ... then in NetworkPacket::~NetworkPacket() { delete buf; } 16:14 hmmmm that way if somehow enqueueing fails, the result is cleaned up, otherwise the delete is deferred to the cleanup handler after the data has been pending on the queue and actually sent, and there are zero copies involved 16:19 nrzkt hmmmm yes it's on the road but not pushed, i need to rewrite session manager and queue manager for the new protocol and this will be added there 16:20 Zeno` huh 16:20 Zeno` what idents? 16:21 hmmmm https://github.com/minetest/minetest/commit/e4f7c92cff0badd6c40b47bd90b1fc1b35456a1a#diff-34f48ad91ac6c202ac60b0348ae90e30R1566 ? 16:21 hmmmm double indented 16:21 Zeno` I never suggested that 16:21 Zeno` I missed it when looking, I will admit 16:22 hmmmm well they are indents.. 16:22 Zeno` but I never suggested they be added 16:22 hmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 16:22 Zeno` where did I suggest that there should be 2 indents in that function? :P 16:23 hmmmm hey i didn't read any of the backlog from last night after i went to sleep. 16:25 Zeno` all I suggested was that the parameters of a function prototype should be indented especially because second parameter (which was the first line on the "continuation") was a function pointer 16:25 est31 two idents would break it when you set your ident width to 4 chars, one ident would break at 8 chars, so... 16:25 est31 then I tried mixed spaces+tabs solution 16:25 est31 git am of nerzhul complained 16:25 Zeno` est31, the code hmmmm is pointing to has nothing to do with my "wish" :) 16:26 est31 aw 16:26 est31 umm yes thats my fault 16:27 est31 completely. 16:28 est31 I copied it and didnt fix identation: an explanation, but no excuse. 16:28 est31 (from its earlier place, which was around here: https://github.com/minetest/minetest/commit/e4f7c92cff0badd6c40b47bd90b1fc1b35456a1a#diff-70868aa6d6b96c0c1623c761500d23c4R920 ) 16:29 Zeno` well, I merged it. But, hey... shit happens 16:29 hmmmm heh 16:29 hmmmm hey at least it's not as bad as that one commit to one of the mainmenu scripts 16:30 est31 umm which one 16:30 est31 mine? 16:30 hmmmm "wha... how does minetest run with this blatantly invalid code... oh, THAT's the closing indentation 16:30 Zeno` lol 16:30 Zeno` yep 16:32 est31 so whats the accepted * style? 16:32 Zeno` against the name 16:33 hmmmm i always liked void *foobar better 16:33 Zeno` const char *s and not const char* s 16:33 hmmmm void* foobar seems to be more commonly used in academic settings 16:33 Zeno` hmmmm, and it leads to errors 16:33 hmmmm because CS professors want to make it clear that the pointer is a part of the type 16:33 hmmmm right 16:33 est31 k void *foobar matches my gut feeling. 16:33 hmmmm cause look at char *foo, *bar 16:33 hmmmm what would that be 16:34 Zeno` e.g. void* ptr1, ptr2; 16:34 hmmmm yup 16:34 Krock Could someone pleasespend a minute to look at the bugfix #2493 16:34 ShadowBot https://github.com/minetest/minetest/issues/2493 -- Connect rails with connect_to_raillike again by SmallJoker 16:35 hmmmm nodedef->get(n_plus_z_plus_y 16:35 hmmmm that's repeated 3 times in the same block of code 16:36 hmmmm also that seems like a rather egregious error you fixed... did the person who wrote that not bother testing their shit before they committed it? 16:37 Krock BlockMen with commit https://github.com/minetest/minetest/commit/b65c7ab 16:37 hmmmm in any case... that code is very repetitive 16:37 Krock I know but what would you suggest? 16:37 hmmmm one of the golden rules is to not repeat yourself 16:37 hmmmm oh, i don't know, a loop? 16:39 hmmmm if you look the only thing differing throughout that block of code is the position being checked.. v3s16 offsets[] = {v3s16(x - 1, y, z), v3s16(x+1, y, z), ...}; for (size_t i = 0; i != ARRLEN(offsets); i++) { ... 16:40 hmmmm i honestly feel as if that entire function is a train wreck though 16:41 hmmmm at least break up each case into a separate function.. 16:54 Krock I think I found a way 16:55 est31 also review for bugfix PR #2482 would be nice 16:55 ShadowBot https://github.com/minetest/minetest/issues/2482 -- Fix bug that disabled game-based minetest.conf default setting by est31 17:14 ShadowNinja est31: I got the partial require working, but this is what it took to get there: http://pastebin.ubuntu.com/10604980/ 17:14 ShadowNinja Is it worth that huge ugly mess? Should I re-implement require manually instead (I'd be copying substantial portions of loadlib.c)? 17:15 ShadowNinja I had to read the Lua source to find that magic _LOADED value that I need to override. 17:15 * est31 reads. 17:17 ShadowNinja package.loaded is read from debug.getregistry()._LOADED, but package.loaders/searchers is read from _ENV.loaders/searchers 17:17 ShadowNinja _ENV is set to package, instead of the globals table. 17:18 est31 lol 17:19 est31 what would be the major advantage in re-implementing? right now its ugly (can't really judge, haven't understood it yet), but only 40 lines 17:24 est31 *yess* minetest builds 17:24 est31 (for f-droid) 17:29 nrzkt good news 17:29 nrzkt have you look at the release documentation on dev.minetest.net, we updated it yesterday for android 17:35 hmmmm glah h 17:35 Krock hmmmm, https://github.com/SmallJoker/minetest/commit/419a14e 17:35 hmmmm everybody's dipping their fingers into the mapgen param settings pool 17:35 hmmmm and making it messy 17:36 hmmmm Krock: awesome 17:36 Krock :D 17:36 hmmmm see now that's what i'm talking about 17:37 Krock but I'm not sure about pointers and such things.. could you please check if you find any possiblememory leak? 17:37 hmmmm there can't be any memory leak... 17:37 hmmmm you didn't modify anything with pointers in fact 17:38 hmmmm I suppose the real question to ask is: does it work? have you tested it? 17:38 Krock compiling right now 17:38 hmmmm I think I need to find a final solution to the mapgen params issue 17:38 Krock the people should use the per-world specific file 17:39 hmmmm where we explicitly load each of the overrides right there in the same function 17:39 hmmmm instead of being scattered throughout execution 17:39 hmmmm so unless I'm mistaken, the current precedence order is still: 17:39 Krock it works! double-smile 17:40 ShadowNinja est31: Re-implementing would be less hacky and a big faster, although it would take more code. That's not all though, the env and _LOADED also have to be set on security init, and both source tables have to be copied properly. 17:40 hmmmm hardcoded defaults -> global minetest.conf -> game minetest.conf -> map_meta.txt -> lua mod override 17:55 est31 f-droid merge request sent: https://gitlab.com/fdroid/fdroiddata/merge_requests/639 17:56 est31 gtg btw, but I'll read the log with your comments. 18:05 nrzkt VanessaE ? 18:06 VanessaE hm? 18:07 nrzkt i found an thing to modify for your death bug on non enable_damage, at connection 18:07 nrzkt We don't send playerhp, but we can, i tested it, and also if the player is dead, tell the client is dead, which partially solve the death bug for those clients by reconnecting. Now i need to fix it live, without reconnect 18:08 nrzkt i push the modification to the repository now 18:09 nrzkt it was pushed 18:10 VanessaE sounds ok 18:11 ShadowNinja sfan5: If build-cleanup O.K. now? I'd like to get it merged soon since it gets broken fairly easily. 18:11 ShadowNinja Is* 18:12 ShadowNinja sfan5: I removed that line from the man page like Zeno siggested and removed SOVERSION. 18:13 ShadowNinja (And rebased it) 18:18 VanessaE ShadowNinja: did you sort out the crashing problem with player_textures trying to access non-existent files? 18:18 ShadowNinja VanessaE: Nope. 18:18 VanessaE I think you're gonna wanna fix that :P 18:18 ShadowNinja I even tried gdb with "catch throw", but it didn't catch it. 18:19 ShadowNinja VanessaE: That was with security, not build-cleanup. 18:19 VanessaE ah 18:19 VanessaE conflated the two 18:22 ShadowNinja ERROR[main]: ServerError: Attempt to access external file .../mods/player_textures/textures/player_singleplayer.png with mod security on. 18:23 ShadowNinja Weird. 18:23 VanessaE so it can't resolve that the relative path really points to the mod's own dir. 18:23 ShadowNinja Oh... 18:24 ShadowNinja Path restrictions won't work after init time. 18:24 ShadowNinja There's not really a good way to fix that. 18:25 VanessaE which means there may be a crappy way. 18:25 ShadowNinja You'll just have to add player_textures as a trusted mod. 18:25 VanessaE no 18:25 VanessaE that's the wrong way to go about it 18:25 VanessaE there needs to be a proper way to test if a file exists 18:26 ShadowNinja The alternative involves something like local x = minetest.request_proof_of_modname() and then using that in later calls. 18:26 VanessaE (even if that means ficing the mod, that's fine too) 18:26 ShadowNinja Where x would be a userdata object. 18:26 VanessaE fixing* 18:26 VanessaE wat 18:26 VanessaE this is doing a direct modname request with a simple string 18:27 ShadowNinja VanessaE: The issue isn't existence, it's that the engine doesn't know what mod made an API call after init time. 18:27 VanessaE why should an extra call be needed here? 18:28 ShadowNinja And there's no easy way to fix that, because if the engine calls mod a and mod a calls mod b and b calls the engine, what made the request? 18:28 VanessaE well mods reading other mods' folders shouldn't be an issue 18:28 ShadowNinja VanessaE: player_testures can be fixed by listing the dir on startup and then consulting the table later. 18:28 VanessaE (ergo, the file open operation being performed here shouldn't even be routed through security calls, it's just a read op) 18:29 ShadowNinja This also fixes the "random color for texture when the texture's been added but the server hasn't been restarted" bug. 18:29 ShadowNinja But I'll have to add something like LuaFileSystem's dir() to the engine. 18:30 VanessaE that's a horrible way to do it 18:30 VanessaE read a while dir and search it? 18:30 VanessaE that's nuts 18:30 VanessaE let the filesystem do its job 18:30 VanessaE whole* 18:31 ShadowNinja VanessaE: That's not how Minetest works though, it loads all textures on startup and has no support for dynamically adding tetures, so this actually fixes a bug and works better. And it's faster. 18:31 VanessaE so? 18:31 VanessaE it breaks userspace 18:31 VanessaE (so to speak) 18:32 VanessaE I can fix the mod (or pilzadam can since its his, whatever) - but fixing it with incredibly hacky workarounds like that is just, no. 18:32 VanessaE there has to be a better way 18:32 ShadowNinja VanessaE: The mod dir is considered read-only, so if you need to access something there you can do it at startup. 18:33 ShadowNinja (read-only because it might be somewhere like /usr/share) 18:33 VanessaE then how are you gonna handle a mod searching and reading its own files in realtime? 18:33 VanessaE I've run across one or two mods that do that, though which ones they were doesn't come to mind right now 18:34 ShadowNinja VanessaE: I'm not, I can't without ugly hacks, but as I just pointed out it's not needed. 18:34 ShadowNinja VanessaE: If you need to read something in the mod dir you can open it at startup. If you need to write something use the world dir. 18:34 VanessaE nono 18:35 VanessaE in *realtime* 18:35 VanessaE not startup 18:35 ShadowNinja VanessaE: Add it to trusted_mods until the owner fixes their mod or caches the file object. 18:35 VanessaE *headdesk* 18:36 VanessaE "VanessaE: fire a shotgun through your firewall and wait for the mod owner to make all those little holes unnecessary." 18:38 ShadowNinja VanessaE: You prefer no firewall at all? 18:38 VanessaE of course not 18:38 VanessaE but if you're gonna erect a firewall, it's a bad idea to tell the user to start poking lots of holes through it 18:38 VanessaE (or the modder in this case) 18:39 VanessaE "This function will only work if the user adds the mod to their secure_trusted_mods setting or has mod security disabled." 18:39 VanessaE this is where you fail, honestly. 18:39 VanessaE users barely even know how to download a mod to install it in the first placd 18:39 VanessaE place* 18:40 VanessaE (the "firewall" analogy is somewhat ironic here, since these are the same users that generally are able to figure out their firewall software) 18:49 ShadowNinja VanessaE: Here's a fixed version, the solid-color texture bug is fixed and it works with security (although it needs to be trusted for LFS): http://sprunge.us/dKXa 18:50 VanessaE ShadowNinja: yeah, see that's just ugly 18:50 ShadowNinja If you just want it to work with security just add the first line and prepend "i." to the io.open call. 18:50 VanessaE and still, "trusted". FAIL. 18:51 ShadowNinja VanessaE: If I add something like lfs.dir it won't need to be trusted. 18:51 VanessaE mmmh 18:51 VanessaE that's still a nasty workaround 18:51 est agree 18:52 est also agree to http://irc.minetest.ru/minetest-dev/2015-03-15#i_4187809 18:52 ShadowNinja VanessaE: Oh well, it's what we've got. 18:53 * VanessaE grumbles 18:53 VanessaE you're breaking a mod's ability to read its own files 18:53 * est gives the problem a closer look. 18:53 VanessaE (without using hacky workarounds) 18:53 ShadowNinja VanessaE: Only after init time. 18:54 ShadowNinja And, as a said, the mod dir is to be considered read-only, so you can easily pre-load anything you need. 18:55 sfan5 because preloading 2GB although you probably only need 12MB is totally good 18:55 VanessaE sfan5: THANK YOU. 18:55 sfan5 (I'm not saying a mod that needs 2GB of data exits, but it's possible) 18:55 VanessaE that's an argument I wanted to make, but I couldn't find the words 18:55 ShadowNinja sfan5: All you need is the file handle, you don't need to file:read("*all"). 18:56 sfan5 what if I have like 8k files? 18:57 sfan5 you don't give someone a mod api only to say "no, you can't do that, bla bla bla, security." for every useful function a modder tries to call 18:57 ShadowNinja sfan5: Use the insecure env if you really need it, but that number of files is highly questionable. 18:57 VanessaE in this case, I have 238 filenames that would have to be loaded into that cache 18:57 sfan5 ShadowNinja: you can't know what a modder might need for what reasons 18:58 ShadowNinja sfan5: I could add an API to work around this, but it won't work natively due to design restrictions in the API. 18:58 ShadowNinja Security that won't work for a few mods is better than no security IMO. 18:59 ShadowNinja (Although that's an option with the enable_security setting. 18:59 sfan5 security that limits the potential of mods is the worst security 18:59 ShadowNinja ) 18:59 VanessaE between all my servers, there are 11,944 unique accounts (so obviously not everyone has a skin) 18:59 ShadowNinja sfan5: Security isn't security if it doesn't inpose some limits. 18:59 ShadowNinja (like no rm -rf / 19:00 VanessaE security that limits the user or gets in his/her way is security they will bypass in the worst, easiest way possible also 19:00 sfan5 "you can't open files at runtime" is not a reasonable limit 19:00 VanessaE (which in minetest's case would probably equate to not updating past 0.4.12) 19:00 ShadowNinja sfan5: You can't open files >in the mod dir at runtime<. 19:01 ShadowNinja world dir is fine any time. 19:01 sfan5 that doesn't make it reasonable 19:01 ShadowNinja sfan5: And you have an idea for how to fix this? 19:01 sfan5 not impose that restriction? 19:02 ShadowNinja sfan5: This was tested with dreambuilder, only one mod failed because of this restriction. 19:02 ShadowNinja And my local worlds work. 19:02 sfan5 "works for me" 19:02 ShadowNinja So this is not something that many mods will need. 19:02 sfan5 "no mods break right now" 19:03 sfan5 those sound like some good argument for limiting the potential of future mods 19:03 sfan5 +s 19:03 ShadowNinja sfan5: Ugh, just tell me what you think about build-cleanup. 19:03 sfan5 link? 19:05 ShadowNinja https://github.com/minetest/minetest/pull/2402 19:06 sfan5 "Backtick format is deprecated " 19:06 sfan5 i'd like a source for that 19:06 sfan5 "because it's harder to read" doesn't sounds like a reasonable reason to deprecate something 19:07 Calinou we use $() now 19:08 VanessaE "When the old-style backquote form of substitution is used," <-- bash man page 19:08 sfan5 is that in the style guidelines? 19:08 VanessaE the man page doesn't call it "deprecated" but generally, it is. 19:09 ShadowNinja sfan5: Readability is the whole point of code style. 19:09 sfan5 so it's actually deprecated, ok 19:09 sfan5 but when did we decide that we don't want to use `` 19:09 sfan5 ? 19:11 VanessaE apparently it's because the $() method is POSIX while the `` method is not. 19:11 VanessaE that's about all I can find to explain it, aside from readability 19:12 VanessaE (I mean, why it's deprecated, not why it's necessarily in minetest code style) 19:12 ShadowNinja VanessaE: Both are posix, but $() is prefered because it's more visible/readable and it can be nested easily. 19:14 VanessaE hm, no surprise then if some websites get that wrong 19:14 VanessaE still you're right that $() is easier to read. 19:20 est what if we made it the other way? 19:20 est allow untrusted <-> untrusted reads 19:20 est between all mods 19:21 est and a mod that needs privacy can request it at load time 19:21 est it then gets a function that can be used to read/write inside 19:21 sfan5 it's not about privacy 19:21 sfan5 it# 19:21 sfan5 it's about security 19:22 est so why is it bad when untrusted mod A can modify untrusted mod B? 19:22 est "privacy" was just a catchy term 19:23 devmarth est, (assuming youre est31 :P), do i include just the sdk folder or a folder inside of it like /platforms/ or /tools/? 19:23 est --> #minetest 19:35 est the only case that can be dangerous is when somebody is adding a new mod to the list of trusted mods. 19:35 est and that has been "tainted" before by a malicious one 19:40 sfan5 ShadowNinja: see my comments on #2402 19:40 ShadowBot https://github.com/minetest/minetest/issues/2402 -- Clean up and tweak build system by ShadowNinja 19:41 sfan5 ShadowNinja: what was the error message with freetype and clang on travis? 19:43 Krock Successfully tested #2493 are there any other things I should change or are there devs who can give me a +1? :) 19:43 ShadowBot https://github.com/minetest/minetest/issues/2493 -- Connect rails with connect_to_raillike again by SmallJoker 19:58 est sfan5, https://travis-ci.org/est31/minetest/builds/53354328 20:00 ShadowNinja sfan5: Replied to most of them, I'm working on security ATM though so it will be a little while before a get to fixing them. 20:01 est ShadowNinja, I'm no NTFS expert but seen this: http://superuser.com/questions/364057/why-is-ntfs-case-sensitive 20:04 ShadowNinja est: Bah. 20:05 est whatever, ShadowNinja, what are your plans for security? 20:05 ShadowNinja est: "git merge" 20:14 ShadowNinja est, VanessaE: I found the source of that catch(...) issue: LuaJIT apparently probagates errors in a way that gcc catches as an exception. Lua's setjmp/longjmp seems to bypass it. 20:15 ShadowNinja I just removed the catch(...) block since it can't do anything usefull with an exception like that anyways. 20:54 est ShadowNinja, disabling reading/writing in other mod's directories has no security benefit at all except the small one I outlined 20:55 est and even that can be coped with when we let request_secure_environment() behave like request_exclusive_access() 20:56 est (where request_exclusive_access() returns methods to open and modify files inside the mod's dir, disabling access to the mod's dir from the "normal" environment) 20:57 est and ofc. request_secure_environment() should only behave like that, when its failing 20:57 est still load order issues... 20:57 est hmm 20:58 est btw I'm ok if that gets added later on 20:58 est most important thing is to get it into master first 20:59 est but should be added before the next release 21:00 est bye. 21:35 VanessaE What's gonna be with these G*d damned "ghost" entities? 21:38 VanessaE come ON already 21:38 VanessaE enough delaying! 21:38 VanessaE my creative server has become nearly unplayable because of this 21:39 VanessaE what the fuck is the hold-up? 21:44 * VanessaE is pissed off now. 22:03 VanessaE ~tell nrzkt your attempt to stop the death loop with a send-HP packet does not work in practice. 22:03 ShadowBot VanessaE: O.K. 22:04 VanessaE furthermore, why is ANY change to HP being allowed on the server when damage is disabled?