[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCHv2 2/3] forkpty, openpty: split functions into new modules
From: |
Eric Blake |
Subject: |
[PATCHv2 2/3] forkpty, openpty: split functions into new modules |
Date: |
Thu, 18 Mar 2010 20:28:37 -0600 |
The pty module was doing too much - replacing the header and checking
for functions. In the future, when we provide a working forkpty for
Solaris and HP-UX, and a stub for mingw, then the separation will be
even more useful.
* modules/pty (Makefile.am): Substitute new witnesses.
(Libraries): Move library detection...
* modules/forkpty: ...into new module.
* modules/openpty: Another new module.
* modules/pty-tests: Rename and split...
* modules/forkpty-tests: ...to this...
* modules/openpty-tests: ...and this.
* tests/test-pty.c: Rename and split...
* tests/test-forkpty.c: ...to this...
* tests/test-openpty.c: ...and this.
* m4/pty_h.m4 (gl_PTY_H_DEFAULTS): Add new witnesses.
(gl_PTY): Split library searching...
* m4/pty.m4 (gl_PTY_LIB): ...into new file.
(gl_FORKPTY, gl_OPENPTY): New macros.
* lib/pty.in.h (forkpty, openpty): Honor new witnesses.
* NEWS: Mention the split.
* MODULES.html.sh (Misc): Document the modules.
* doc/glibc-functions/forkpty.texi (forkpty): Likewise.
* doc/glibc-functions/openpty.texi (openpty): Likewise.
Signed-off-by: Eric Blake <address@hidden>
---
ChangeLog | 23 +++++++++++++++++++++++
MODULES.html.sh | 3 +++
NEWS | 4 ++++
doc/glibc-functions/forkpty.texi | 2 +-
doc/glibc-functions/openpty.texi | 2 +-
lib/pty.in.h | 8 ++++----
m4/pty.m4 | 31 +++++++++++++++++++++++++++++++
m4/pty_h.m4 | 18 +++++-------------
modules/forkpty | 26 ++++++++++++++++++++++++++
modules/forkpty-tests | 8 ++++++++
modules/openpty | 26 ++++++++++++++++++++++++++
modules/openpty-tests | 8 ++++++++
modules/pty | 2 ++
modules/pty-tests | 8 --------
tests/{test-pty.c => test-forkpty.c} | 12 +-----------
tests/{test-pty.c => test-openpty.c} | 19 +------------------
16 files changed, 144 insertions(+), 56 deletions(-)
create mode 100644 m4/pty.m4
create mode 100644 modules/forkpty
create mode 100644 modules/forkpty-tests
create mode 100644 modules/openpty
create mode 100644 modules/openpty-tests
delete mode 100644 modules/pty-tests
copy tests/{test-pty.c => test-forkpty.c} (79%)
rename tests/{test-pty.c => test-openpty.c} (75%)
diff --git a/ChangeLog b/ChangeLog
index 73d2cd5..b5d0d63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
2010-03-18 Eric Blake <address@hidden>
+ forkpty, openpty: split functions into new modules
+ * modules/pty (Makefile.am): Substitute new witnesses.
+ (Libraries): Move library detection...
+ * modules/forkpty: ...into new module.
+ * modules/openpty: Another new module.
+ * modules/pty-tests: Rename and split...
+ * modules/forkpty-tests: ...to this...
+ * modules/openpty-tests: ...and this.
+ * tests/test-pty.c: Rename and split...
+ * tests/test-forkpty.c: ...to this...
+ * tests/test-openpty.c: ...and this.
+ * m4/pty_h.m4 (gl_PTY_H_DEFAULTS): Add new witnesses.
+ (gl_PTY): Split library searching...
+ * m4/pty.m4 (gl_PTY_LIB): ...into new file.
+ (gl_FORKPTY, gl_OPENPTY): New macros.
+ * lib/pty.in.h (forkpty, openpty): Honor new witnesses.
+ * NEWS: Mention the split.
+ * MODULES.html.sh (Misc): Document the modules.
+ * doc/glibc-functions/forkpty.texi (forkpty): Likewise.
+ * doc/glibc-functions/openpty.texi (openpty): Likewise.
+
+2010-03-18 Eric Blake <address@hidden>
+
pty: improve replacement header
* lib/pty.in.h: New file.
* modules/pty (Files): Ship it.
diff --git a/MODULES.html.sh b/MODULES.html.sh
index 080c60a..b0fbe39 100755
--- a/MODULES.html.sh
+++ b/MODULES.html.sh
@@ -3143,6 +3143,7 @@ func_all_modules ()
func_module exitfail
func_module error
func_module extensions
+ func_module forkpty
func_module getdomainname
func_module xgetdomainname
func_module getloadavg
@@ -3150,9 +3151,11 @@ func_all_modules ()
func_module getusershell
func_module lib-symbol-visibility
func_module nproc
+ func_module openpty
func_module physmem
func_module posixver
func_module progname
+ func_module pty
func_module quotearg
func_module quote
func_module readutmp
diff --git a/NEWS b/NEWS
index ad639dd..0074492 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,10 @@ User visible incompatible changes
Date Modules Changes
+2010-03-18 pty This module now only declares the pty.h header.
+ Use the new modules 'forkpty' or 'openpty' to
+ get the functions that were previously provided.
+
2010-03-05 exit This module is deprecated, use 'stdlib' directly
instead. It will be removed 2011-01-01.
diff --git a/doc/glibc-functions/forkpty.texi b/doc/glibc-functions/forkpty.texi
index 7701a38..8a86511 100644
--- a/doc/glibc-functions/forkpty.texi
+++ b/doc/glibc-functions/forkpty.texi
@@ -2,7 +2,7 @@ forkpty
@subsection @code{forkpty}
@findex forkpty
-Gnulib module: pty
+Gnulib module: forkpty
Portability problems fixed by Gnulib:
@itemize
diff --git a/doc/glibc-functions/openpty.texi b/doc/glibc-functions/openpty.texi
index 83975a9..7eb528e 100644
--- a/doc/glibc-functions/openpty.texi
+++ b/doc/glibc-functions/openpty.texi
@@ -2,7 +2,7 @@ openpty
@subsection @code{openpty}
@findex openpty
-Gnulib module: pty
+Gnulib module: openpty
Portability problems fixed by Gnulib:
@itemize
diff --git a/lib/pty.in.h b/lib/pty.in.h
index 8d80f8a..1b7bf82 100644
--- a/lib/pty.in.h
+++ b/lib/pty.in.h
@@ -44,21 +44,21 @@
/* Declare overridden functions. */
-#if 1 /* FIXME - split forkpty into separate module */
+#if @GNULIB_FORKPTY@
#elif defined GNULIB_POSIXCHECK
# undef forkpty
# if HAVE_RAW_DECL_FORKPTY
_GL_WARN_ON_USE (forkpty, "forkpty is not declared consistently - "
- "use gnulib module pty for portability");
+ "use gnulib module forkpty for portability");
# endif
#endif
-#if 1 /* FIXME - split openpty into separate module */
+#if @GNULIB_OPENPTY@
#elif defined GNULIB_POSIXCHECK
# undef openpty
# if HAVE_RAW_DECL_OPENPTY
_GL_WARN_ON_USE (openpty, "openpty is not declared consistently - "
- "use gnulib module pty for portability");
+ "use gnulib module openpty for portability");
# endif
#endif
diff --git a/m4/pty.m4 b/m4/pty.m4
new file mode 100644
index 0000000..f2a5664
--- /dev/null
+++ b/m4/pty.m4
@@ -0,0 +1,31 @@
+# pty.m4 serial 1
+dnl Copyright (C) 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_PTY_LIB
+# ----------
+# Define automake variable PTY_LIB to the library needed (if any).
+AC_DEFUN([gl_PTY_LIB],
+[
+ # Check for the library required for forkpty.
+ PTY_LIB=
+ save_LIBS="$LIBS"
+ AC_SEARCH_LIBS([forkpty], [util],
+ [if test "$ac_cv_search_forkpty" != "none required"; then
+ PTY_LIB="$ac_cv_search_forkpty"
+ fi])
+ LIBS="$save_LIBS"
+ AC_SUBST([PTY_LIB])
+])
+
+AC_DEFUN([gl_FORKPTY],
+[
+ AC_REQUIRE([gl_PTY_LIB])
+])
+
+AC_DEFUN([gl_OPENPTY],
+[
+ AC_REQUIRE([gl_PTY_LIB])
+])
diff --git a/m4/pty_h.m4 b/m4/pty_h.m4
index 3b6d910..05ac357 100644
--- a/m4/pty_h.m4
+++ b/m4/pty_h.m4
@@ -1,4 +1,4 @@
-# pty_h.m4 serial 2
+# pty_h.m4 serial 3
dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -7,13 +7,11 @@ dnl with or without modifications, as long as this notice is
preserved.
# gl_PTY
# ------
# Make sure that pty.h provides forkpty, or sets up a replacement header.
-# Also define automake variable PTY_LIB to the library needed (if any).
AC_DEFUN_ONCE([gl_PTY],
[
AC_REQUIRE([gl_PTY_H_DEFAULTS])
- PTY_LIB=''
- # First make sure that pty.h provides forkpty, or setup the replacement.
+ # Make sure that pty.h provides forkpty, or setup the replacement.
AC_CHECK_HEADERS_ONCE([pty.h])
if test $ac_cv_header_pty_h != yes; then
HAVE_PTY_H=0
@@ -24,6 +22,7 @@ AC_DEFUN_ONCE([gl_PTY],
if test $ac_cv_header_libutil_h = yes; then
HAVE_LIBUTIL_H=1
fi
+ dnl FIXME - move this into forkpty module, when replacement is provided
AC_CHECK_DECLS([forkpty],,, [[
#if HAVE_UTIL_H
# include <util.h>
@@ -42,15 +41,6 @@ AC_DEFUN_ONCE([gl_PTY],
dnl <pty.h> is always overridden, because of GNULIB_POSIXCHECK.
gl_CHECK_NEXT_HEADERS([pty.h])
- # Second check for the library required for forkpty.
- save_LIBS="$LIBS"
- AC_SEARCH_LIBS([forkpty], [util],
- [if test "$ac_cv_search_forkpty" != "none required"; then
- PTY_LIB="$ac_cv_search_forkpty"
- fi])
- LIBS="$save_LIBS"
- AC_SUBST([PTY_LIB])
-
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[
@@ -75,6 +65,8 @@ AC_DEFUN([gl_PTY_MODULE_INDICATOR],
AC_DEFUN([gl_PTY_H_DEFAULTS],
[
+ GNULIB_FORKPTY=0; AC_SUBST([GNULIB_FORKPTY])
+ GNULIB_OPENPTY=0; AC_SUBST([GNULIB_OPENPTY])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_UTIL_H=0; AC_SUBST([HAVE_UTIL_H])
HAVE_LIBUTIL_H=0; AC_SUBST([HAVE_LIBUTIL_H])
diff --git a/modules/forkpty b/modules/forkpty
new file mode 100644
index 0000000..5bfe0a5
--- /dev/null
+++ b/modules/forkpty
@@ -0,0 +1,26 @@
+Description:
+Provide the forkpty() function.
+
+Files:
+m4/pty.m4
+
+Depends-on:
+pty
+
+configure.ac:
+gl_FORKPTY
+gl_PTY_MODULE_INDICATOR([forkpty])
+
+Makefile.am:
+
+Include:
+<pty.h>
+
+Link:
+$(PTY_LIB)
+
+License:
+LGPL
+
+Maintainer:
+Simon Josefsson
diff --git a/modules/forkpty-tests b/modules/forkpty-tests
new file mode 100644
index 0000000..744d684
--- /dev/null
+++ b/modules/forkpty-tests
@@ -0,0 +1,8 @@
+Files:
+tests/signature.h
+tests/test-forkpty.c
+
+Makefile.am:
+TESTS += test-forkpty
+check_PROGRAMS += test-forkpty
+test_forkpty_LDADD = $(LDADD) $(PTY_LIB)
diff --git a/modules/openpty b/modules/openpty
new file mode 100644
index 0000000..68e00db
--- /dev/null
+++ b/modules/openpty
@@ -0,0 +1,26 @@
+Description:
+Provide the openpty() function.
+
+Files:
+m4/pty.m4
+
+Depends-on:
+pty
+
+configure.ac:
+gl_OPENPTY
+gl_PTY_MODULE_INDICATOR([openpty])
+
+Makefile.am:
+
+Include:
+<pty.h>
+
+Link:
+$(PTY_LIB)
+
+License:
+LGPL
+
+Maintainer:
+Simon Josefsson
diff --git a/modules/openpty-tests b/modules/openpty-tests
new file mode 100644
index 0000000..8b730e6
--- /dev/null
+++ b/modules/openpty-tests
@@ -0,0 +1,8 @@
+Files:
+tests/signature.h
+tests/test-openpty.c
+
+Makefile.am:
+TESTS += test-openpty
+check_PROGRAMS += test-openpty
+test_openpty_LDADD = $(LDADD) $(PTY_LIB)
diff --git a/modules/pty b/modules/pty
index ef064be..8ea7ed3 100644
--- a/modules/pty
+++ b/modules/pty
@@ -25,6 +25,8 @@ pty.h: pty.in.h $(CXXDEFS_H) $(WARN_ON_USE_H)
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''NEXT_PTY_H''@|$(NEXT_PTY_H)|g' \
+ -e 's|@''GNULIB_FORKPTY''@|$(GNULIB_FORKPTY)|g' \
+ -e 's|@''GNULIB_OPENPTY''@|$(GNULIB_OPENPTY)|g' \
-e 's|@''HAVE_UTIL_H''@|$(HAVE_UTIL_H)|g' \
-e 's|@''HAVE_LIBUTIL_H''@|$(HAVE_LIBUTIL_H)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
diff --git a/modules/pty-tests b/modules/pty-tests
deleted file mode 100644
index 870d518..0000000
--- a/modules/pty-tests
+++ /dev/null
@@ -1,8 +0,0 @@
-Files:
-tests/signature.h
-tests/test-pty.c
-
-Makefile.am:
-TESTS += test-pty
-check_PROGRAMS += test-pty
-test_pty_LDADD = $(LDADD) $(PTY_LIB)
diff --git a/tests/test-pty.c b/tests/test-forkpty.c
similarity index 79%
copy from tests/test-pty.c
copy to tests/test-forkpty.c
index 72e126b..d87a107 100644
--- a/tests/test-pty.c
+++ b/tests/test-forkpty.c
@@ -1,4 +1,4 @@
-/* Test of pty.h and openpty/forkpty functions.
+/* Test of pty.h and forkpty function.
Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -23,8 +23,6 @@
#include "signature.h"
SIGNATURE_CHECK (forkpty, int, (int *, char *, struct termios *,
struct winsize *));
-SIGNATURE_CHECK (openpty, int, (int *, int *, char *, struct termios *,
- struct winsize *));
#include <stdio.h>
@@ -33,14 +31,6 @@ main ()
{
int res;
int amaster;
- int aslave;
-
- res = openpty (&amaster, &aslave, NULL, NULL, NULL);
- if (res != 0)
- {
- printf ("openpty returned %d\n", res);
- return 1;
- }
res = forkpty (&amaster, NULL, NULL, NULL);
if (res == 0)
diff --git a/tests/test-pty.c b/tests/test-openpty.c
similarity index 75%
rename from tests/test-pty.c
rename to tests/test-openpty.c
index 72e126b..255aeb0 100644
--- a/tests/test-pty.c
+++ b/tests/test-openpty.c
@@ -1,4 +1,4 @@
-/* Test of pty.h and openpty/forkpty functions.
+/* Test of pty.h and openpty function.
Copyright (C) 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -21,8 +21,6 @@
#include <pty.h>
#include "signature.h"
-SIGNATURE_CHECK (forkpty, int, (int *, char *, struct termios *,
- struct winsize *));
SIGNATURE_CHECK (openpty, int, (int *, int *, char *, struct termios *,
struct winsize *));
@@ -42,20 +40,5 @@ main ()
return 1;
}
- res = forkpty (&amaster, NULL, NULL, NULL);
- if (res == 0)
- {
- /* child process */
- }
- else if (res > 0)
- {
- /* parent */
- }
- else
- {
- printf ("forkpty returned %d\n", res);
- return 1;
- }
-
return 0;
}
--
1.6.6.1
- Re: [PATCH 2/3] forkpty, openpty: split functions into new modules, (continued)
- Re: [PATCH 2/3] forkpty, openpty: split functions into new modules, Bruno Haible, 2010/03/19
- [PATCH 1/3] pty: improve replacement header, Eric Blake, 2010/03/18
- Re: [PATCH 1/3] pty: improve replacement header, Bruno Haible, 2010/03/18
- Re: [PATCH 1/3] pty: improve replacement header, Bruno Haible, 2010/03/19
- [PATCH 3/3] forkpty, openpty: prefer glibc's const-safe prototype, Eric Blake, 2010/03/18
- Re: [PATCH 3/3] forkpty, openpty: prefer glibc's const-safe prototype, Bruno Haible, 2010/03/18
- Re: [PATCH 3/3] forkpty, openpty: prefer glibc's const-safe prototype, Eric Blake, 2010/03/18
- [PATCHv2 1/3] pty: improve replacement header, Eric Blake, 2010/03/18
- [PATCHv2 2/3] forkpty, openpty: split functions into new modules,
Eric Blake <=
- Re: [PATCHv2 2/3] forkpty, openpty: split functions into new modules, Bruno Haible, 2010/03/21
- Re: [PATCHv2 2/3] forkpty, openpty: split functions into new modules, Eric Blake, 2010/03/22
- [PATCHv2 3/3] forkpty, openpty: prefer glibc's const-safe prototype, Eric Blake, 2010/03/18
- Re: [PATCHv2 3/3] forkpty, openpty: prefer glibc's const-safe prototype, Bruno Haible, 2010/03/19