But why? What's wrong with accessing the file system?
If stdout is a symlink, how is that different from stdout being the target of the symlink? Why is returning the latter the wrong thing to do?
Why is it our job to do that instead of letting the app decide? I mean I don't know what you want me to answer, I'm trying to make it as simple and less burden on our side as possible so we don't have any extra things to worry about?
Here's another one: Let's assume the user *does* decide to redirect output to a symlink. Why should we only go one level deep? Why not loop calling readlink until we find a non-link? Calling it once seems arbitrary to me. See what I mean?
Why is this a meaningful race? If you assume that the filesystem can be modified, how can a program do *anything* meaningful with the output of GetFinalPathNameByHandle(), *ever*?
Sorry I don't quite understand what you mean here. Of course things can happen, and apps can do anything they want with the filename; they can also check if it still exists and whatnot. Why is it our business to do that on behalf of the app?
Sure, this race isn't particularly common, it was just off the top of my head. But I just don't get why must we compromise "correct" behavior here and get headaches later?