David Hilton <qu**************@gmail.comwrites:
I'm working on some legacy code, and I ran across this function that
is giving the compiler issues:
void socket_skip(int i,int code,struct sigcontext * scp) {
fprintf(stderr,"User requested an interupt\n");
signal(SIGINT,exit);
sleep(1);
signal(SIGINT,socket_skip);
return;
}
Not surprisingly, signal doesn't like socket_skip.
I have searched for any sort of #define that could have specified a
unique signal, I have read through most of the possibly relevant lines
(by running 'grep sig `locate signal.h` | less').
Does anyone know of a good way to search for (possibly obfuscated)
method signatures?
How about any other way of finding what I'm looking for?
Short of that, does anyone know what library might have a signal that
accepts that signature?
signal is standard C. I suspect your code simply dates from a time
when it was common for signal to vary quite a lot between systems. I
don't think you will gain anything from trying to find something
similar -- it is likely that is nothing you have available is an exact
match.
If this the only use of signal? If so, I think your simplest solution
is just to change the definition of socket_skip to match the type expected
by the standard signal function (void (*)(int)). The extra parameters
are not used but either handler (exit and socket_skip).
If there are other uses -- in particular some that set the handler to
a function that does use the other parameters then you will have to
find out what these parameters do/did. That may require digging
through the documentation for the "other" system.
--
Ben.