Blame README

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>