If you are running on windows XP or higher you don't need to escape the blank space.
OS doesn't matter. opendir always takes a path for argument. Not a path that's been escaped into something else.
As I remember older versions of windows only support 8 characters long file/folder name so you'll have to use 6 characters and add ~1 at the end of the file name.
You're saying there exists a version of Windows that both supported long file names and didn't support long file names.
DOS was what didn't support long file names. DOS applications running on Windows had to use the short path names. Adding ~1 is not the correct way of getting the short file name. And finally, the problem at hand has nothing to do with long file names. Or file names at all, really.