We have an old build that runs on Linux. In fact, we demoed Mach 4 at IMTS 6 years ago on a Linux machine. So yeah, it will run on other platforms. But Linux is not where the majority of our customers are at the moment. So we have been concentrating on the Windows platform. I hope to have a Linux build by the end of the year though. Once we get that going, we'll keep it in sync with the Windows build from that point on. However, the Linux build will be more for OEMs and such and run on a dedicated distribution of Linux. We simply can't get into the world of supporting all of the flavors of Linux. We will probably choose a CentOS distribution. We may make it available to end users on a strictly "you are on your own" kind of thing with ZERO support from our ticketing system or phone support (meaning only forum based support from other users).
And from Linux to Mac. I can't imagine a Mac being used as a dedicated machine controller, but we do get questions asking if we support Macs all of the time. I have a Mac, so I might just make it run on it just for the fun of it.
As to your case question, I would use the LUA string.lower() function to lcase the string returned into pathCode. e.g.
local pathCode=mc.mcRegGetValueString(hreg);
pathCode = string.lower(pathCode);
...
But only IF you WANT to convert it to lower case. It will not matter for Windows. But it will matter for Linux and Mac. So if you put the filename into the register with the correct case, then I would suggest NOT converting it to lower case in the event you ever run the code on a Linux or Mac machine in the future.
Steve