Frustum of a spotlight?

I am afraid that this is no OGL-specific question, but maybe some of you can help me.
If I have the angle and the direction and maximum range of a spotlight, how could I compute the frustum?
I guess one could feed gluPerspective() with the values then read it back as shown on and set the Perspective to the original state again.
Somehow this feels lame though (if it is possible at all).
Any suggestions are very welcome.
Thanks for your time.