Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > 03bdd856d84db3146de6a56ce373d107 > files > 3

dietlibc-0.32-4.20090113.6.mga1.src.rpm

--- dietlibc-0.22/test/alarm.c.tests	2002-11-29 14:53:53.000000000 +0100
+++ dietlibc-0.22/test/alarm.c	2002-11-29 14:53:36.000000000 +0100
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+
+static void alarm_handler(int sig)
+{
+  printf("Good, SIGALRM caught\n");
+  exit(0);
+}
+
+int main(void)
+{
+  if (signal(SIGALRM, alarm_handler) == SIG_ERR) {
+    perror("Failure to hook SIGALRM handler");
+    return 1;
+  }
+  alarm(1);
+  sleep(2);
+  printf("Failure, alarm() doesn't work\n");
+  abort();
+}
--- dietlibc-0.22/test/signal.c.tests	2002-11-29 14:53:59.000000000 +0100
+++ dietlibc-0.22/test/signal.c	2002-11-29 14:53:40.000000000 +0100
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <unistd.h>
+
+static void sigusr1_handler(int sig)
+{
+  if (sig != SIGUSR1) {
+    printf("Hey, got signal %d instead of SIGUSR1!\n", sig);
+    abort();
+  }
+  printf("Good, SIGUSR1 caught\n");
+  exit(0);
+}
+
+int main(void)
+{
+  sighandler_t old_sigusr1_handler;
+
+  if (signal(SIGUSR1, sigusr1_handler) == SIG_ERR) {
+    perror("Failure to register SIGUSR1 handler\n");
+    return 1;
+  }
+  old_sigusr1_handler = signal(SIGUSR1, sigusr1_handler);
+  if (old_sigusr1_handler == SIG_ERR) {
+    perror("Failure to re-register SIGUSR1 handler\n");
+    return 1;
+  }
+  else if (old_sigusr1_handler != sigusr1_handler) {
+    perror("Previous SIGUSR1 handler is not sigusr1_handler\n");
+    return 1;
+  }
+  raise(SIGUSR1);
+  printf("Failure, something went wrong\n");
+  abort();
+}
--- dietlibc-0.22/test/setjmp.c.tests	2002-11-29 14:54:14.000000000 +0100
+++ dietlibc-0.22/test/setjmp.c	2002-11-29 14:54:11.000000000 +0100
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <setjmp.h>
+#include <signal.h>
+#include <unistd.h>
+
+static jmp_buf env;
+static void signal_handler();
+
+int main() {
+  int returned_from_longjump, processing = 10;
+  unsigned int time_interval = 4;
+  if ((returned_from_longjump = setjmp(env)) != 0) {
+    switch (returned_from_longjump) {
+    case SIGINT:
+      printf("longjumped from interrupt %d\n",SIGINT);
+      break;
+    case SIGALRM:
+      printf("longjumped from alarm %d\n",SIGALRM);
+      break;
+    }
+  }
+  signal(SIGINT, signal_handler);
+  signal(SIGALRM, signal_handler);
+  alarm(time_interval);
+  while (processing-- > 0) {
+    printf(" waiting for you to INTERRUPT (cntrl-C) ...\n");
+    sleep(1);
+  }  /* end while forever loop */
+  return 0;
+}
+
+static void signal_handler(int sig) {
+  switch (sig) {
+  case SIGINT:		/* process for interrupt */
+    longjmp(env,sig);
+    /* break never reached */
+  case SIGALRM:		/* process for alarm */
+    longjmp(env,sig);
+    /* break never reached */
+  default:
+    exit(sig);
+  }
+}