This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH] Export psignal on all platforms
- From: "Yaakov (Cygwin/X)" <yselkowitz at users dot sourceforge dot net>
- To: newlib <newlib at sources dot redhat dot com>
- Date: Wed, 04 May 2011 05:52:47 -0500
- Subject: [PATCH] Export psignal on all platforms
I'm looking to implement psignal(3) on Cygwin, but I see no reason not
to open it up to all platforms (or at least those that support
HAVE_SIGNAL_DIR).
Patch and new file attached.
Yaakov
Cygwin/X
2011-05-04 Yaakov Selkowitz <yselkowitz@...>
* libc/include/signal.h (psignal): Declare.
* libc/sys/linux/psignal.c: Move from here...
* libc/signal/psignal.c: ... to here. Document.
* libc/sys/linux/Makefile.am (GENERAL_SOURCES): Move psignal.c from here...
* libc/signal/Makefile.am (LIB_SOURCES): ... to here.
(CHEWOUT_FILES): Add psignal.def.
* libc/sys/linux/Makefile.in: Regenerate.
* libc/signal/Makefile.in: Ditto.
* libc/signal/signal.tex: Add references to psignal.
Index: libc/include/signal.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/include/signal.h,v
retrieving revision 1.6
diff -u -r1.6 signal.h
--- libc/include/signal.h 12 Jan 2011 11:49:27 -0000 1.6
+++ libc/include/signal.h 4 May 2011 07:41:18 -0000
@@ -24,6 +24,7 @@
#ifndef _REENT_ONLY
_sig_func_ptr _EXFUN(signal, (int, _sig_func_ptr));
int _EXFUN(raise, (int));
+void _EXFUN(psignal, (int, const char *));
#endif
_END_STD_C
Index: libc/signal/Makefile.am
===================================================================
RCS file: /cvs/src/src/newlib/libc/signal/Makefile.am,v
retrieving revision 1.3
diff -u -r1.3 Makefile.am
--- libc/signal/Makefile.am 11 Apr 2006 19:02:09 -0000 1.3
+++ libc/signal/Makefile.am 4 May 2011 07:41:19 -0000
@@ -4,7 +4,7 @@
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
-LIB_SOURCES = raise.c signal.c
+LIB_SOURCES = psignal.c raise.c signal.c
libsignal_la_LDFLAGS = -Xcompiler -nostdlib
@@ -21,7 +21,7 @@
include $(srcdir)/../../Makefile.shared
-CHEWOUT_FILES = raise.def signal.def
+CHEWOUT_FILES = psignal.def raise.def signal.def
SUFFIXES = .def
Index: libc/signal/Makefile.in
===================================================================
RCS file: /cvs/src/src/newlib/libc/signal/Makefile.in,v
retrieving revision 1.22
diff -u -r1.22 Makefile.in
--- libc/signal/Makefile.in 16 Dec 2010 21:59:02 -0000 1.22
+++ libc/signal/Makefile.in 4 May 2011 07:41:19 -0000
@@ -55,12 +55,13 @@
ARFLAGS = cru
lib_a_AR = $(AR) $(ARFLAGS)
lib_a_LIBADD =
-am__objects_1 = lib_a-raise.$(OBJEXT) lib_a-signal.$(OBJEXT)
+am__objects_1 = lib_a-psignal.$(OBJEXT) lib_a-raise.$(OBJEXT) \
+ lib_a-signal.$(OBJEXT)
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
LTLIBRARIES = $(noinst_LTLIBRARIES)
libsignal_la_LIBADD =
-am__objects_2 = raise.lo signal.lo
+am__objects_2 = psignal.lo raise.lo signal.lo
@USE_LIBTOOL_TRUE@am_libsignal_la_OBJECTS = $(am__objects_2)
libsignal_la_OBJECTS = $(am_libsignal_la_OBJECTS)
libsignal_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -228,7 +229,7 @@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = cygnus
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
-LIB_SOURCES = raise.c signal.c
+LIB_SOURCES = psignal.c raise.c signal.c
libsignal_la_LDFLAGS = -Xcompiler -nostdlib
@USE_LIBTOOL_TRUE@noinst_LTLIBRARIES = libsignal.la
@USE_LIBTOOL_TRUE@libsignal_la_SOURCES = $(LIB_SOURCES)
@@ -237,7 +238,7 @@
@USE_LIBTOOL_FALSE@noinst_LIBRARIES = lib.a
@USE_LIBTOOL_FALSE@lib_a_SOURCES = $(LIB_SOURCES)
@USE_LIBTOOL_FALSE@lib_a_CFLAGS = $(AM_CFLAGS)
-CHEWOUT_FILES = raise.def signal.def
+CHEWOUT_FILES = psignal.def raise.def signal.def
SUFFIXES = .def
CHEW = ../../doc/makedoc -f $(srcdir)/../../doc/doc.str
TARGETDOC = ../tmp.texi
@@ -310,6 +311,12 @@
.c.lo:
$(LTCOMPILE) -c -o $@ $<
+lib_a-psignal.o: psignal.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-psignal.o `test -f 'psignal.c' || echo '$(srcdir)/'`psignal.c
+
+lib_a-psignal.obj: psignal.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-psignal.obj `if test -f 'psignal.c'; then $(CYGPATH_W) 'psignal.c'; else $(CYGPATH_W) '$(srcdir)/psignal.c'; fi`
+
lib_a-raise.o: raise.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-raise.o `test -f 'raise.c' || echo '$(srcdir)/'`raise.c
Index: libc/signal/signal.tex
===================================================================
RCS file: /cvs/src/src/newlib/libc/signal/signal.tex,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 signal.tex
--- libc/signal/signal.tex 17 Feb 2000 19:39:47 -0000 1.1.1.1
+++ libc/signal/signal.tex 4 May 2011 07:41:19 -0000
@@ -59,11 +59,15 @@
reliable from signal handlers.)
@menu
+* psignal:: Print a signal message to standard error
* raise:: Send a signal
* signal:: Specify handler subroutine for a signal
@end menu
@page
+@include signal/psignal.def
+
+@page
@include signal/raise.def
@page
Index: libc/sys/linux/Makefile.am
===================================================================
RCS file: /cvs/src/src/newlib/libc/sys/linux/Makefile.am,v
retrieving revision 1.49
diff -u -r1.49 Makefile.am
--- libc/sys/linux/Makefile.am 19 Aug 2009 20:04:43 -0000 1.49
+++ libc/sys/linux/Makefile.am 4 May 2011 07:41:19 -0000
@@ -72,7 +72,6 @@
process.c \
prof-freq.c \
profile.c \
- psignal.c \
pwrite.c \
raise.c \
realloc.c \
Index: libc/sys/linux/Makefile.in
===================================================================
RCS file: /cvs/src/src/newlib/libc/sys/linux/Makefile.in,v
retrieving revision 1.62
diff -u -r1.62 Makefile.in
--- libc/sys/linux/Makefile.in 16 Dec 2010 21:59:06 -0000 1.62
+++ libc/sys/linux/Makefile.in 4 May 2011 07:59:14 -0000
@@ -82,24 +82,23 @@
lib_a-mtrim.$(OBJEXT) lib_a-mtrimr.$(OBJEXT) \
lib_a-ntp_gettime.$(OBJEXT) lib_a-pread.$(OBJEXT) \
lib_a-process.$(OBJEXT) lib_a-prof-freq.$(OBJEXT) \
- lib_a-profile.$(OBJEXT) lib_a-psignal.$(OBJEXT) \
- lib_a-pwrite.$(OBJEXT) lib_a-raise.$(OBJEXT) \
- lib_a-realloc.$(OBJEXT) lib_a-reallocr.$(OBJEXT) \
- lib_a-rename.$(OBJEXT) lib_a-resource.$(OBJEXT) \
- lib_a-sched.$(OBJEXT) lib_a-select.$(OBJEXT) \
- lib_a-seteuid.$(OBJEXT) lib_a-sethostid.$(OBJEXT) \
- lib_a-sethostname.$(OBJEXT) lib_a-shm_open.$(OBJEXT) \
- lib_a-shm_unlink.$(OBJEXT) lib_a-sig.$(OBJEXT) \
- lib_a-sigaction.$(OBJEXT) lib_a-sigqueue.$(OBJEXT) \
- lib_a-signal.$(OBJEXT) lib_a-siglongjmp.$(OBJEXT) \
- lib_a-sigset.$(OBJEXT) lib_a-sigwait.$(OBJEXT) \
- lib_a-socket.$(OBJEXT) lib_a-sleep.$(OBJEXT) \
- lib_a-strsignal.$(OBJEXT) lib_a-strverscmp.$(OBJEXT) \
- lib_a-sysconf.$(OBJEXT) lib_a-sysctl.$(OBJEXT) \
- lib_a-systat.$(OBJEXT) lib_a-tcdrain.$(OBJEXT) \
- lib_a-tcsendbrk.$(OBJEXT) lib_a-termios.$(OBJEXT) \
- lib_a-time.$(OBJEXT) lib_a-usleep.$(OBJEXT) \
- lib_a-versionsort.$(OBJEXT)
+ lib_a-profile.$(OBJEXT) lib_a-pwrite.$(OBJEXT) \
+ lib_a-raise.$(OBJEXT) lib_a-realloc.$(OBJEXT) \
+ lib_a-reallocr.$(OBJEXT) lib_a-rename.$(OBJEXT) \
+ lib_a-resource.$(OBJEXT) lib_a-sched.$(OBJEXT) \
+ lib_a-select.$(OBJEXT) lib_a-seteuid.$(OBJEXT) \
+ lib_a-sethostid.$(OBJEXT) lib_a-sethostname.$(OBJEXT) \
+ lib_a-shm_open.$(OBJEXT) lib_a-shm_unlink.$(OBJEXT) \
+ lib_a-sig.$(OBJEXT) lib_a-sigaction.$(OBJEXT) \
+ lib_a-sigqueue.$(OBJEXT) lib_a-signal.$(OBJEXT) \
+ lib_a-siglongjmp.$(OBJEXT) lib_a-sigset.$(OBJEXT) \
+ lib_a-sigwait.$(OBJEXT) lib_a-socket.$(OBJEXT) \
+ lib_a-sleep.$(OBJEXT) lib_a-strsignal.$(OBJEXT) \
+ lib_a-strverscmp.$(OBJEXT) lib_a-sysconf.$(OBJEXT) \
+ lib_a-sysctl.$(OBJEXT) lib_a-systat.$(OBJEXT) \
+ lib_a-tcdrain.$(OBJEXT) lib_a-tcsendbrk.$(OBJEXT) \
+ lib_a-termios.$(OBJEXT) lib_a-time.$(OBJEXT) \
+ lib_a-usleep.$(OBJEXT) lib_a-versionsort.$(OBJEXT)
am__objects_2 = lib_a-aio64.$(OBJEXT) lib_a-confstr.$(OBJEXT) \
lib_a-ctermid.$(OBJEXT) lib_a-fclean.$(OBJEXT) \
lib_a-fpathconf.$(OBJEXT) lib_a-fstab.$(OBJEXT) \
@@ -141,8 +140,8 @@
mq_close.lo mq_getattr.lo mq_notify.lo mq_open.lo \
mq_receive.lo mq_send.lo mq_setattr.lo mq_unlink.lo msize.lo \
msizer.lo mstats.lo mtrim.lo mtrimr.lo ntp_gettime.lo pread.lo \
- process.lo prof-freq.lo profile.lo psignal.lo pwrite.lo \
- raise.lo realloc.lo reallocr.lo rename.lo resource.lo sched.lo \
+ process.lo prof-freq.lo profile.lo pwrite.lo raise.lo \
+ realloc.lo reallocr.lo rename.lo resource.lo sched.lo \
select.lo seteuid.lo sethostid.lo sethostname.lo shm_open.lo \
shm_unlink.lo sig.lo sigaction.lo sigqueue.lo signal.lo \
siglongjmp.lo sigset.lo sigwait.lo socket.lo sleep.lo \
@@ -396,7 +395,6 @@
process.c \
prof-freq.c \
profile.c \
- psignal.c \
pwrite.c \
raise.c \
realloc.c \
@@ -865,12 +863,6 @@
lib_a-profile.obj: profile.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-profile.obj `if test -f 'profile.c'; then $(CYGPATH_W) 'profile.c'; else $(CYGPATH_W) '$(srcdir)/profile.c'; fi`
-lib_a-psignal.o: psignal.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-psignal.o `test -f 'psignal.c' || echo '$(srcdir)/'`psignal.c
-
-lib_a-psignal.obj: psignal.c
- $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-psignal.obj `if test -f 'psignal.c'; then $(CYGPATH_W) 'psignal.c'; else $(CYGPATH_W) '$(srcdir)/psignal.c'; fi`
-
lib_a-pwrite.o: pwrite.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-pwrite.o `test -f 'pwrite.c' || echo '$(srcdir)/'`pwrite.c
Index: libc/sys/linux/sys/signal.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/sys/linux/sys/signal.h,v
retrieving revision 1.8
diff -u -r1.8 signal.h
--- libc/sys/linux/sys/signal.h 12 Jan 2011 11:49:28 -0000 1.8
+++ libc/sys/linux/sys/signal.h 4 May 2011 07:41:19 -0000
@@ -37,7 +37,6 @@
#include <_ansi.h>
int _EXFUN(kill, (int, int));
-_VOID _EXFUN(psignal, (int, const char *));
int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
int _EXFUN(sigaddset, (sigset_t *, const int));
int _EXFUN(sigdelset, (sigset_t *, const int));
/* Copyright 2002, 2011 Red Hat Inc. */
/*
FUNCTION
<<psignal>>---print a signal message on standard error
INDEX
psignal
ANSI_SYNOPSIS
#include <stdio.h>
void psignal(int <[signal]>, const char *<[prefix]>);
TRAD_SYNOPSIS
#include <stdio.h>
void psignal(<[signal]>, <[prefix]>)
int <[signal]>;
const char *<[prefix]>;
DESCRIPTION
Use <<psignal>> to print (on standard error) a signal message
corresponding to the value of the signal number <[signal]>.
Unless you use <<NULL>> as the value of the argument <[prefix]>, the
signal message will begin with the string at <[prefix]>, followed by a
colon and a space (<<: >>). The remainder of the signal message is one
of the strings described for <<strsignal>>.
RETURNS
<<psignal>> returns no result.
PORTABILITY
POSIX.1-2008 requires <<psignal>>, but the strings issued vary from one
implementation to another.
Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
<<lseek>>, <<read>>, <<sbrk>>, <<write>>.
*/
#include <_ansi.h>
#include <stdio.h>
#include <string.h>
_VOID
_DEFUN(psignal, (sig, s),
int sig _AND
_CONST char *s)
{
if (s != NULL && *s != '\0')
fprintf (stderr, "%s: %s\n", s, strsignal (sig));
else
fprintf (stderr, "%s\n", strsignal (sig));
}