searching for method signatures

D

David Hilton

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?

Thanks,
David
 
B

Ben Bacarisse

David Hilton said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top