Here's a version from BSD, copyright Apple, presumably used in OS X at some time or another:
http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/kern/qsort.c
It is call-recursive, although the upper bound on the depth of recursion is small, as Blindy explains.
Here's a version from glibc, presumably used in Linux systems at some time or another:
http://www.umcs.maine.edu/~chaw/200801/capstone/n/qsort.c
It's not call recursive. For exactly the same reason that the limit on call-recursion is small, it can use a small fixed amount of stack to manage its loop-recursion.
Can I be bothered to look up the latest versions? Nope ;-)
For a few hundred thousand array elements, even the call-recursive implementation won't call more than 20 levels deep. In the grand scheme of things that is not deep, except on very limited embedded devices, which wouldn't have enough memory for you to have an array that big to sort in the first place. When N is bounded above, O(log N) obviously is a constant, but more than that it's normally quite a manageable constant. Usually 32 or 64 times "small" is "reasonable".