2011/10/4 Juan Lang juan.lang@gmail.com:
OK but the purpose is to avoid checking the handle type for every line read. Granted, one could use '((DWORD_PTR)h) & 3 == 3' instead of GetConsoleMode or similar function. (there's currently code like "BOOL is_console = GetConsoleMode(...); ...; while WCMD_fgets(..., is_console)" and the handle type shouldn't change between lines/iterations, so why bother recomputing it every time?)
You're probably not. The compiler will probably inline this function, or at least its return value, since it knows it's guaranteed not to change. Please don't do the compiler's work for it: IMHO, it's more readable to make an inline function to determine whether the handle is a console handle.
I don't quite understand what you mean. WCMD_ReadFile is called directly/indirectly in a lot of places, mostly around line-by-line reads. The question is not whether the compiler will inline this function (you can't know that for sure, think -O0, different compilers, etc.), but whether you want to check that every time.
This function is_console_handle() could be inlined or not/fast, but that's not the point. The point is why would one want to run that function when not necessary, i.e. when callers already know the type. It's just about finding/detecting the handle type once and only once (per handle).