From a6a89eb4477289063cb9ef1cc414b9e748f877f9 Mon Sep 17 00:00:00 2001
From: Eric Andersen <andersen@codepoet.org>
Date: Wed, 18 Oct 2000 21:06:41 +0000
Subject: Signal test.  One test written and already found a bug.  -Erik

---
 test/signal/.cvsignore |  4 +++
 test/signal/Makefile   | 49 +++++++++++++++++++++++++
 test/signal/signal.c   | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 151 insertions(+)
 create mode 100644 test/signal/.cvsignore
 create mode 100644 test/signal/Makefile
 create mode 100644 test/signal/signal.c

(limited to 'test')

diff --git a/test/signal/.cvsignore b/test/signal/.cvsignore
new file mode 100644
index 000000000..9ae898d74
--- /dev/null
+++ b/test/signal/.cvsignore
@@ -0,0 +1,4 @@
+signal
+signal.o
+signal_glibc
+signal_glibc.o
diff --git a/test/signal/Makefile b/test/signal/Makefile
new file mode 100644
index 000000000..b41d389f8
--- /dev/null
+++ b/test/signal/Makefile
@@ -0,0 +1,49 @@
+TOPDIR=../../
+include $(TOPDIR)Rules.mak
+
+# Check if 'ls -sh' works or not 
+LSFLAGS = $(shell if ls -sh >/dev/null 2>&1; \
+    then echo "-sh"; else echo "-s" ; fi)
+
+XCFLAGS = -Wall -Os -fomit-frame-pointer -fno-builtin -nostdinc \
+	-I$(TOPDIR)include -I/usr/include/linux
+XLDFLAGS = -nostdlib -s -gc-sections
+EXTRA_LIBS=$(TOPDIR)libc.a
+
+YCFLAGS = -Wall -Os -fomit-frame-pointer
+YLDFLAGS = -s --static 
+
+# Allow alternative stripping tools to be used...
+ifndef $(STRIPTOOL)
+	STRIPTOOL = strip
+endif
+STRIP    = $(STRIPTOOL) --remove-section=.note --remove-section=.comment $@
+
+TARGETS=signal signal_glibc
+
+all: $(TARGETS)
+
+signal: signal.c Makefile $(TOPDIR)libc.a
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs uCLibc: "
+	-@ echo " "
+	$(CC) $(XCFLAGS) -c $< -o $@.o
+	$(CC) $(XLDFLAGS) $@.o -o $@ $(EXTRA_LIBS)
+	-./$@
+	-@ echo " "
+
+signal_glibc: signal.c Makefile $(TOPDIR)libc.a
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs GNU libc: "
+	-@ echo " "
+	$(CC) $(YCFLAGS) -c $< -o $@.o
+	$(CC) $(YLDFLAGS) --static $@.o -o $@
+	-./$@
+	-@ echo " "
+
+clean:
+	rm -f *.[oa] *~ core $(TARGETS)
+
+
diff --git a/test/signal/signal.c b/test/signal/signal.c
new file mode 100644
index 000000000..fc411a1b9
--- /dev/null
+++ b/test/signal/signal.c
@@ -0,0 +1,98 @@
+/* Tester for string functions.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <strings.h>
+#include <fcntl.h>
+#include <signal.h>
+
+
+/* -------------------------------------------------*/
+/* This stuff is common to all the testing routines */
+/* -------------------------------------------------*/
+const char *it = "<UNSET>";	/* Routine name for message routines. */
+size_t errors = 0;
+
+void check (int thing, int number)
+{
+  if (!thing)
+    {
+      printf("%s flunked test %d\n", it, number);
+      ++errors;
+    }
+}
+
+void equal (const char *a, const char *b, int number)
+{
+  check(a != NULL && b != NULL && (strcmp(a, b)==0), number);
+}
+
+
+/* -------------------------------------------------*/
+/* Let the tests begin....                          */
+/* -------------------------------------------------*/
+
+int global_int = 0;
+
+void set_global_int_to_one(int signum)
+{
+    printf("entering set_global_int_to_one\n");
+    global_int = 1;
+    return;
+}
+
+void
+signal_test_1 (void)
+{
+  global_int = 0;
+
+  signal(SIGUSR1, set_global_int_to_one);
+  raise( SIGUSR1);
+  /* This should have first jumped to the signal handler */
+  check ( (global_int == 0), 0);
+
+  signal(SIGUSR1, SIG_DFL);
+  raise( SIGUSR1);
+  printf("Here I am.\n");
+}
+
+
+int
+main (void)
+{
+  int status;
+
+  signal_test_1 ();
+
+  if (errors == 0)
+    {
+      status = EXIT_SUCCESS;
+      printf("No errors.\n");
+    }
+  else
+    {
+      status = EXIT_FAILURE;
+      printf("%d errors.\n", errors);
+    }
+  exit(status);
+}
-- 
cgit v1.2.3