Phew... after half an hour of deliberation...
The underlying interview question is how to declare a function which takes int as argument and returns a function pointer? Is it so that, then we have to qualify the returning function pointer as well in the function declaration and that's where it gets tricky?
It was excellent from tiger to make it readable.
I guess Srinath was trying to correct the initial statement of "Signal is a pointer to a function" to "Signal is a function" by blurring the two words?? If so, that would concur with what Lava mentioned and my understanding now as well. Agree?
For the first statement from Srinath to be correct it should have been like,
void ( *( *signal(int signo, void (*func)(int)) ) ) (int)
or much simply, as per Tiger's direction
func_t (*signal) (int signo, func_t func);