unsigned long GetShortPathName(LPCSTR lfn, LPCSTR buffer, int len)
Oh, and please please please don't use shortnames (~1 madness) to work around this in a front-end except as an optional fallback when it's unavoidable. There's no way to be sure you get the right shortname for a file AFAIK, and there's no guarantee they're even enabled (they can be turned off, and MS guidelines recommend doing so in some situations).
Retrieves the correct short file name for any long file name. Also, I'm almost 100% certain that SFNs cannot be disabled -- LFNs CAN be disabled, however, I know that for certain. Maybe that's what you were thinking about?
Microsoft's recommendation wrt SFNs is to avoid them when possible, and to not store them in a config file or the registry, as when a file is moved, its SFN can change in response to the presence of other files with the same SFN. However, most people don't move their DOOM files around that much, so a frontend would be reasonable in expecting path names to remain stable. And of course, there's always the ability to TELL the user in the documentation that they need to reselect the files after moving them. Its not that bad really.
BTW, Eternity doesn't support LFNs yet from the command line, but it does fine with any LFNs that are used implicitly by the program, such as in the IWAD path, etc. LFNs really mess up the tokenization of the command line and are a pain, IMNSHO. I don't consider it a priority problem. And you can't make me program any TSR's, cph, I'll run away and hide ;)