Hello community,

here is the log from the commit of package gnu_parallel for openSUSE:Factory 
checked in at 2015-09-09 20:21:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnu_parallel (Old)
 and      /work/SRC/openSUSE:Factory/.gnu_parallel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnu_parallel"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnu_parallel/gnu_parallel.changes        
2015-07-28 11:43:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/gnu_parallel.changes   
2015-09-09 20:21:18.000000000 +0200
@@ -1,0 +2,8 @@
+Wed Sep  9 07:17:57 UTC 2015 - mplus...@suse.com
+
+- Update to 20150822
+  * If $job->skip() is called in {= =} the job will not be run.
+  * @arg can now be used in {= =}: parallel echo '{= $arg[2] < 5 
+    and $_="j" =}' ::: 1 2 3 ::: 4 5 6
+
+-------------------------------------------------------------------

Old:
----
  parallel-20150722.tar.bz2
  parallel-20150722.tar.bz2.sig

New:
----
  parallel-20150822.tar.bz2
  parallel-20150822.tar.bz2.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnu_parallel.spec ++++++
--- /var/tmp/diff_new_pack.J3q6F7/_old  2015-09-09 20:21:19.000000000 +0200
+++ /var/tmp/diff_new_pack.J3q6F7/_new  2015-09-09 20:21:19.000000000 +0200
@@ -17,17 +17,16 @@
 
 
 Name:           gnu_parallel
-Version:        20150722
+Version:        20150822
 Release:        0
 Summary:        Shell tool for executing jobs in parallel
 License:        GPL-3.0+
 Group:          Productivity/File utilities
 Url:            http://www.gnu.org/software/parallel/
-
 #DL-URL:       http://ftp.gnu.org/gnu/parallel/
-Source:         http://ftp.gnu.org/gnu/parallel/parallel-%version.tar.bz2
-Source2:        http://ftp.gnu.org/gnu/parallel/parallel-%version.tar.bz2.sig
-Source3:        %name.keyring
+Source:         http://ftp.gnu.org/gnu/parallel/parallel-%{version}.tar.bz2
+Source2:        http://ftp.gnu.org/gnu/parallel/parallel-%{version}.tar.bz2.sig
+Source3:        %{name}.keyring
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildArch:      noarch
 
@@ -50,27 +49,27 @@
 This subpackage contains the documentation for Parallel.
 
 %prep
-%setup -qn parallel-%version
+%setup -q -n parallel-%{version}
 
 %build
-%configure --docdir="%_docdir/%name"
+%configure --docdir="%{_docdir}/%{name}"
 make %{?_smp_mflags}
 
 %install
 %make_install
-cp -a CITATION COPYING NEWS README "%buildroot/%_docdir/%name/"
+cp -a CITATION COPYING NEWS README "%{buildroot}/%{_docdir}/%{name}/"
 
 %files
 %defattr(-,root,root)
-%_bindir/niceload
-%_bindir/parallel
-%_bindir/sem
-%_bindir/sql
-%_mandir/man1/*.1*
-%_mandir/man7/*.7*
+%{_bindir}/niceload
+%{_bindir}/parallel
+%{_bindir}/sem
+%{_bindir}/sql
+%{_mandir}/man1/*.1*
+%{_mandir}/man7/*.7*
 
 %files doc
 %defattr(-,root,root)
-%_docdir/%name/
+%{_docdir}/%{name}/
 
 %changelog

++++++ parallel-20150722.tar.bz2 -> parallel-20150822.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/NEWS new/parallel-20150822/NEWS
--- old/parallel-20150722/NEWS  2015-07-22 08:39:02.000000000 +0200
+++ new/parallel-20150822/NEWS  2015-08-22 11:41:38.000000000 +0200
@@ -1,3 +1,46 @@
+20150822
+
+* If $job->skip() is called in {= =} the job will not be run.
+
+* @arg can now be used in {= =}: parallel echo '{= $arg[2] < 5 and
+  $_="j" =}' ::: 1 2 3 ::: 4 5 6
+
+* Version of GNU Parallel that uses PostgreSQL as backend
+  https://github.com/stephen-fralich/parallel-sql/
+
+* A composite genome approach to identify phylogenetically informative
+  data from next-generation sequencing
+  http://www.biomedcentral.com/content/pdf/s12859-015-0632-y.pdf
+
+* SpeedSeq: ultra-fast personal genome analysis and interpretation
+  http://www.nature.com/nmeth/journal/vaop/ncurrent/full/nmeth.3505.html
+
+* GNU Parallel is used in elPrep: https://github.com/ExaScience/elprep
+
+* Who actually reads the code?
+  http://www.fsf.org/blogs/community/who-actually-reads-the-code
+
+* Introduction to GNU Parallel
+  http://erictleung.com/2015/08/06/intro-to-gnu-parallel/
+
+* ¿Alguien se lee el código?
+  http://www.taringa.net/post/linux/18854759/Alguien-se-lee-el-codigo.html
+
+* ¿Quién se lee el código fuente?
+  
https://victorhckinthefreeworld.wordpress.com/2015/08/12/quien-se-lee-el-codigo-fuente/
+
+* Distribution des traitements avec GNU Parallel
+  http://blog.inovia-conseil.fr/?p=226#4
+
+* Эксперимент по проверке, читают ли код открытых проектов
+  http://www.opennet.ru/opennews/art.shtml?num=42718
+
+* 多核心主機搭配 GNU parallel
+  http://blog.zeroplex.tw/2015/08/gnu-parallel.html
+
+* Bug fixes and man page updates.
+
+
 20150722
 
 * If a record fits in a block, --block only reads upto the size of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/README new/parallel-20150822/README
--- old/parallel-20150722/README        2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/README        2015-08-22 11:40:23.000000000 +0200
@@ -40,9 +40,9 @@
 
 Full installation of GNU Parallel is as simple as:
 
-    wget http://ftpmirror.gnu.org/parallel/parallel-20150722.tar.bz2
-    bzip2 -dc parallel-20150722.tar.bz2 | tar xvf -
-    cd parallel-20150722
+    wget http://ftpmirror.gnu.org/parallel/parallel-20150822.tar.bz2
+    bzip2 -dc parallel-20150822.tar.bz2 | tar xvf -
+    cd parallel-20150822
     ./configure && make && sudo make install
 
 
@@ -51,9 +51,9 @@
 If you are not root you can add ~/bin to your path and install in
 ~/bin and ~/share:
 
-    wget http://ftpmirror.gnu.org/parallel/parallel-20150722.tar.bz2
-    bzip2 -dc parallel-20150722.tar.bz2 | tar xvf -
-    cd parallel-20150722
+    wget http://ftpmirror.gnu.org/parallel/parallel-20150822.tar.bz2
+    bzip2 -dc parallel-20150822.tar.bz2 | tar xvf -
+    cd parallel-20150822
     ./configure --prefix=$HOME && make && make install
 
 Or if your system lacks 'make' you can simply copy src/parallel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/configure 
new/parallel-20150822/configure
--- old/parallel-20150722/configure     2015-07-22 08:31:32.000000000 +0200
+++ new/parallel-20150822/configure     2015-08-22 11:40:31.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for parallel 20150722.
+# Generated by GNU Autoconf 2.69 for parallel 20150822.
 #
 # Report bugs to <bug-paral...@gnu.org>.
 #
@@ -579,8 +579,8 @@
 # Identity of this package.
 PACKAGE_NAME='parallel'
 PACKAGE_TARNAME='parallel'
-PACKAGE_VERSION='20150722'
-PACKAGE_STRING='parallel 20150722'
+PACKAGE_VERSION='20150822'
+PACKAGE_STRING='parallel 20150822'
 PACKAGE_BUGREPORT='bug-paral...@gnu.org'
 PACKAGE_URL=''
 
@@ -1203,7 +1203,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures parallel 20150722 to adapt to many kinds of systems.
+\`configure' configures parallel 20150822 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1269,7 +1269,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of parallel 20150722:";;
+     short | recursive ) echo "Configuration of parallel 20150822:";;
    esac
   cat <<\_ACEOF
 
@@ -1345,7 +1345,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-parallel configure 20150722
+parallel configure 20150822
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1362,7 +1362,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by parallel $as_me 20150722, which was
+It was created by parallel $as_me 20150822, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2225,7 +2225,7 @@
 
 # Define the identity of the package.
  PACKAGE='parallel'
- VERSION='20150722'
+ VERSION='20150822'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2867,7 +2867,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by parallel $as_me 20150722, which was
+This file was extended by parallel $as_me 20150822, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -2929,7 +2929,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-parallel config.status 20150722
+parallel config.status 20150822
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/configure.ac 
new/parallel-20150822/configure.ac
--- old/parallel-20150722/configure.ac  2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/configure.ac  2015-08-22 11:40:23.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([parallel], [20150722], [bug-paral...@gnu.org])
+AC_INIT([parallel], [20150822], [bug-paral...@gnu.org])
 AM_INIT_AUTOMAKE([-Wall -Werror foreign])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/niceload 
new/parallel-20150822/src/niceload
--- old/parallel-20150722/src/niceload  2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/src/niceload  2015-08-22 11:40:23.000000000 +0200
@@ -24,7 +24,7 @@
 use strict;
 use Getopt::Long;
 $Global::progname="niceload";
-$Global::version = 20150722;
+$Global::version = 20150822;
 Getopt::Long::Configure("bundling","require_order");
 get_options_from_array(\@ARGV) || die_usage();
 if($opt::version) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel 
new/parallel-20150822/src/parallel
--- old/parallel-20150722/src/parallel  2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/src/parallel  2015-08-22 11:40:23.000000000 +0200
@@ -167,7 +167,8 @@
            $Global::halt_exitstatus =
                ::ceil($Global::total_failed / $Global::total_started * 100);
        } elsif($Global::halt_count) {
-           $Global::halt_exitstatus = ::min($Global::total_failed,101);
+           $Global::halt_exitstatus =
+               ::min(undef_as_zero($Global::total_failed),101);
        }
     }
     wait_and_exit($Global::halt_exitstatus);
@@ -793,7 +794,7 @@
         "tollef" => \$opt::tollef,
         "gnu" => \$opt::gnu,
         "xapply" => \$opt::xapply,
-        "bibtex" => \$opt::bibtex,
+        "bibtex|citation" => \$opt::bibtex,
         "wc|willcite|will-cite|nn|nonotice|no-notice" => \$opt::willcite,
         # Termination and retries
         "halt-on-error|halt=s" => \$opt::halt,
@@ -816,7 +817,7 @@
         "help|h" => \$opt::help,
         "L=f" => \$opt::L,
         "max-lines|l:f" => \$opt::max_lines,
-        "interactive|p" => \$opt::p,
+        "interactive|p" => \$opt::interactive,
         "verbose|t" => \$opt::verbose,
         "version|V" => \$opt::version,
         "minversion|min-version=i" => \$opt::minversion,
@@ -901,7 +902,7 @@
     if(defined $opt::0) { $/ = "\0"; }
     if(defined $opt::d) { $/ = unquote_printf($opt::d) }
     if(defined $opt::tagstring) { $opt::tagstring = 
unquote_printf($opt::tagstring); }
-    if(defined $opt::p) { $Global::interactive = $opt::p; }
+    if(defined $opt::interactive) { $Global::interactive = $opt::interactive; }
     if(defined $opt::q) { $Global::quoting = 1; }
     if(defined $opt::r) { $Global::ignore_empty = 1; }
     if(defined $opt::verbose) { $Global::stderr_verbose = 1; }
@@ -1089,7 +1090,7 @@
 
 sub init_globals {
     # Defaults:
-    $Global::version = 20150722;
+    $Global::version = 20150822;
     $Global::progname = 'parallel';
     $Global::infinity = 2**31;
     $Global::debug = 0;
@@ -3171,8 +3172,15 @@
         $job or next;
         delete $Global::running{$stiff};
         $Global::total_running--;
-        $job->set_exitstatus($? >> 8);
-        $job->set_exitsignal($? & 127);
+       if($job->{'commandline'}{'skip'}) {
+           # $job->skip() was called
+           $job->set_exitstatus(-2);
+           $job->set_exitsignal(0);
+       } else {
+           $job->set_exitstatus($? >> 8);
+           $job->set_exitsignal($? & 127);
+       }
+
         debug("run", "seq ",$job->seq()," died (", $job->exitstatus(), ")");
         $job->set_endtime(::now());
         if($stiff == $Global::tty_taken) {
@@ -4164,6 +4172,9 @@
 
     # TODO add sshlogin and backgrounding
     $self->{'memfree'} = qx{ $script };
+    if(not $self->{'memfree'}) {
+       ::die_bug("Less than 1 byte free");
+    }
     #::debug("mem","New free:",$self->{'memfree'}," ");
 }
 
@@ -4175,25 +4186,33 @@
        #   shellscript for giving available memory in bytes
        if(not $script) {
            my %script_of = (
-               # $ free
-               #              total       used       free     shared    
buffers     cached
-               # Mem:       8075152    4922780    3152372     338856     
233356    1658604
-               # -/+ buffers/cache:    3030820    5044332
-               # Swap:      8286204     116924    8169280
-               "linux" => q{ print (1024*((grep /buffers.cache/, `free`)[0] =~ 
/buffers.cache:\s+\S+\s+(\S+)/)[0]) },
+               # /proc/meminfo
+               # MemFree:          7012 kB
+               # Buffers:         19876 kB
+               # Cached:         431192 kB
+               # SwapCached:          0 kB
+               "linux" =>
+               q[ print 1024 * qx{ ].
+               q[   awk '/^((Swap)?Cached|MemFree|Buffers):/ ].
+               q[     { sum += \$2} END { print sum }' ].
+               q[   /proc/meminfo } ],
                # $ vmstat 1 1
                #     procs           memory                   page             
                 faults       cpu
                # r     b     w      avm    free   re   at    pi   po    fr   
de    sr     in     sy    cs  us sy id
                # 1     0     0   242793  389737    5    1     0    0     0    
0     0    107    978    60   1  1 99
-               "hpux" => q{ print (((reverse `vmstat 1 1`)[0] =~ 
/(?:\d+\D+){4}(\d+)/)[0]*1024) },
+               "hpux" =>
+               q[ print (((reverse `vmstat 1 1`)[0] ].
+               q[   =~ /(?:\d+\D+){4}(\d+)/)[0]*1024) ],
                # $ vmstat 1 2
                # kthr      memory            page            disk          
faults      cpu
                # r b w   swap  free  re  mf pi po fr de sr s3 s4 -- --   in   
sy   cs us sy id
                # 0 0 0 6496720 5170320 68 260 8 2  1  0  0 -0  3  0  0  309 
1371  255  1  2 97
                # 0 0 0 6434088 5072656 7 15  8  0  0  0  0  0 261 0  0 1889 
1899 3222  0  8 92
                #
-               # The last free is really free
-               "solaris" => q{ print (((reverse `vmstat 1 2`)[0] =~ 
/(?:\d+\D+){4}(\d+)/)[0]*1024) },
+               # The second free value is correct
+               "solaris" =>
+               q[ print (((reverse `vmstat 1 2`)[0] ].
+               q[   =~ /(?:\d+\D+){4}(\d+)/)[0]*1024) ],
                "freebsd" => q{
                        for(qx{/sbin/sysctl -a}) {
                            if (/^([^:]+):\s+(.+)\s*$/s) {
@@ -6391,9 +6410,9 @@
     if(not defined $self->{'wrapped'}) {
        my $command = $self->replaced();
        if($opt::shellquote) {
-           # Prepend echo
+           # Prepend \echo (echo no-\ is wrong in csh)
            # and quote twice
-           $command = "echo " .
+           $command = "\\echo " .
                ::shell_quote_scalar(::shell_quote_scalar($command));
        }
        if($opt::cat) {
@@ -6565,7 +6584,7 @@
                 unless($pid) {
                    # Make own process group to be able to kill HUP it later
                    setpgrp;
-                   setpriority(0,0,$nice);
+                   eval { setpriority(0,0,$nice) };
                    exec $shell, "-c", ($bashfunc."@ARGV");
                    die "exec: $!\n";
                }
@@ -7009,7 +7028,8 @@
        open ERR, '>&', $stderr_fh or ::die_bug("Can't dup STDERR: $!");
 
        my $pid;
-       my @setpgrp_wrap = 
('perl','-e',"setpgrp\;setpriority\(0,0,$opt::nice\)\;exec '$Global::shell', 
'-c', \@ARGV");
+       my @setpgrp_wrap = ('perl','-e',
+                           
"setpgrp\;eval\{setpriority\(0,0,$opt::nice\)\}\;exec '$Global::shell', '-c', 
\@ARGV");
        # The eval is needed to catch exception from open3
        eval {
            $pid = ::open3($stdin_fh, ">&OUT", ">&ERR", @setpgrp_wrap, $command)
@@ -7041,8 +7061,12 @@
     my $command = $job->wrapped();
     my $pid;
 
+    if($job->{'commandline'}{'skip'}) {
+       # $job->skip() was called
+       $command = "true";
+    }
     if($Global::interactive or $Global::stderr_verbose) {
-       $command = interactive_start($command);
+       $job->interactive_start();
     }
     $job->openoutputfiles();
     my($stdout_fh,$stderr_fh) = ($job->fh(1,"w"),$job->fh(2,"w"));
@@ -7087,7 +7111,8 @@
        open ERR, '>&', $stderr_fh or ::die_bug("Can't dup STDERR: $!");
        *IN = *STDIN;
        # The eval is needed to catch exception from open3
-       my @setpgrp_wrap = 
('perl','-e',"setpgrp\;setpriority\(0,0,$opt::nice\)\;exec '$Global::shell', 
'-c', \@ARGV");
+       my @setpgrp_wrap = ('perl','-e',
+                           
"setpgrp\;eval\{setpriority\(0,0,$opt::nice\)\}\;exec '$Global::shell', '-c', 
\@ARGV");
        eval {
            $pid = ::open3("<&IN", ">&OUT", ">&ERR", @setpgrp_wrap, $command)
                || ::die_bug("open3-<IN");
@@ -7120,7 +7145,8 @@
 }
 
 sub interactive_start {
-    my $command = shift;
+    my $self = shift;
+    my $command = $self->wrapped();
     if($Global::interactive) {
        ::status("$command ?...");
        open(my $tty_fh, "<", "/dev/tty") || ::die_bug("interactive-tty");
@@ -7128,12 +7154,11 @@
        close $tty_fh;
        my $run_yes = ($answer =~ /^\s*y/i);
        if (not $run_yes) {
-           $command = "true"; # Run the command 'true'
+           $self->{'commandline'}->skip();
        }
     } else {
        print $Global::original_stderr "$command\n";
     }
-    return $command;
 }
 
 sub print_dryrun_and_verbose {
@@ -8100,8 +8125,8 @@
 {
     my @target;
     my $context_replace;
-    my @arg;
     my $perl_expressions_as_re;
+    my @arg;
 
     sub fish_out_words_containing_replacement_strings {
        my %word;
@@ -8153,6 +8178,8 @@
 
     sub replace_placeholders {
        # Replace foo{}bar with fooargbar
+       # Uses:
+       #   @Arg::arg = arguments as strings to be use in {= =}
        # Input:
        #   $targetref = command as shell words
        #   $quote = should everything be quoted?
@@ -8177,7 +8204,8 @@
        # Fish out the words that have replacement strings in them
        my @word = fish_out_words_containing_replacement_strings();
        flatten_arg_list($self->{'arg_list'});
-
+       # Make it possible to use $arg[2] in {= =}
+       @Arg::arg = (undef, map { $_->orig() } @arg);
        # Number of arguments - used for positional arguments
        my $n = $#arg+1;
 
@@ -8222,7 +8250,7 @@
                $normal_replace or last;
            }
        }
-
+       @Arg::arg = ();
        if($quote) {
            @target = ::shell_quote(@target);
        }
@@ -8241,6 +8269,12 @@
     }
 }
 
+sub skip {
+    # Skip this job
+    my $self = shift;
+    $self->{'skip'} = 1;
+}
+
 
 package CommandLineQueue;
 
@@ -9426,6 +9460,6 @@
 }
 
 # Keep perl -w happy
+
 $opt::x = $Semaphore::timeout = $Semaphore::wait =
-$Job::file_descriptor_warning_printed =
-$Global::envdef = 0;
+$Job::file_descriptor_warning_printed = $Global::envdef = @Arg::arg;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel.1 
new/parallel-20150822/src/parallel.1
--- old/parallel-20150722/src/parallel.1        2015-07-22 08:39:20.000000000 
+0200
+++ new/parallel-20150822/src/parallel.1        2015-08-22 11:40:35.000000000 
+0200
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PARALLEL 1"
-.TH PARALLEL 1 "2015-07-22" "20150722" "parallel"
+.TH PARALLEL 1 "2015-08-22" "20150822" "parallel"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -210,9 +210,12 @@
 .Sp
 \&\fBBash aliases\fR: Copy the full environment using this and use 
\fBenv_parallel\fR instead of \fBparallel\fR.
 .Sp
-.Vb 7
+.Vb 10
 \&  env_parallel() {
-\&    export PARALLEL_ENV="$(echo "shopt \-s expand_aliases 2>/dev/null"; 
alias;typeset \-p | grep \-vFf <(readonly; echo GROUPS; echo FUNCNAME; echo 
DIRSTACK; echo _; echo PIPESTATUS; echo USERNAME) | grep \-v BASH_;typeset 
\-f)";
+\&    export PARALLEL_ENV="$(echo "shopt \-s expand_aliases 2>/dev/null"; 
alias;typeset \-p |
+\&      grep \-vFf <(readonly) |
+\&      grep \-v \*(Aqdeclare .. 
(GROUPS|FUNCNAME|DIRSTACK|_|PIPESTATUS|USERNAME|BASH_[A\-Z_]+) \*(Aq;
+\&      typeset \-f)";
 \&    \`which parallel\` "$@";
 \&    unset PARALLEL_ENV;
 \&  }
@@ -234,7 +237,7 @@
 .Sp
 .Vb 7
 \&  env_parallel() {
-\&    export PARALLEL_ENV="$(alias | perl \-pe \*(Aqs/^/alias /\*(Aq;typeset 
\-p;typeset \-f)";
+\&    export PARALLEL_ENV="$(alias | perl \-pe \*(Aqs/^/alias /\*(Aq;typeset 
\-p|egrep \-v \*(Aqtypeset( \-i)? \-r|PIPESTATUS\*(Aq;typeset \-f)";
 \&    \`which parallel\` "$@";
 \&    unset PARALLEL_ENV;
 \&  }
@@ -255,11 +258,13 @@
 .Sp
 To export all functions and also make them available when running remote:
 .Sp
-.Vb 8
+.Vb 10
 \&  env_parallel() {
-\&    PARALLEL_ENV="$(alias | perl \-pe \*(Aqs/^/alias /\*(Aq;typeset \-f)";
-\&    export PARALLEL_ENV
-\&    \`which parallel\` "$@";
+\&    export PARALLEL_ENV="$(alias | perl \-pe \*(Aqs/^/alias /\*(Aq;typeset 
\-p |
+\&      grep \-aFvf <(typeset \-pr)|egrep \-iav \*(AqZSH_EVAL_CONTEXT|LINENO=| 
_=|aliases|^typeset [a\-z_]+$\*(Aq|
+\&      egrep \-av \*(Aq^(typeset IFS=|..$)|cyan\*(Aq;
+\&      typeset \-f)";
+\&    parallel "$@";
 \&    unset PARALLEL_ENV;
 \&  }
 \&  # call as:
@@ -575,6 +580,10 @@
 Implies \fB\-\-semaphore\fR.
 .IP "\fB\-\-bibtex\fR" 9
 .IX Item "--bibtex"
+.PD 0
+.IP "\fB\-\-citation\fR" 9
+.IX Item "--citation"
+.PD
 Print the BibTeX entry for \s-1GNU \s0\fBparallel\fR and silence citation
 notice.
 .Sp
@@ -587,11 +596,11 @@
 citations, so if users do not know they should cite then that makes it
 harder to finance development. However, if you pay 10000 \s-1EUR,\s0 you
 should feel free to use \fB\-\-will\-cite\fR.
-.IP "\fB\-\-block\fR \fIsize\fR (alpha testing)" 9
-.IX Item "--block size (alpha testing)"
+.IP "\fB\-\-block\fR \fIsize\fR (beta testing)" 9
+.IX Item "--block size (beta testing)"
 .PD 0
-.IP "\fB\-\-block\-size\fR \fIsize\fR (alpha testing)" 9
-.IX Item "--block-size size (alpha testing)"
+.IP "\fB\-\-block\-size\fR \fIsize\fR (beta testing)" 9
+.IX Item "--block-size size (beta testing)"
 .PD
 Size of block in bytes to read at a time. The \fIsize\fR can be postfixed
 with K, M, G, T, P, k, m, g, t, or p which would multiply the size
@@ -608,8 +617,8 @@
 \&\fIsize\fR defaults to 1M.
 .Sp
 See \fB\-\-pipe\fR and \fB\-\-pipepart\fR for use of this.
-.IP "\fB\-\-cat\fR (beta testing)" 9
-.IX Item "--cat (beta testing)"
+.IP "\fB\-\-cat\fR" 9
+.IX Item "--cat"
 Create a temporary file with content. Normally 
\fB\-\-pipe\fR/\fB\-\-pipepart\fR
 will give data to the program on stdin (standard input). With \fB\-\-cat\fR
 \&\s-1GNU \s0\fBparallel\fR will create a temporary file with the name in {}, 
so
@@ -784,8 +793,8 @@
 Implies \fB\-\-semaphore\fR.
 .Sp
 See also \fB\-\-bg\fR, \fBman sem\fR.
-.IP "\fB\-\-fifo\fR (beta testing)" 9
-.IX Item "--fifo (beta testing)"
+.IP "\fB\-\-fifo\fR" 9
+.IX Item "--fifo"
 Create a temporary fifo with content. Normally \fB\-\-pipe\fR and
 \&\fB\-\-pipepart\fR will give data to the program on stdin (standard
 input). With \fB\-\-fifo\fR \s-1GNU \s0\fBparallel\fR will create a temporary 
fifo
@@ -830,11 +839,11 @@
 .IX Item "-h"
 .PD
 Print a summary of the options to \s-1GNU \s0\fBparallel\fR and exit.
-.IP "\fB\-\-halt\-on\-error\fR \fIval\fR (beta testing)" 9
-.IX Item "--halt-on-error val (beta testing)"
+.IP "\fB\-\-halt\-on\-error\fR \fIval\fR" 9
+.IX Item "--halt-on-error val"
 .PD 0
-.IP "\fB\-\-halt\fR \fIval\fR (beta testing)" 9
-.IX Item "--halt val (beta testing)"
+.IP "\fB\-\-halt\fR \fIval\fR" 9
+.IX Item "--halt val"
 .PD
 When should \s-1GNU \s0\fBparallel\fR terminate? In some situations it makes no
 sense to run all jobs. \s-1GNU \s0\fBparallel\fR should simply give up as soon
@@ -1193,11 +1202,11 @@
 of each job is saved in a file and the filename is then printed.
 .Sp
 See also: \fB\-\-results\fR
-.IP "\fB\-\-pipe\fR (alpha testing)" 9
-.IX Item "--pipe (alpha testing)"
+.IP "\fB\-\-pipe\fR (beta testing)" 9
+.IX Item "--pipe (beta testing)"
 .PD 0
-.IP "\fB\-\-spreadstdin\fR (alpha testing)" 9
-.IX Item "--spreadstdin (alpha testing)"
+.IP "\fB\-\-spreadstdin\fR (beta testing)" 9
+.IX Item "--spreadstdin (beta testing)"
 .PD
 Spread input to jobs on stdin (standard input). Read a block of data
 from stdin (standard input) and give one block of data as input to one
@@ -1320,8 +1329,8 @@
 .IX Item "--no-keep-order"
 Overrides an earlier \fB\-\-keep\-order\fR (e.g. if set in
 \&\fB~/.parallel/config\fR).
-.IP "\fB\-\-nice\fR \fIniceness\fR (alpha testing)" 9
-.IX Item "--nice niceness (alpha testing)"
+.IP "\fB\-\-nice\fR \fIniceness\fR (beta testing)" 9
+.IX Item "--nice niceness (beta testing)"
 Run the command at this niceness. For simple commands you can just add
 \&\fBnice\fR in front of the command. But if the command consists of more
 sub commands (Like: ls|wc) then prepending \fBnice\fR will not always
@@ -1520,8 +1529,8 @@
 commands.
 .Sp
 See also \fB\-\-joblog\fR, \fB\-\-resume\fR.
-.IP "\fB\-\-retry\-failed\fR (beta testing)" 9
-.IX Item "--retry-failed (beta testing)"
+.IP "\fB\-\-retry\-failed\fR" 9
+.IX Item "--retry-failed"
 Retry all failed jobs in joblog. By reading \fB\-\-joblog\fR \s-1GNU
 \&\s0\fBparallel\fR will figure out the failed jobs and run those again.
 .Sp
@@ -1783,8 +1792,8 @@
 .IX Item "--skip-first-line"
 Do not use the first line of input (used by \s-1GNU \s0\fBparallel\fR itself
 when called with \fB\-\-shebang\fR).
-.IP "\fB\-\-ssh\fR \fIsshcommand\fR (beta testing)" 9
-.IX Item "--ssh sshcommand (beta testing)"
+.IP "\fB\-\-ssh\fR \fIsshcommand\fR" 9
+.IX Item "--ssh sshcommand"
 \&\s-1GNU \s0\fBparallel\fR defaults to using \fBssh\fR for remote access. 
This can
 be overridden with \fB\-\-ssh\fR. It can also be set on a per server
 basis (see \fB\-\-sshlogin\fR).
@@ -1944,8 +1953,8 @@
 {}.
 .Sp
 \&\fB\-\-tagstring\fR is ignored when using \fB\-u\fR, \fB\-\-onall\fR, and 
\fB\-\-nonall\fR.
-.IP "\fB\-\-termseq\fR \fIsequence\fR (beta testing)" 9
-.IX Item "--termseq sequence (beta testing)"
+.IP "\fB\-\-termseq\fR \fIsequence\fR" 9
+.IX Item "--termseq sequence"
 Termination sequence. When a job is killed due to \fB\-\-timeout\fR,
 \&\fB\-\-memfree\fR, \fB\-\-halt\fR, or abnormal termination of \s-1GNU 
\s0\fBparallel\fR,
 \&\fIsequence\fR determines how the job is killed. The default is:
@@ -1968,8 +1977,8 @@
 .IX Item "--tmux"
 Use \fBtmux\fR for output. Start a \fBtmux\fR session and run each job in a
 window in that session. No other output will be produced.
-.IP "\fB\-\-timeout\fR \fIval\fR (beta testing)" 9
-.IX Item "--timeout val (beta testing)"
+.IP "\fB\-\-timeout\fR \fIval\fR" 9
+.IX Item "--timeout val"
 Time out for command. If the command runs for longer than \fIval\fR
 seconds it will get killed with \s-1SIGTERM,\s0 followed by \s-1SIGTERM 200\s0 
ms
 later, followed by \s-1SIGKILL 200\s0 ms later.
@@ -3767,9 +3776,9 @@
 .RE
 .RS 9
 .RE
-.ie n .IP "$PARALLEL_SSH (beta testing)" 9
-.el .IP "\f(CW$PARALLEL_SSH\fR (beta testing)" 9
-.IX Item "$PARALLEL_SSH (beta testing)"
+.ie n .IP "$PARALLEL_SSH" 9
+.el .IP "\f(CW$PARALLEL_SSH\fR" 9
+.IX Item "$PARALLEL_SSH"
 \&\s-1GNU \s0\fBparallel\fR defaults to using \fBssh\fR for remote access. 
This can
 be overridden with \f(CW$PARALLEL_SSH\fR, which again can be overridden with
 \&\fB\-\-ssh\fR. It can also be set on a per server basis (see
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel.html 
new/parallel-20150822/src/parallel.html
--- old/parallel-20150722/src/parallel.html     2015-07-22 08:39:21.000000000 
+0200
+++ new/parallel-20150822/src/parallel.html     2015-08-22 11:40:34.000000000 
+0200
@@ -186,7 +186,10 @@
 <p><b>Bash aliases</b>: Copy the full environment using this and use 
<b>env_parallel</b> instead of <b>parallel</b>.</p>
 
 <pre><code>  env_parallel() {
-    export PARALLEL_ENV=&quot;$(echo &quot;shopt -s expand_aliases 
2&gt;/dev/null&quot;; alias;typeset -p | grep -vFf &lt;(readonly; echo GROUPS; 
echo FUNCNAME; echo DIRSTACK; echo _; echo PIPESTATUS; echo USERNAME) | grep -v 
BASH_;typeset -f)&quot;;
+    export PARALLEL_ENV=&quot;$(echo &quot;shopt -s expand_aliases 
2&gt;/dev/null&quot;; alias;typeset -p |
+      grep -vFf &lt;(readonly) |
+      grep -v &#39;declare .. 
(GROUPS|FUNCNAME|DIRSTACK|_|PIPESTATUS|USERNAME|BASH_[A-Z_]+) &#39;;
+      typeset -f)&quot;;
     `which parallel` &quot;$@&quot;;
     unset PARALLEL_ENV;
   }
@@ -204,7 +207,7 @@
 <p>To export all functions and also make them available when running 
remote:</p>
 
 <pre><code>  env_parallel() {
-    export PARALLEL_ENV=&quot;$(alias | perl -pe &#39;s/^/alias /&#39;;typeset 
-p;typeset -f)&quot;;
+    export PARALLEL_ENV=&quot;$(alias | perl -pe &#39;s/^/alias /&#39;;typeset 
-p|egrep -v &#39;typeset( -i)? -r|PIPESTATUS&#39;;typeset -f)&quot;;
     `which parallel` &quot;$@&quot;;
     unset PARALLEL_ENV;
   }
@@ -223,9 +226,11 @@
 <p>To export all functions and also make them available when running 
remote:</p>
 
 <pre><code>  env_parallel() {
-    PARALLEL_ENV=&quot;$(alias | perl -pe &#39;s/^/alias /&#39;;typeset 
-f)&quot;;
-    export PARALLEL_ENV
-    `which parallel` &quot;$@&quot;;
+    export PARALLEL_ENV=&quot;$(alias | perl -pe &#39;s/^/alias /&#39;;typeset 
-p |
+      grep -aFvf &lt;(typeset -pr)|egrep -iav &#39;ZSH_EVAL_CONTEXT|LINENO=| 
_=|aliases|^typeset [a-z_]+$&#39;|
+      egrep -av &#39;^(typeset IFS=|..$)|cyan&#39;;
+      typeset -f)&quot;;
+    parallel &quot;$@&quot;;
     unset PARALLEL_ENV;
   }
   # call as:
@@ -530,6 +535,10 @@
 <dt id="bibtex"><b>--bibtex</b></dt>
 <dd>
 
+</dd>
+<dt id="citation"><b>--citation</b></dt>
+<dd>
+
 <p>Print the BibTeX entry for GNU <b>parallel</b> and silence citation 
notice.</p>
 
 <p>If it is impossible for you to run <b>--bibtex</b> you can use 
<b>--will-cite</b>.</p>
@@ -537,11 +546,11 @@
 <p>If you use <b>--will-cite</b> in scripts to be run by others you are making 
it harder for others to see the citation notice. The development of GNU 
<b>parallel</b> is indirectly financed through citations, so if users do not 
know they should cite then that makes it harder to finance development. 
However, if you pay 10000 EUR, you should feel free to use 
<b>--will-cite</b>.</p>
 
 </dd>
-<dt id="block-size-alpha-testing"><b>--block</b> <i>size</i> (alpha 
testing)</dt>
+<dt id="block-size-beta-testing"><b>--block</b> <i>size</i> (beta testing)</dt>
 <dd>
 
 </dd>
-<dt id="block-size-size-alpha-testing"><b>--block-size</b> <i>size</i> (alpha 
testing)</dt>
+<dt id="block-size-size-beta-testing"><b>--block-size</b> <i>size</i> (beta 
testing)</dt>
 <dd>
 
 <p>Size of block in bytes to read at a time. The <i>size</i> can be postfixed 
with K, M, G, T, P, k, m, g, t, or p which would multiply the size with 1024, 
1048576, 1073741824, 1099511627776, 1125899906842624, 1000, 1000000, 
1000000000, 1000000000000, or 1000000000000000 respectively.</p>
@@ -555,7 +564,7 @@
 <p>See <b>--pipe</b> and <b>--pipepart</b> for use of this.</p>
 
 </dd>
-<dt id="cat-beta-testing"><b>--cat</b> (beta testing)</dt>
+<dt id="cat"><b>--cat</b></dt>
 <dd>
 
 <p>Create a temporary file with content. Normally 
<b>--pipe</b>/<b>--pipepart</b> will give data to the program on stdin 
(standard input). With <b>--cat</b> GNU <b>parallel</b> will create a temporary 
file with the name in {}, so you can do: <b>parallel --pipe --cat wc {}</b>.</p>
@@ -722,7 +731,7 @@
 <p>See also <b>--bg</b>, <b>man sem</b>.</p>
 
 </dd>
-<dt id="fifo-beta-testing"><b>--fifo</b> (beta testing)</dt>
+<dt id="fifo"><b>--fifo</b></dt>
 <dd>
 
 <p>Create a temporary fifo with content. Normally <b>--pipe</b> and 
<b>--pipepart</b> will give data to the program on stdin (standard input). With 
<b>--fifo</b> GNU <b>parallel</b> will create a temporary fifo with the name in 
{}, so you can do: <b>parallel --pipe --fifo wc {}</b>.</p>
@@ -768,11 +777,11 @@
 <p>Print a summary of the options to GNU <b>parallel</b> and exit.</p>
 
 </dd>
-<dt id="halt-on-error-val-beta-testing"><b>--halt-on-error</b> <i>val</i> 
(beta testing)</dt>
+<dt id="halt-on-error-val"><b>--halt-on-error</b> <i>val</i></dt>
 <dd>
 
 </dd>
-<dt id="halt-val-beta-testing"><b>--halt</b> <i>val</i> (beta testing)</dt>
+<dt id="halt-val"><b>--halt</b> <i>val</i></dt>
 <dd>
 
 <p>When should GNU <b>parallel</b> terminate? In some situations it makes no 
sense to run all jobs. GNU <b>parallel</b> should simply give up as soon as a 
condition is met.</p>
@@ -1173,11 +1182,11 @@
 <p>See also: <b>--results</b></p>
 
 </dd>
-<dt id="pipe-alpha-testing"><b>--pipe</b> (alpha testing)</dt>
+<dt id="pipe-beta-testing"><b>--pipe</b> (beta testing)</dt>
 <dd>
 
 </dd>
-<dt id="spreadstdin-alpha-testing"><b>--spreadstdin</b> (alpha testing)</dt>
+<dt id="spreadstdin-beta-testing"><b>--spreadstdin</b> (beta testing)</dt>
 <dd>
 
 <p>Spread input to jobs on stdin (standard input). Read a block of data from 
stdin (standard input) and give one block of data as input to one job.</p>
@@ -1301,7 +1310,7 @@
 <p>Overrides an earlier <b>--keep-order</b> (e.g. if set in 
<b>~/.parallel/config</b>).</p>
 
 </dd>
-<dt id="nice-niceness-alpha-testing"><b>--nice</b> <i>niceness</i> (alpha 
testing)</dt>
+<dt id="nice-niceness-beta-testing"><b>--nice</b> <i>niceness</i> (beta 
testing)</dt>
 <dd>
 
 <p>Run the command at this niceness. For simple commands you can just add 
<b>nice</b> in front of the command. But if the command consists of more sub 
commands (Like: ls|wc) then prepending <b>nice</b> will not always work. 
<b>--nice</b> will make sure all sub commands are niced - even on remote 
servers.</p>
@@ -1490,7 +1499,7 @@
 <p>See also <b>--joblog</b>, <b>--resume</b>.</p>
 
 </dd>
-<dt id="retry-failed-beta-testing"><b>--retry-failed</b> (beta testing)</dt>
+<dt id="retry-failed"><b>--retry-failed</b></dt>
 <dd>
 
 <p>Retry all failed jobs in joblog. By reading <b>--joblog</b> GNU 
<b>parallel</b> will figure out the failed jobs and run those again.</p>
@@ -1727,7 +1736,7 @@
 <p>Do not use the first line of input (used by GNU <b>parallel</b> itself when 
called with <b>--shebang</b>).</p>
 
 </dd>
-<dt id="ssh-sshcommand-beta-testing"><b>--ssh</b> <i>sshcommand</i> (beta 
testing)</dt>
+<dt id="ssh-sshcommand"><b>--ssh</b> <i>sshcommand</i></dt>
 <dd>
 
 <p>GNU <b>parallel</b> defaults to using <b>ssh</b> for remote access. This 
can be overridden with <b>--ssh</b>. It can also be set on a per server basis 
(see <b>--sshlogin</b>).</p>
@@ -1878,7 +1887,7 @@
 <p><b>--tagstring</b> is ignored when using <b>-u</b>, <b>--onall</b>, and 
<b>--nonall</b>.</p>
 
 </dd>
-<dt id="termseq-sequence-beta-testing"><b>--termseq</b> <i>sequence</i> (beta 
testing)</dt>
+<dt id="termseq-sequence"><b>--termseq</b> <i>sequence</i></dt>
 <dd>
 
 <p>Termination sequence. When a job is killed due to <b>--timeout</b>, 
<b>--memfree</b>, <b>--halt</b>, or abnormal termination of GNU 
<b>parallel</b>, <i>sequence</i> determines how the job is killed. The default 
is:</p>
@@ -1900,7 +1909,7 @@
 <p>Use <b>tmux</b> for output. Start a <b>tmux</b> session and run each job in 
a window in that session. No other output will be produced.</p>
 
 </dd>
-<dt id="timeout-val-beta-testing"><b>--timeout</b> <i>val</i> (beta 
testing)</dt>
+<dt id="timeout-val"><b>--timeout</b> <i>val</i></dt>
 <dd>
 
 <p>Time out for command. If the command runs for longer than <i>val</i> 
seconds it will get killed with SIGTERM, followed by SIGTERM 200 ms later, 
followed by SIGKILL 200 ms later.</p>
@@ -3218,7 +3227,7 @@
 </ul>
 
 </dd>
-<dt id="PARALLEL_SSH-beta-testing">$PARALLEL_SSH (beta testing)</dt>
+<dt id="PARALLEL_SSH">$PARALLEL_SSH</dt>
 <dd>
 
 <p>GNU <b>parallel</b> defaults to using <b>ssh</b> for remote access. This 
can be overridden with $PARALLEL_SSH, which again can be overridden with 
<b>--ssh</b>. It can also be set on a per server basis (see 
<b>--sshlogin</b>).</p>
Files old/parallel-20150722/src/parallel.pdf and 
new/parallel-20150822/src/parallel.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel.pod 
new/parallel-20150822/src/parallel.pod
--- old/parallel-20150722/src/parallel.pod      2015-07-22 08:35:08.000000000 
+0200
+++ new/parallel-20150822/src/parallel.pod      2015-08-22 11:32:45.000000000 
+0200
@@ -85,7 +85,10 @@
 B<Bash aliases>: Copy the full environment using this and use B<env_parallel> 
instead of B<parallel>.
 
   env_parallel() {
-    export PARALLEL_ENV="$(echo "shopt -s expand_aliases 2>/dev/null"; 
alias;typeset -p | grep -vFf <(readonly; echo GROUPS; echo FUNCNAME; echo 
DIRSTACK; echo _; echo PIPESTATUS; echo USERNAME) | grep -v BASH_;typeset -f)";
+    export PARALLEL_ENV="$(echo "shopt -s expand_aliases 2>/dev/null"; 
alias;typeset -p |
+      grep -vFf <(readonly) |
+      grep -v 'declare .. 
(GROUPS|FUNCNAME|DIRSTACK|_|PIPESTATUS|USERNAME|BASH_[A-Z_]+) ';
+      typeset -f)";
     `which parallel` "$@";
     unset PARALLEL_ENV;
   }
@@ -103,7 +106,7 @@
 To export all functions and also make them available when running remote:
 
   env_parallel() {
-    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p;typeset 
-f)";
+    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p|egrep -v 
'typeset( -i)? -r|PIPESTATUS';typeset -f)";
     `which parallel` "$@";
     unset PARALLEL_ENV;
   }
@@ -122,9 +125,11 @@
 To export all functions and also make them available when running remote:
 
   env_parallel() {
-    PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -f)";
-    export PARALLEL_ENV
-    `which parallel` "$@";
+    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p |
+      grep -aFvf <(typeset -pr)|egrep -iav 'ZSH_EVAL_CONTEXT|LINENO=| 
_=|aliases|^typeset [a-z_]+$'|
+      egrep -av '^(typeset IFS=|..$)|cyan';
+      typeset -f)";
+    parallel "$@";
     unset PARALLEL_ENV;
   }
   # call as:
@@ -470,6 +475,8 @@
 
 =item B<--bibtex>
 
+=item B<--citation>
+
 Print the BibTeX entry for GNU B<parallel> and silence citation
 notice.
 
@@ -484,9 +491,9 @@
 should feel free to use B<--will-cite>.
 
 
-=item B<--block> I<size> (alpha testing)
+=item B<--block> I<size> (beta testing)
 
-=item B<--block-size> I<size> (alpha testing)
+=item B<--block-size> I<size> (beta testing)
 
 Size of block in bytes to read at a time. The I<size> can be postfixed
 with K, M, G, T, P, k, m, g, t, or p which would multiply the size
@@ -505,7 +512,7 @@
 See B<--pipe> and B<--pipepart> for use of this.
 
 
-=item B<--cat> (beta testing)
+=item B<--cat>
 
 Create a temporary file with content. Normally B<--pipe>/B<--pipepart>
 will give data to the program on stdin (standard input). With B<--cat>
@@ -692,7 +699,7 @@
 See also B<--bg>, B<man sem>.
 
 
-=item B<--fifo> (beta testing)
+=item B<--fifo>
 
 Create a temporary fifo with content. Normally B<--pipe> and
 B<--pipepart> will give data to the program on stdin (standard
@@ -746,9 +753,9 @@
 Print a summary of the options to GNU B<parallel> and exit.
 
 
-=item B<--halt-on-error> I<val> (beta testing)
+=item B<--halt-on-error> I<val>
 
-=item B<--halt> I<val> (beta testing)
+=item B<--halt> I<val>
 
 When should GNU B<parallel> terminate? In some situations it makes no
 sense to run all jobs. GNU B<parallel> should simply give up as soon
@@ -1139,9 +1146,9 @@
 
 See also: B<--results>
 
-=item B<--pipe> (alpha testing)
+=item B<--pipe> (beta testing)
 
-=item B<--spreadstdin> (alpha testing)
+=item B<--spreadstdin> (beta testing)
 
 Spread input to jobs on stdin (standard input). Read a block of data
 from stdin (standard input) and give one block of data as input to one
@@ -1284,7 +1291,7 @@
 B<~/.parallel/config>).
 
 
-=item B<--nice> I<niceness> (alpha testing)
+=item B<--nice> I<niceness> (beta testing)
 
 Run the command at this niceness. For simple commands you can just add
 B<nice> in front of the command. But if the command consists of more
@@ -1488,7 +1495,7 @@
 See also B<--joblog>, B<--resume>.
 
 
-=item B<--retry-failed> (beta testing)
+=item B<--retry-failed>
 
 Retry all failed jobs in joblog. By reading B<--joblog> GNU
 B<parallel> will figure out the failed jobs and run those again.
@@ -1747,7 +1754,7 @@
 when called with B<--shebang>).
 
 
-=item B<--ssh> I<sshcommand> (beta testing)
+=item B<--ssh> I<sshcommand>
 
 GNU B<parallel> defaults to using B<ssh> for remote access. This can
 be overridden with B<--ssh>. It can also be set on a per server
@@ -1914,7 +1921,7 @@
 B<--tagstring> is ignored when using B<-u>, B<--onall>, and B<--nonall>.
 
 
-=item B<--termseq> I<sequence> (beta testing)
+=item B<--termseq> I<sequence>
 
 Termination sequence. When a job is killed due to B<--timeout>,
 B<--memfree>, B<--halt>, or abnormal termination of GNU B<parallel>,
@@ -1942,7 +1949,7 @@
 window in that session. No other output will be produced.
 
 
-=item B<--timeout> I<val> (beta testing)
+=item B<--timeout> I<val>
 
 Time out for command. If the command runs for longer than I<val>
 seconds it will get killed with SIGTERM, followed by SIGTERM 200 ms
@@ -3540,7 +3547,7 @@
 =back
 
 
-=item $PARALLEL_SSH (beta testing)
+=item $PARALLEL_SSH
 
 GNU B<parallel> defaults to using B<ssh> for remote access. This can
 be overridden with $PARALLEL_SSH, which again can be overridden with
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel.texi 
new/parallel-20150822/src/parallel.texi
--- old/parallel-20150722/src/parallel.texi     2015-07-22 08:40:59.000000000 
+0200
+++ new/parallel-20150822/src/parallel.texi     2015-08-22 11:40:45.000000000 
+0200
@@ -166,7 +166,10 @@
 
 @verbatim
   env_parallel() {
-    export PARALLEL_ENV="$(echo "shopt -s expand_aliases 2>/dev/null"; 
alias;typeset -p | grep -vFf <(readonly; echo GROUPS; echo FUNCNAME; echo 
DIRSTACK; echo _; echo PIPESTATUS; echo USERNAME) | grep -v BASH_;typeset -f)";
+    export PARALLEL_ENV="$(echo "shopt -s expand_aliases 2>/dev/null"; 
alias;typeset -p |
+      grep -vFf <(readonly) |
+      grep -v 'declare .. 
(GROUPS|FUNCNAME|DIRSTACK|_|PIPESTATUS|USERNAME|BASH_[A-Z_]+) ';
+      typeset -f)";
     `which parallel` "$@";
     unset PARALLEL_ENV;
   }
@@ -188,7 +191,7 @@
 
 @verbatim
   env_parallel() {
-    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p;typeset 
-f)";
+    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p|egrep -v 
'typeset( -i)? -r|PIPESTATUS';typeset -f)";
     `which parallel` "$@";
     unset PARALLEL_ENV;
   }
@@ -211,9 +214,11 @@
 
 @verbatim
   env_parallel() {
-    PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -f)";
-    export PARALLEL_ENV
-    `which parallel` "$@";
+    export PARALLEL_ENV="$(alias | perl -pe 's/^/alias /';typeset -p |
+      grep -aFvf <(typeset -pr)|egrep -iav 'ZSH_EVAL_CONTEXT|LINENO=| 
_=|aliases|^typeset [a-z_]+$'|
+      egrep -av '^(typeset IFS=|..$)|cyan';
+      typeset -f)";
+    parallel "$@";
     unset PARALLEL_ENV;
   }
   # call as:
@@ -576,6 +581,9 @@
 @item @strong{--bibtex}
 @anchor{@strong{--bibtex}}
 
+@item @strong{--citation}
+@anchor{@strong{--citation}}
+
 Print the BibTeX entry for GNU @strong{parallel} and silence citation
 notice.
 
@@ -589,11 +597,11 @@
 harder to finance development. However, if you pay 10000 EUR, you
 should feel free to use @strong{--will-cite}.
 
-@item @strong{--block} @emph{size} (alpha testing)
-@anchor{@strong{--block} @emph{size} (alpha testing)}
+@item @strong{--block} @emph{size} (beta testing)
+@anchor{@strong{--block} @emph{size} (beta testing)}
 
-@item @strong{--block-size} @emph{size} (alpha testing)
-@anchor{@strong{--block-size} @emph{size} (alpha testing)}
+@item @strong{--block-size} @emph{size} (beta testing)
+@anchor{@strong{--block-size} @emph{size} (beta testing)}
 
 Size of block in bytes to read at a time. The @emph{size} can be postfixed
 with K, M, G, T, P, k, m, g, t, or p which would multiply the size
@@ -611,8 +619,8 @@
 
 See @strong{--pipe} and @strong{--pipepart} for use of this.
 
-@item @strong{--cat} (beta testing)
-@anchor{@strong{--cat} (beta testing)}
+@item @strong{--cat}
+@anchor{@strong{--cat}}
 
 Create a temporary file with content. Normally 
@strong{--pipe}/@strong{--pipepart}
 will give data to the program on stdin (standard input). With @strong{--cat}
@@ -810,8 +818,8 @@
 
 See also @strong{--bg}, @strong{man sem}.
 
-@item @strong{--fifo} (beta testing)
-@anchor{@strong{--fifo} (beta testing)}
+@item @strong{--fifo}
+@anchor{@strong{--fifo}}
 
 Create a temporary fifo with content. Normally @strong{--pipe} and
 @strong{--pipepart} will give data to the program on stdin (standard
@@ -865,11 +873,11 @@
 
 Print a summary of the options to GNU @strong{parallel} and exit.
 
-@item @strong{--halt-on-error} @emph{val} (beta testing)
-@anchor{@strong{--halt-on-error} @emph{val} (beta testing)}
+@item @strong{--halt-on-error} @emph{val}
+@anchor{@strong{--halt-on-error} @emph{val}}
 
-@item @strong{--halt} @emph{val} (beta testing)
-@anchor{@strong{--halt} @emph{val} (beta testing)}
+@item @strong{--halt} @emph{val}
+@anchor{@strong{--halt} @emph{val}}
 
 When should GNU @strong{parallel} terminate? In some situations it makes no
 sense to run all jobs. GNU @strong{parallel} should simply give up as soon
@@ -1299,11 +1307,11 @@
 
 See also: @strong{--results}
 
-@item @strong{--pipe} (alpha testing)
-@anchor{@strong{--pipe} (alpha testing)}
+@item @strong{--pipe} (beta testing)
+@anchor{@strong{--pipe} (beta testing)}
 
-@item @strong{--spreadstdin} (alpha testing)
-@anchor{@strong{--spreadstdin} (alpha testing)}
+@item @strong{--spreadstdin} (beta testing)
+@anchor{@strong{--spreadstdin} (beta testing)}
 
 Spread input to jobs on stdin (standard input). Read a block of data
 from stdin (standard input) and give one block of data as input to one
@@ -1450,8 +1458,8 @@
 Overrides an earlier @strong{--keep-order} (e.g. if set in
 @strong{~/.parallel/config}).
 
-@item @strong{--nice} @emph{niceness} (alpha testing)
-@anchor{@strong{--nice} @emph{niceness} (alpha testing)}
+@item @strong{--nice} @emph{niceness} (beta testing)
+@anchor{@strong{--nice} @emph{niceness} (beta testing)}
 
 Run the command at this niceness. For simple commands you can just add
 @strong{nice} in front of the command. But if the command consists of more
@@ -1672,8 +1680,8 @@
 
 See also @strong{--joblog}, @strong{--resume}.
 
-@item @strong{--retry-failed} (beta testing)
-@anchor{@strong{--retry-failed} (beta testing)}
+@item @strong{--retry-failed}
+@anchor{@strong{--retry-failed}}
 
 Retry all failed jobs in joblog. By reading @strong{--joblog} GNU
 @strong{parallel} will figure out the failed jobs and run those again.
@@ -1962,8 +1970,8 @@
 Do not use the first line of input (used by GNU @strong{parallel} itself
 when called with @strong{--shebang}).
 
-@item @strong{--ssh} @emph{sshcommand} (beta testing)
-@anchor{@strong{--ssh} @emph{sshcommand} (beta testing)}
+@item @strong{--ssh} @emph{sshcommand}
+@anchor{@strong{--ssh} @emph{sshcommand}}
 
 GNU @strong{parallel} defaults to using @strong{ssh} for remote access. This 
can
 be overridden with @strong{--ssh}. It can also be set on a per server
@@ -2139,8 +2147,8 @@
 
 @strong{--tagstring} is ignored when using @strong{-u}, @strong{--onall}, and 
@strong{--nonall}.
 
-@item @strong{--termseq} @emph{sequence} (beta testing)
-@anchor{@strong{--termseq} @emph{sequence} (beta testing)}
+@item @strong{--termseq} @emph{sequence}
+@anchor{@strong{--termseq} @emph{sequence}}
 
 Termination sequence. When a job is killed due to @strong{--timeout},
 @strong{--memfree}, @strong{--halt}, or abnormal termination of GNU 
@strong{parallel},
@@ -2169,8 +2177,8 @@
 Use @strong{tmux} for output. Start a @strong{tmux} session and run each job 
in a
 window in that session. No other output will be produced.
 
-@item @strong{--timeout} @emph{val} (beta testing)
-@anchor{@strong{--timeout} @emph{val} (beta testing)}
+@item @strong{--timeout} @emph{val}
+@anchor{@strong{--timeout} @emph{val}}
 
 Time out for command. If the command runs for longer than @emph{val}
 seconds it will get killed with SIGTERM, followed by SIGTERM 200 ms
@@ -4102,8 +4110,8 @@
 
 @end itemize
 
-@item $PARALLEL_SSH (beta testing)
-@anchor{$PARALLEL_SSH (beta testing)}
+@item $PARALLEL_SSH
+@anchor{$PARALLEL_SSH}
 
 GNU @strong{parallel} defaults to using @strong{ssh} for remote access. This 
can
 be overridden with $PARALLEL_SSH, which again can be overridden with
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel_design.7 
new/parallel-20150822/src/parallel_design.7
--- old/parallel-20150722/src/parallel_design.7 2015-07-01 02:29:27.000000000 
+0200
+++ new/parallel-20150822/src/parallel_design.7 2015-08-16 14:43:20.000000000 
+0200
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PARALLEL_DESIGN 7"
-.TH PARALLEL_DESIGN 7 "2015-06-26" "20150622" "parallel"
+.TH PARALLEL_DESIGN 7 "2015-08-16" "20150722" "parallel"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
Files old/parallel-20150722/src/parallel_design.pdf and 
new/parallel-20150822/src/parallel_design.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/parallel_tutorial.7 
new/parallel-20150822/src/parallel_tutorial.7
--- old/parallel-20150722/src/parallel_tutorial.7       2015-05-21 
22:43:45.000000000 +0200
+++ new/parallel-20150822/src/parallel_tutorial.7       2015-08-16 
14:43:18.000000000 +0200
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "PARALLEL_TUTORIAL 7"
-.TH PARALLEL_TUTORIAL 7 "2015-05-21" "20150422" "parallel"
+.TH PARALLEL_TUTORIAL 7 "2015-08-16" "20150722" "parallel"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
Files old/parallel-20150722/src/parallel_tutorial.pdf and 
new/parallel-20150822/src/parallel_tutorial.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sem 
new/parallel-20150822/src/sem
--- old/parallel-20150722/src/sem       2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/src/sem       2015-08-22 11:40:23.000000000 +0200
@@ -167,7 +167,8 @@
            $Global::halt_exitstatus =
                ::ceil($Global::total_failed / $Global::total_started * 100);
        } elsif($Global::halt_count) {
-           $Global::halt_exitstatus = ::min($Global::total_failed,101);
+           $Global::halt_exitstatus =
+               ::min(undef_as_zero($Global::total_failed),101);
        }
     }
     wait_and_exit($Global::halt_exitstatus);
@@ -793,7 +794,7 @@
         "tollef" => \$opt::tollef,
         "gnu" => \$opt::gnu,
         "xapply" => \$opt::xapply,
-        "bibtex" => \$opt::bibtex,
+        "bibtex|citation" => \$opt::bibtex,
         "wc|willcite|will-cite|nn|nonotice|no-notice" => \$opt::willcite,
         # Termination and retries
         "halt-on-error|halt=s" => \$opt::halt,
@@ -816,7 +817,7 @@
         "help|h" => \$opt::help,
         "L=f" => \$opt::L,
         "max-lines|l:f" => \$opt::max_lines,
-        "interactive|p" => \$opt::p,
+        "interactive|p" => \$opt::interactive,
         "verbose|t" => \$opt::verbose,
         "version|V" => \$opt::version,
         "minversion|min-version=i" => \$opt::minversion,
@@ -901,7 +902,7 @@
     if(defined $opt::0) { $/ = "\0"; }
     if(defined $opt::d) { $/ = unquote_printf($opt::d) }
     if(defined $opt::tagstring) { $opt::tagstring = 
unquote_printf($opt::tagstring); }
-    if(defined $opt::p) { $Global::interactive = $opt::p; }
+    if(defined $opt::interactive) { $Global::interactive = $opt::interactive; }
     if(defined $opt::q) { $Global::quoting = 1; }
     if(defined $opt::r) { $Global::ignore_empty = 1; }
     if(defined $opt::verbose) { $Global::stderr_verbose = 1; }
@@ -1089,7 +1090,7 @@
 
 sub init_globals {
     # Defaults:
-    $Global::version = 20150722;
+    $Global::version = 20150822;
     $Global::progname = 'parallel';
     $Global::infinity = 2**31;
     $Global::debug = 0;
@@ -3171,8 +3172,15 @@
         $job or next;
         delete $Global::running{$stiff};
         $Global::total_running--;
-        $job->set_exitstatus($? >> 8);
-        $job->set_exitsignal($? & 127);
+       if($job->{'commandline'}{'skip'}) {
+           # $job->skip() was called
+           $job->set_exitstatus(-2);
+           $job->set_exitsignal(0);
+       } else {
+           $job->set_exitstatus($? >> 8);
+           $job->set_exitsignal($? & 127);
+       }
+
         debug("run", "seq ",$job->seq()," died (", $job->exitstatus(), ")");
         $job->set_endtime(::now());
         if($stiff == $Global::tty_taken) {
@@ -4164,6 +4172,9 @@
 
     # TODO add sshlogin and backgrounding
     $self->{'memfree'} = qx{ $script };
+    if(not $self->{'memfree'}) {
+       ::die_bug("Less than 1 byte free");
+    }
     #::debug("mem","New free:",$self->{'memfree'}," ");
 }
 
@@ -4175,25 +4186,33 @@
        #   shellscript for giving available memory in bytes
        if(not $script) {
            my %script_of = (
-               # $ free
-               #              total       used       free     shared    
buffers     cached
-               # Mem:       8075152    4922780    3152372     338856     
233356    1658604
-               # -/+ buffers/cache:    3030820    5044332
-               # Swap:      8286204     116924    8169280
-               "linux" => q{ print (1024*((grep /buffers.cache/, `free`)[0] =~ 
/buffers.cache:\s+\S+\s+(\S+)/)[0]) },
+               # /proc/meminfo
+               # MemFree:          7012 kB
+               # Buffers:         19876 kB
+               # Cached:         431192 kB
+               # SwapCached:          0 kB
+               "linux" =>
+               q[ print 1024 * qx{ ].
+               q[   awk '/^((Swap)?Cached|MemFree|Buffers):/ ].
+               q[     { sum += \$2} END { print sum }' ].
+               q[   /proc/meminfo } ],
                # $ vmstat 1 1
                #     procs           memory                   page             
                 faults       cpu
                # r     b     w      avm    free   re   at    pi   po    fr   
de    sr     in     sy    cs  us sy id
                # 1     0     0   242793  389737    5    1     0    0     0    
0     0    107    978    60   1  1 99
-               "hpux" => q{ print (((reverse `vmstat 1 1`)[0] =~ 
/(?:\d+\D+){4}(\d+)/)[0]*1024) },
+               "hpux" =>
+               q[ print (((reverse `vmstat 1 1`)[0] ].
+               q[   =~ /(?:\d+\D+){4}(\d+)/)[0]*1024) ],
                # $ vmstat 1 2
                # kthr      memory            page            disk          
faults      cpu
                # r b w   swap  free  re  mf pi po fr de sr s3 s4 -- --   in   
sy   cs us sy id
                # 0 0 0 6496720 5170320 68 260 8 2  1  0  0 -0  3  0  0  309 
1371  255  1  2 97
                # 0 0 0 6434088 5072656 7 15  8  0  0  0  0  0 261 0  0 1889 
1899 3222  0  8 92
                #
-               # The last free is really free
-               "solaris" => q{ print (((reverse `vmstat 1 2`)[0] =~ 
/(?:\d+\D+){4}(\d+)/)[0]*1024) },
+               # The second free value is correct
+               "solaris" =>
+               q[ print (((reverse `vmstat 1 2`)[0] ].
+               q[   =~ /(?:\d+\D+){4}(\d+)/)[0]*1024) ],
                "freebsd" => q{
                        for(qx{/sbin/sysctl -a}) {
                            if (/^([^:]+):\s+(.+)\s*$/s) {
@@ -6391,9 +6410,9 @@
     if(not defined $self->{'wrapped'}) {
        my $command = $self->replaced();
        if($opt::shellquote) {
-           # Prepend echo
+           # Prepend \echo (echo no-\ is wrong in csh)
            # and quote twice
-           $command = "echo " .
+           $command = "\\echo " .
                ::shell_quote_scalar(::shell_quote_scalar($command));
        }
        if($opt::cat) {
@@ -6565,7 +6584,7 @@
                 unless($pid) {
                    # Make own process group to be able to kill HUP it later
                    setpgrp;
-                   setpriority(0,0,$nice);
+                   eval { setpriority(0,0,$nice) };
                    exec $shell, "-c", ($bashfunc."@ARGV");
                    die "exec: $!\n";
                }
@@ -7009,7 +7028,8 @@
        open ERR, '>&', $stderr_fh or ::die_bug("Can't dup STDERR: $!");
 
        my $pid;
-       my @setpgrp_wrap = 
('perl','-e',"setpgrp\;setpriority\(0,0,$opt::nice\)\;exec '$Global::shell', 
'-c', \@ARGV");
+       my @setpgrp_wrap = ('perl','-e',
+                           
"setpgrp\;eval\{setpriority\(0,0,$opt::nice\)\}\;exec '$Global::shell', '-c', 
\@ARGV");
        # The eval is needed to catch exception from open3
        eval {
            $pid = ::open3($stdin_fh, ">&OUT", ">&ERR", @setpgrp_wrap, $command)
@@ -7041,8 +7061,12 @@
     my $command = $job->wrapped();
     my $pid;
 
+    if($job->{'commandline'}{'skip'}) {
+       # $job->skip() was called
+       $command = "true";
+    }
     if($Global::interactive or $Global::stderr_verbose) {
-       $command = interactive_start($command);
+       $job->interactive_start();
     }
     $job->openoutputfiles();
     my($stdout_fh,$stderr_fh) = ($job->fh(1,"w"),$job->fh(2,"w"));
@@ -7087,7 +7111,8 @@
        open ERR, '>&', $stderr_fh or ::die_bug("Can't dup STDERR: $!");
        *IN = *STDIN;
        # The eval is needed to catch exception from open3
-       my @setpgrp_wrap = 
('perl','-e',"setpgrp\;setpriority\(0,0,$opt::nice\)\;exec '$Global::shell', 
'-c', \@ARGV");
+       my @setpgrp_wrap = ('perl','-e',
+                           
"setpgrp\;eval\{setpriority\(0,0,$opt::nice\)\}\;exec '$Global::shell', '-c', 
\@ARGV");
        eval {
            $pid = ::open3("<&IN", ">&OUT", ">&ERR", @setpgrp_wrap, $command)
                || ::die_bug("open3-<IN");
@@ -7120,7 +7145,8 @@
 }
 
 sub interactive_start {
-    my $command = shift;
+    my $self = shift;
+    my $command = $self->wrapped();
     if($Global::interactive) {
        ::status("$command ?...");
        open(my $tty_fh, "<", "/dev/tty") || ::die_bug("interactive-tty");
@@ -7128,12 +7154,11 @@
        close $tty_fh;
        my $run_yes = ($answer =~ /^\s*y/i);
        if (not $run_yes) {
-           $command = "true"; # Run the command 'true'
+           $self->{'commandline'}->skip();
        }
     } else {
        print $Global::original_stderr "$command\n";
     }
-    return $command;
 }
 
 sub print_dryrun_and_verbose {
@@ -8100,8 +8125,8 @@
 {
     my @target;
     my $context_replace;
-    my @arg;
     my $perl_expressions_as_re;
+    my @arg;
 
     sub fish_out_words_containing_replacement_strings {
        my %word;
@@ -8153,6 +8178,8 @@
 
     sub replace_placeholders {
        # Replace foo{}bar with fooargbar
+       # Uses:
+       #   @Arg::arg = arguments as strings to be use in {= =}
        # Input:
        #   $targetref = command as shell words
        #   $quote = should everything be quoted?
@@ -8177,7 +8204,8 @@
        # Fish out the words that have replacement strings in them
        my @word = fish_out_words_containing_replacement_strings();
        flatten_arg_list($self->{'arg_list'});
-
+       # Make it possible to use $arg[2] in {= =}
+       @Arg::arg = (undef, map { $_->orig() } @arg);
        # Number of arguments - used for positional arguments
        my $n = $#arg+1;
 
@@ -8222,7 +8250,7 @@
                $normal_replace or last;
            }
        }
-
+       @Arg::arg = ();
        if($quote) {
            @target = ::shell_quote(@target);
        }
@@ -8241,6 +8269,12 @@
     }
 }
 
+sub skip {
+    # Skip this job
+    my $self = shift;
+    $self->{'skip'} = 1;
+}
+
 
 package CommandLineQueue;
 
@@ -9426,6 +9460,6 @@
 }
 
 # Keep perl -w happy
+
 $opt::x = $Semaphore::timeout = $Semaphore::wait =
-$Job::file_descriptor_warning_printed =
-$Global::envdef = 0;
+$Job::file_descriptor_warning_printed = $Global::envdef = @Arg::arg;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sem.1 
new/parallel-20150822/src/sem.1
--- old/parallel-20150722/src/sem.1     2015-05-10 17:46:54.000000000 +0200
+++ new/parallel-20150822/src/sem.1     2015-08-16 14:43:13.000000000 +0200
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SEM 1"
-.TH SEM 1 "2015-05-10" "20150422" "parallel"
+.TH SEM 1 "2015-08-16" "20150722" "parallel"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -264,11 +264,11 @@
 In toilet analogy: \s-1GNU \s0\fBsem\fR waits for a toilet to be available,
 takes a person to the toilet, waits for the person to finish, and
 exits.
-.IP "\fB\-\-semaphoretimeout\fR \fIsecs\fR (alpha testing)" 9
-.IX Item "--semaphoretimeout secs (alpha testing)"
+.IP "\fB\-\-semaphoretimeout\fR \fIsecs\fR (beta testing)" 9
+.IX Item "--semaphoretimeout secs (beta testing)"
 .PD 0
-.IP "\fB\-\-st\fR \fIsecs\fR (alpha testing)" 9
-.IX Item "--st secs (alpha testing)"
+.IP "\fB\-\-st\fR \fIsecs\fR (beta testing)" 9
+.IX Item "--st secs (beta testing)"
 .PD
 If \fIsecs\fR > 0: If the semaphore is not released within \fIsecs\fR
 seconds, take it anyway.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sem.html 
new/parallel-20150822/src/sem.html
--- old/parallel-20150722/src/sem.html  2015-07-22 08:39:22.000000000 +0200
+++ new/parallel-20150822/src/sem.html  2015-08-22 11:40:34.000000000 +0200
@@ -186,11 +186,11 @@
 <p>In toilet analogy: GNU <b>sem</b> waits for a toilet to be available, takes 
a person to the toilet, waits for the person to finish, and exits.</p>
 
 </dd>
-<dt id="semaphoretimeout-secs-alpha-testing"><b>--semaphoretimeout</b> 
<i>secs</i> (alpha testing)</dt>
+<dt id="semaphoretimeout-secs-beta-testing"><b>--semaphoretimeout</b> 
<i>secs</i> (beta testing)</dt>
 <dd>
 
 </dd>
-<dt id="st-secs-alpha-testing"><b>--st</b> <i>secs</i> (alpha testing)</dt>
+<dt id="st-secs-beta-testing"><b>--st</b> <i>secs</i> (beta testing)</dt>
 <dd>
 
 <p>If <i>secs</i> &gt; 0: If the semaphore is not released within <i>secs</i> 
seconds, take it anyway.</p>
Files old/parallel-20150722/src/sem.pdf and new/parallel-20150822/src/sem.pdf 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sem.pod 
new/parallel-20150822/src/sem.pod
--- old/parallel-20150722/src/sem.pod   2015-05-10 17:46:38.000000000 +0200
+++ new/parallel-20150822/src/sem.pod   2015-08-16 03:02:54.000000000 +0200
@@ -138,9 +138,9 @@
 exits.
 
 
-=item B<--semaphoretimeout> I<secs> (alpha testing)
+=item B<--semaphoretimeout> I<secs> (beta testing)
 
-=item B<--st> I<secs> (alpha testing)
+=item B<--st> I<secs> (beta testing)
 
 If I<secs> > 0: If the semaphore is not released within I<secs>
 seconds, take it anyway.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sem.texi 
new/parallel-20150822/src/sem.texi
--- old/parallel-20150722/src/sem.texi  2015-07-22 08:02:42.000000000 +0200
+++ new/parallel-20150822/src/sem.texi  2015-08-16 14:44:28.000000000 +0200
@@ -181,11 +181,11 @@
 takes a person to the toilet, waits for the person to finish, and
 exits.
 
-@item @strong{--semaphoretimeout} @emph{secs} (alpha testing)
-@anchor{@strong{--semaphoretimeout} @emph{secs} (alpha testing)}
+@item @strong{--semaphoretimeout} @emph{secs} (beta testing)
+@anchor{@strong{--semaphoretimeout} @emph{secs} (beta testing)}
 
-@item @strong{--st} @emph{secs} (alpha testing)
-@anchor{@strong{--st} @emph{secs} (alpha testing)}
+@item @strong{--st} @emph{secs} (beta testing)
+@anchor{@strong{--st} @emph{secs} (beta testing)}
 
 If @emph{secs} > 0: If the semaphore is not released within @emph{secs}
 seconds, take it anyway.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sql 
new/parallel-20150822/src/sql
--- old/parallel-20150722/src/sql       2015-07-22 08:31:20.000000000 +0200
+++ new/parallel-20150822/src/sql       2015-08-22 11:40:23.000000000 +0200
@@ -566,7 +566,7 @@
 exit ($err);
 
 sub parse_options {
-    $Global::version = 20150722;
+    $Global::version = 20150822;
     $Global::progname = 'sql';
 
     # This must be done first as this may exec myself
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/parallel-20150722/src/sql.1 
new/parallel-20150822/src/sql.1
--- old/parallel-20150722/src/sql.1     2015-07-22 08:31:42.000000000 +0200
+++ new/parallel-20150822/src/sql.1     2015-08-22 11:40:33.000000000 +0200
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SQL 1"
-.TH SQL 1 "2015-07-22" "20150722" "parallel"
+.TH SQL 1 "2015-08-22" "20150822" "parallel"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
Files old/parallel-20150722/src/sql.pdf and new/parallel-20150822/src/sql.pdf 
differ

++++++ parallel-20150722.tar.bz2.sig -> parallel-20150822.tar.bz2.sig ++++++
--- /work/SRC/openSUSE:Factory/gnu_parallel/parallel-20150722.tar.bz2.sig       
2015-07-28 11:43:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/parallel-20150822.tar.bz2.sig  
2015-09-09 20:21:18.000000000 +0200
@@ -2,41 +2,41 @@
 
 # To check the signature run:
 #  echo | gpg
-#  gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve 
parallel-20150722.tar.bz2.sig
+#  gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve 
parallel-20150822.tar.bz2.sig
 
 echo | gpg 2>/dev/null
 gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $0
 exit $?
 
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.11 (GNU/Linux)
+Version: GnuPG v2.0.22 (GNU/Linux)
 
-iQTwBAABCgAGBQJVr0DYAAoJENGrRRaIiIiI0vcmoJDiyjI0jKEFWtzGTBJa60Uz
-aQFH1mgGETj2Xz1x1yfKplw1i8FcmQhLM57MdDtfimgHnouPjIGeoF3LRv7UdJd1
-k1rDtBa6AUp5uT0YLXWK95IB3O09EgMyHGq8nNiOJaSoz75FKfIAKuBPFS4C/aYw
-YNEOTfpb+MUsWdNlRErrZoIhoBqV4glDYLzHhoExVmuiqnXaNkLNHPiwvtxP6qLM
-DHXS9mxXs/IxrG7UM6/j1R9Hcz6xqT/pploCeo4XKeixQ379QYqzFSPXb8NAWJW7
-KHeZA1eAOey6M3aX64Q9r8o0tRkmFQb+z5AMuPjmSbesEtsnGlkL/B3jy/hOVUsK
-Qk3BiUMIXSF+R0vs1X5I83u9fRsSRzyFh634vtcVf0wsrvG4tmE3NOreeWmcQNEH
-jpTqzTCfIzSAVWqgYNPfWGfLKhZqlKCBCXNHclM4TrlBAaQaU6MMLlISpjBvFLKQ
-tuMkfajYWKlDMYuQ7sZ/YX1NO17Z2uVZfAn35SLBiQI+EjBrY3aHF+wEW4EsWWP6
-PiRE+NxkhPYy3BR00RHs2VOq3ongdo60Pv6bzlPyj+/7kYIFwhF2cIZdKhVwLMdH
-BEvDIsfRGF94MdInBPQdSHkdGKnG0zeYbClOOfv+yrDy6Z62bBfo/EtQB0NO7eXy
-kYRiJrnILz47lBMK9DmsZp1pVi8a29FT7iMbS6C26NsXIgEWggyyKIYFCd9UT+QV
-Eg95h5GLWN2oZ5u/LmCejbNYcm7dPCvSDLSJ2XUunRVgqcEdGJv++F1ml5resr0O
-WuqdgB/GcjuPkdPh1XRhHYg8lYtjp0eRV5qI9jRh/z/zPsJkVfKZJ9696KxEGOC9
-KGXDvBAh7KoObMu/yJVJYwFPY//HXmvNlHBe59Thp3Z3i0RGOOr/nuva+rOACm6F
-hZ9Vhg++saZvo8ZKoPDjzlRKYjbBQoJRE5SkIXuRn4YKkkN5x/lZatZCw+PDV/0a
-poTf/WwFqZlI+6QiMEej3sObYsDAEwtGdMY5u176QZYSdMzXydHHuAfMhLlCX+S/
-Ziav1gSs1tWkHEz1JCnnzK9kogGb47kkhEe8Oew3d+3+UP1NWEokoBoBsgl04WUj
-AOh5r4sF/Yv9wJuiYZS5ye8A25dmO/ZyTtdYkS3nKOcCe9bygKSOHlApQKUJySmI
-eUooDMsP1RCSaeSgQNPXaH0y2snCC3cznx894R6/W3MLL5fcdbl3I3+K2Sm7nH6L
-AkCP8X1b2IYheSFCiFLaQ1OoUz126zX49Y//PE/WqivolN+SrWgI0W7sRwWpka2k
-FGI+FlA8FWAu9W23OEANUiDV/1YhLuk1Hss0cjX4gPy0Zw1hlxg9DYSg5QQ0sfj/
-W5oeVHjUNPjAl6CGHFbxbgejJqgnBT52C183JfZYmdx1KhrRQE26QnyCxXhdLHGU
-zJZ1Pg4QNj8Z8J0/c566andx3faCJ3ugvLz7pGhEmCiJhFcioogUlXvmQ7EiYwHY
-IvF2gWedVdqi0jUhSt0h3MbeT12jpgHbfWI9ArQlHNSfthoquutlyoELu5UMED4N
-f2N63kFaOVhkuCVIpAg0m9ARyIx85z8Klt76W95jx4srK1mj9XzAzRjdgrukPSGC
-aeWPD0+6n3NZaQ0YP1E6sQFSOA==
-=H1CC
+iQTwBAABCgAGBQJV2EQJAAoJENGrRRaIiIiIBDwmoJ/yd2AbLHGy1mumdxWdcbr8
+xS8gSPgkTDCwcCaxHxIf88bONqvOBOHsdEOuGTAA2wFSGBKbALF6Qd0ucGxQm21Y
+ka1UwHYkkjbnbMbS9myrWar2zFr5Bz8LyKBsunY4DjzZ/uiYqe1M2ohnEvxUvEUK
+6jF2NYtTjI1QqN5xiaZCJxYmTSrdmNjuEbZ4X4ANCCGZn/4V2yQeByhm3+0R+Gn1
+S1WRJDGHJB3RnQClcXVoyDBOxqDTm/+/QtXeh5NMoNHKH6gmS6psQ3RvPPOfkwct
+vNhwAZq6oTrHVn6hoKlK8BLWxNewRqCc6MFX5/Bg6cJyaf5ubjQUn/sayQJnv3zA
+NbfGDt5mZdVZz371DHdM7G1lmyq8F4YfKyzuND5dFCua57+yQU72wnKp3pvEWMT3
+pdnkCkQ8MBZyx+RKFKHjYFPJEKDtMZ3ZZNag6/1+Fzt67AmAb18F4NOdH6vwTppn
+sdPPXEaJlPIf/ij1xVnF11vrjDp3V6+deqraa1HD2XVj6g3Zrx9KewyLqeGDtYjU
+rM240NVYABq99xcmhhx+P8Pc/4x0/XRTEuSmv26YDMJq2AyAJwwEFgAQCtpLbUsD
+s1tM7eyniWmduhxQixMAS+yuuNAFp/ATWPafYO8kaKu94fQpmpYcyuWn9TNi+6aT
+jZfo8U7xJ0fbl9qCCvUODqs63JdGT52x8MNLi0RsLY9dDxRgLUrqSqVT6CfczZAp
+5sflqj7D/UZawK7BqnbtM+UyMCtFOV7vKZ7zd6cMuAoRRAjRNOG+83BPAxriWXtb
+wun+gBf9xk1HlvDxi4j6FT0ro4KNfqZB1JrMiIYqMbpgqwN2p0WWb3I/Shi2RnKk
+IaX3Esv6Ji3G2MPW/hhYcoHDWHb0vzbSvV5KRU4w7ALAwKFsy106/JgUfbGHsUK7
+3lNpfWjkXuVzqQJBb5Lw5L8rArLpL9w4XJyfxIKE4r0NcHJVcPFgSGh2aO9IsUQm
+zGw6tIeKobRXkGWTsd8CV0yiKcCQjGF6wKxQbxCZpmCZUv3b8CIn/vgm56cka3Dc
+JmAVhE4ZjNfNR0BF74Da/rkggj30/fu+quMDyVNerfRKfR34G+4TQ5pAEq5UICZ9
++BGUkRGJxVKN+WCPn1+xYAPqu+3F6kaNQt9lJbct9lhDaIlfZ9/c42eK5X/4aQo/
+XE+Z+bg8sBxaK84Sht1g4dbV6H+7EpzL539cmCT4Hw1WYyGN8uoSB+KPA9geyPDN
+KVcOcl6XNV/dvzjoK+FWJyKIld+pClQ8lJH+EZqHHvCnRIMXbPWxAotewwgiHSwu
+wn+iyVdTMzZIxalsmQfb03MPeGDB8QznYYgYNer11tqaN8sNfs7nxvrDy2J+Qqdz
+GY4S1rFYSLuAsG8H6JU7CbnVHEONDoB+vEJ6xsNYFRAcoJua8z8/1jB5ASKc10IK
+idrtWEt/jjSi5q68xRaBVvDjh8UjHzOag+ndT3om01UofXi5ZeLXpGjO6BJOt8iK
+7ek61IjEVuen6oud57/s61kruLIq/RJ4kbgK0drg6QElcRRK5riXfvr2M8TKc2dh
+3yto8jcogMRMfsbdBQYOxYZCbyyDz56TbzT9lto6p2DwcIa5rxAG7NgEJnvua20S
+eH4hBm8ynd/3lqb1mkarWJh8yA==
+=51yS
 -----END PGP SIGNATURE-----


Reply via email to