siglongjmp instead of setjmp, longjmp.) Should work everywhere now.
#ifndef lint
static char *rcsid_test_c = "$Header$";
#ifndef lint
static char *rcsid_test_c = "$Header$";
#include <mit-copyright.h>
#include <stdio.h>
#include <mit-copyright.h>
#include <stdio.h>
extern int sending_version_no;
int count, quit=0;
char *whoami;
extern int sending_version_no;
int count, quit=0;
char *whoami;
+#ifdef POSIX
+sigjmp_buf jb;
+#else
-void discard_input(int, int, struct sigcontext *);
+void discard_input(void);
char *mr_gets(char *, char *, size_t);
main(argc, argv)
char *mr_gets(char *, char *, size_t);
main(argc, argv)
action.sa_flags = 0;
sigemptyset(&action.sa_mask);
sigaction(SIGINT, &action, NULL);
action.sa_flags = 0;
sigemptyset(&action.sa_mask);
sigaction(SIGINT, &action, NULL);
#else
signal(SIGINT, discard_input);
#else
signal(SIGINT, discard_input);
while(!quit) {
if(!mr_gets("moira: ",cmdbuf,BUFSIZ)) break;
while(!quit) {
if(!mr_gets("moira: ",cmdbuf,BUFSIZ)) break;
-void discard_input(int sig, int code, struct sigcontext *scp)
+void discard_input(void)
+#ifdef POSIX
+ siglongjmp(jb, 1);
+#else
}
char *mr_gets(char *prompt, char *buf, size_t len)
}
char *mr_gets(char *prompt, char *buf, size_t len)
if (!in) return NULL;
if (*in) {
add_history(in);
if (!in) return NULL;
if (*in) {
add_history(in);
- strncpy(buf, in, len-1);
- buf[len]=0;
+ strncpy(buf, in, len-1);
+ buf[len]=0;