|
Packit Service |
51e54d |
libpipeline, a pipeline manipulation library
|
|
Packit Service |
51e54d |
============================================
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
http://libpipeline.nongnu.org/
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
libpipeline is a C library for setting up and running pipelines of
|
|
Packit Service |
51e54d |
processes, without needing to involve shell command-line parsing which is
|
|
Packit Service |
51e54d |
often error-prone and insecure. This alleviates programmers of the need to
|
|
Packit Service |
51e54d |
laboriously construct pipelines using lower-level primitives such as fork(2)
|
|
Packit Service |
51e54d |
and execve(2).
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Full programmers' documentation may be found using 'man libpipeline'.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Installation
|
|
Packit Service |
51e54d |
------------
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
If you need to install libpipeline starting from source code, then you will
|
|
Packit Service |
51e54d |
need these separate packages installed before configuring libpipeline in
|
|
Packit Service |
51e54d |
order to run its test suite:
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
|
|
Packit Service |
51e54d |
check (http://check.sourceforge.net/)
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
See the INSTALL file for general installation instructions.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Building programs with libpipeline
|
|
Packit Service |
51e54d |
----------------------------------
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
libpipeline supplies a pkg-config file which lists appropriate compiler and
|
|
Packit Service |
51e54d |
linker flags for building programs using it. The output of 'pkg-config
|
|
Packit Service |
51e54d |
--cflags libpipeline' should be passed to the compiler (typically CFLAGS)
|
|
Packit Service |
51e54d |
and the output of 'pkg-config --libs libpipeline' should be passed to the
|
|
Packit Service |
51e54d |
linker (typically LDFLAGS).
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
If your program uses the GNU Autotools, then you can put this in
|
|
Packit Service |
51e54d |
configure.ac:
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
PKG_CHECK_MODULES([libpipeline], [libpipeline])
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
... and this in the appropriate Makefile.am (replacing 'program' with the
|
|
Packit Service |
51e54d |
Automake-canonicalised name for your program):
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
AM_CFLAGS = $(libpipeline_CFLAGS)
|
|
Packit Service |
51e54d |
program_LDADD = $(libpipeline_LIBS)
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
The details may vary for particular build systems, but this should be a
|
|
Packit Service |
51e54d |
reasonable start.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
When building with GCC, you should use at least the -Wformat option
|
|
Packit Service |
51e54d |
(included in -Wall) to ensure that the 'sentinel' function attribute is
|
|
Packit Service |
51e54d |
checked. This means that your program will produce a warning if it calls
|
|
Packit Service |
51e54d |
any of the several libpipeline functions that require a trailing NULL
|
|
Packit Service |
51e54d |
without passing that trailing NULL.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Copyright and licensing
|
|
Packit Service |
51e54d |
-----------------------
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Copyright (C) 1994 Markus Armbruster.
|
|
Packit Service |
51e54d |
Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002, 2003, 2004, 2005,
|
|
Packit Service |
51e54d |
2006, 2007, 2008, 2009, 2010
|
|
Packit Service |
51e54d |
Free Software Foundation, Inc.
|
|
Packit Service |
51e54d |
Copyright (C) 2003-2017 Colin Watson.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
libpipeline is free software; you can redistribute it and/or modify
|
|
Packit Service |
51e54d |
it under the terms of the GNU General Public License as published by
|
|
Packit Service |
51e54d |
the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit Service |
51e54d |
your option) any later version.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
libpipeline is distributed in the hope that it will be useful, but
|
|
Packit Service |
51e54d |
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
51e54d |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
51e54d |
General Public License for more details.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
You should have received a copy of the GNU General Public License
|
|
Packit Service |
51e54d |
along with libpipeline; if not, write to the Free Software
|
|
Packit Service |
51e54d |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
|
Packit Service |
51e54d |
USA.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Note on GPL versions
|
|
Packit Service |
51e54d |
--------------------
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
(This note is informative, and if it conflicts with the terms of the licence
|
|
Packit Service |
51e54d |
then the licence is correct. See the full text of the licence in the
|
|
Packit Service |
51e54d |
COPYING file for precise details.)
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
The core source code of libpipeline is licensed under GPL v2 or later.
|
|
Packit Service |
51e54d |
However, libpipeline incorporates parts of the Gnulib portability library,
|
|
Packit Service |
51e54d |
copyrighted by the Free Software Foundation and others, and much of Gnulib
|
|
Packit Service |
51e54d |
is distributed under GPL v3 or later. This means that libpipeline as a
|
|
Packit Service |
51e54d |
whole falls under the terms of the GPL v3 or later. Unless you take special
|
|
Packit Service |
51e54d |
pains to remove the GPL v3 portions, you must therefore follow the terms and
|
|
Packit Service |
51e54d |
conditions of the GPL v3 or later when distributing libpipeline itself, or
|
|
Packit Service |
51e54d |
distributing code linked against it.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Note that this does not require that your own source code be licensed under
|
|
Packit Service |
51e54d |
the GPL v3, contrary to popular misunderstanding. However, you must be
|
|
Packit Service |
51e54d |
prepared to distribute your work as a whole under the terms of the GPL v3 or
|
|
Packit Service |
51e54d |
later, which requires that your licence be compatible with the GPL v3. See
|
|
Packit Service |
51e54d |
http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses if you
|
|
Packit Service |
51e54d |
need advice on compatibility.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
The GPL mainly restricts distribution ("conveying", in the specific language
|
|
Packit Service |
51e54d |
of GPL v3), and is careful not to restrict private use. Therefore, you may
|
|
Packit Service |
51e54d |
write programs for your own use that use libpipeline without needing to
|
|
Packit Service |
51e54d |
license them under GPL v3-compatible terms. If you distribute these
|
|
Packit Service |
51e54d |
programs to others, then you must take care to use compatible licensing.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Credits
|
|
Packit Service |
51e54d |
-------
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
Thanks to Scott James Remnant for code review, Ian Jackson for an extensive
|
|
Packit Service |
51e54d |
design review, and Kees Cook and Matthias Klose for helpful conversations.
|
|
Packit Service |
51e54d |
|
|
Packit Service |
51e54d |
-- Colin Watson <cjwatson@debian.org>
|