summaryrefslogtreecommitdiff
path: root/wm
diff options
context:
space:
mode:
authormaya <maya@pkgsrc.org>2018-05-14 10:20:57 +0000
committermaya <maya@pkgsrc.org>2018-05-14 10:20:57 +0000
commitcdf7f955db45150239042abf06d6c1b01425261c (patch)
tree1d60f7a70b67bcd7f94c459ae5d72632151e9800 /wm
parentcdcac5c9729310aeb65b74b224487b728ddd506a (diff)
downloadpkgsrc-cdf7f955db45150239042abf06d6c1b01425261c.tar.gz
wmii: update to 3.9.2, use builtin libixp.
Requested in PR pkg/43459, also using some changes from pkgsrc-wip's wmii-devel. Seems to work as expected in NetBSD, although I didn't test the alternative wmiircs. Some of the changelog (might omit some parts) 3.9.2: * Work around mawk bug that broke wmiirc. 3.9.1: * Workaround a dash 0.5.6 bug that broke wmiirc. * Noticably speed-up python wmiirc startup. * Disable static linking which breaks wmiir in glibc 2.12. * Add PKGBUILD. 3.9: * wmii9menu is now Xinerama aware. * Install READMEs to $(PREFIX)/share/doc/wmii/. * Documentation updates. Add wmiir.1, wmii9menu.1. * Allow dragging floating clients from anywhere in their titlebars. * Allow specifying screen in area specs. * Change default $MODKEY to Mod4. * Minor changes to pygmi.events API. * Allow client to follow tag change in python wmiirc. * Update /tag/*/index to be more useful on Xinerama. * Add showkeys action to shell and python wmiirc. * Restore windows from floating layer to their original Xinerama screen. * Hide bar on non-primary Xinerama screens. * Allow resizing of rightmost and leftmost column dividers. 3.9a2: * Add Suraj's Rumai-based wmiirc. * Move rc.wmii to alternative_wmiircs/plan9port/wmiirc. * Install wmii.pdf to $(PREFIX)/share/doc/. * Focus windows regardless of whether they form a new group. * Update selection and execution of wmiirc: no more magic. * Update wmii.1 * Add alternative_wmiircs READMEs. 3.9a1: * Add new wmii guide. See doc/wmii.pdf * Allow for programmable completion in wimenu. * Use pkg-config globally. * Add Xft (antialiased font) support. * Add python wmiirc/9P client library * Allow bindings to work regardless of caps lock. * Add M-f fullscreen toggle key binding. * Augment /client/*/ctl Fullscreen command. * Allow setting of increment display from /ctl. * Show a client's extra tags in its titlebar. * Darken background when floating area selected. * Allow bar on top or bottom. * Allow for wmiirc_local. * Add grow and nudge commands to /tag/*/ctl. * Cascade windows when the floating layer fills. * Support alpha-transparant windows. * Add regex tag support. * It is now possible to float/unfloat windows with the mouse. * Make the bar Xdnd aware; DND between views is now possible. Fixed some window raising/moving bugs. * Add a notification bar. * Improved floating mouse resizing. * Improved mouse move/resize support for managed mode. * Better return from floating/fullscreen to managed mode. * Allow comments (#.*\n) in rules and ctl files. * Add /client/*/ctl ?slay? command. * Detect unresponsive clients on ?kill?. * Draw titlebars of floating clients differently. * Add wihack: LD_PRELOAD hack to set window properties of programs: * Respect window groups * Add ?Kill? to client right-click menu * wmii9menu now takes similar args to wimenu * Document grow/nudge commands. * Add wimenu with history and caret support * Add wistrut. Undocumented, not built by default. * EWMH strut support. * Basic EWMH support. * Better fullscreen support. * XRandR support. * Xinerama support. 2008-08-25: * libixp version 97 now required * Stack and max modes now affect floating clients: - max: Collapsed clients disappear, all clients disappear when managed layer is selected. - stack: All clients but selected are collapsed. * Adobe's Flash plugin's fullscreen mode now works. * Some annoying focus bugs are fixed.
Diffstat (limited to 'wm')
-rw-r--r--wm/wmii/Makefile44
-rw-r--r--wm/wmii/PLIST48
-rw-r--r--wm/wmii/distinfo18
-rw-r--r--wm/wmii/patches/patch-aa52
-rw-r--r--wm/wmii/patches/patch-ab16
-rw-r--r--wm/wmii/patches/patch-ac28
-rw-r--r--wm/wmii/patches/patch-cmd_wmii_main.c15
-rw-r--r--wm/wmii/patches/patch-util_compile36
8 files changed, 138 insertions, 119 deletions
diff --git a/wm/wmii/Makefile b/wm/wmii/Makefile
index 2d086590638..f1e037ba161 100644
--- a/wm/wmii/Makefile
+++ b/wm/wmii/Makefile
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.32 2017/09/06 11:30:41 wiz Exp $
+# $NetBSD: Makefile,v 1.33 2018/05/14 10:20:57 maya Exp $
-DISTNAME= wmii-3.6
-PKGREVISION= 4
+PKGNAME= wmii-3.9.2
+DISTNAME= wmii+ixp-3.9.2
CATEGORIES= wm
MASTER_SITES= http://dl.suckless.org/wmii/
@@ -9,6 +9,7 @@ MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://github.com/0intro/wmii
COMMENT= Modular and keyboard-friendly window manager
LICENSE= mit
+EXTRACT_SUFX= .tbz
DEPENDS+= dmenu>=3.7:../../x11/dmenu
@@ -22,16 +23,29 @@ MAKE_ENV+= PKG_SYSCONFBASE=${PKG_SYSCONFBASE}
MAKE_JOBS_SAFE= no
# see ${WRKSRC}/mk/wmii.mk
-CONFVERSION= 3.5
-PLIST_SUBST+= CONFVERSION=${CONFVERSION}
+CONFVERSION= 3.9.2
-PKG_SYSCONFSUBDIR= wmii-${CONFVERSION}
-EGDIR= ${PREFIX}/share/examples/${PKG_SYSCONFSUBDIR}
-EGFILES= rc.wmii welcome wmiirc
+EGDIR= ${PREFIX}/share/examples/wmii
+EGSUBDIR.top=
+EGFILES.top+= wmiirc welcome
+EGSUBDIR.pygmi= python/pygmi
+EGFILES.pygmi+= __init__.py event.py fs.py menu.py monitor.py
+EGFILES.pygmi+= util.py
+EGSUBDIR.pyxp= python/pyxp
+EGFILES.pyxp+= __init__.py asyncclient.py client.py dial.py
+EGFILES.pyxp+= fcall.py fields.py messages.py mux.py types.py
+EGSUBDIR.python= python
+EGFILES.python+= wmiirc wmiirc.py
+EGSUBDIR.ruby= ruby
+EGFILES.ruby+= wmiirc config.rb config.yaml
CONF_FILES_MODE= 0755
-.for f in ${EGFILES}
-CONF_FILES+= ${EGDIR}/${f} ${PKG_SYSCONFDIR}/${f}
+.for subdir in top pygmi pyxp python ruby
+THING+= ${subdir}
+. for file in ${EGFILES.${subdir}}
+CONF_FILES+= ${EGDIR}/${EGSUBDIR.${subdir}}/${file} \
+ ${PKG_SYSCONFDIR}/wmii-${CONFVERSION}/${EGSUBDIR.${subdir}}${file}
+. endfor
.endfor
LDFLAGS.SunOS+= -lsocket -lnsl -liconv
@@ -39,15 +53,19 @@ LDFLAGS.SunOS+= -lsocket -lnsl -liconv
SUBST_CLASSES+= vars
SUBST_STAGE.vars= pre-build
SUBST_FILES.vars= util/compile
-SUBST_VARS.vars= EGREP SED SH
+SUBST_VARS.vars= EGREP SED SH AWK
post-build:
mv ${WRKSRC}/man/wmii.1 ${WRKSRC}/man/wmii.tbl
${TBL} ${WRKSRC}/man/wmii.tbl > ${WRKSRC}/man/wmii.1
.include "../../converters/libiconv/buildlink3.mk"
-.include "../../devel/libixp/buildlink3.mk"
-.include "../../x11/libX11/buildlink3.mk"
+# bundles it's own libixp, which is needed until a new stable release is out.
+#.include "../../devel/libixp/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
.include "../../x11/libXt/buildlink3.mk"
+.include "../../x11/libXft/buildlink3.mk"
+.include "../../x11/libX11/buildlink3.mk"
+.include "../../x11/libXinerama/buildlink3.mk"
+.include "../../x11/libXrandr/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/wm/wmii/PLIST b/wm/wmii/PLIST
index 37c2bfcbb90..8cee6760414 100644
--- a/wm/wmii/PLIST
+++ b/wm/wmii/PLIST
@@ -1,13 +1,45 @@
-@comment $NetBSD: PLIST,v 1.7 2009/06/14 18:19:03 joerg Exp $
+@comment $NetBSD: PLIST,v 1.8 2018/05/14 10:20:57 maya Exp $
+bin/wihack
+bin/wimenu
bin/wmii
+bin/wmii.rc
+bin/wmii.sh
bin/wmii9menu
-bin/wmii9rc
-bin/wmiiloop
bin/wmiir
-bin/wmiistartrc
+lib/libwmii_hack.so
+man/man1/wimenu.1
man/man1/wmii.1
-man/man1/wmiiloop.1
+man/man1/wmii9menu.1
man/man1/wmiir.1
-share/examples/wmii-${CONFVERSION}/rc.wmii
-share/examples/wmii-${CONFVERSION}/welcome
-share/examples/wmii-${CONFVERSION}/wmiirc
+share/doc/wmii/LICENSE
+share/doc/wmii/README
+share/doc/wmii/alternative_wmiircs/README
+share/doc/wmii/alternative_wmiircs/plan9port/README
+share/doc/wmii/alternative_wmiircs/python/README
+share/doc/wmii/alternative_wmiircs/ruby/HISTORY
+share/doc/wmii/alternative_wmiircs/ruby/LICENSE
+share/doc/wmii/alternative_wmiircs/ruby/README
+share/doc/wmii/wmii.pdf
+share/examples/wmii/plan9port/wmiirc
+share/examples/wmii/python/pygmi/__init__.py
+share/examples/wmii/python/pygmi/event.py
+share/examples/wmii/python/pygmi/fs.py
+share/examples/wmii/python/pygmi/menu.py
+share/examples/wmii/python/pygmi/monitor.py
+share/examples/wmii/python/pygmi/util.py
+share/examples/wmii/python/pyxp/__init__.py
+share/examples/wmii/python/pyxp/asyncclient.py
+share/examples/wmii/python/pyxp/client.py
+share/examples/wmii/python/pyxp/dial.py
+share/examples/wmii/python/pyxp/fcall.py
+share/examples/wmii/python/pyxp/fields.py
+share/examples/wmii/python/pyxp/messages.py
+share/examples/wmii/python/pyxp/mux.py
+share/examples/wmii/python/pyxp/types.py
+share/examples/wmii/python/wmiirc
+share/examples/wmii/python/wmiirc.py
+share/examples/wmii/ruby/config.rb
+share/examples/wmii/ruby/config.yaml
+share/examples/wmii/ruby/wmiirc
+share/examples/wmii/welcome
+share/examples/wmii/wmiirc
diff --git a/wm/wmii/distinfo b/wm/wmii/distinfo
index 3344b340782..3ef389a8e53 100644
--- a/wm/wmii/distinfo
+++ b/wm/wmii/distinfo
@@ -1,10 +1,10 @@
-$NetBSD: distinfo,v 1.14 2015/11/02 23:42:56 agc Exp $
+$NetBSD: distinfo,v 1.15 2018/05/14 10:20:57 maya Exp $
-SHA1 (wmii-3.6.tar.gz) = 48e24f84f60b9c6ce37f715a46bc32e35d2086f3
-RMD160 (wmii-3.6.tar.gz) = 29462b9ecc7d68e8e00e5f3eec82c2a46e268a52
-SHA512 (wmii-3.6.tar.gz) = 153ba298bf4353579dfe57c568ce6799e00241b8e5fa6bf0bdfd62972d428b4761dd13a2991204633d58757536ba35a0316df5c390097beaa5b84250fd349762
-Size (wmii-3.6.tar.gz) = 208249 bytes
-SHA1 (patch-aa) = a02c6e62e2cd47424fb6591f7991ef1d90159dcf
-SHA1 (patch-ab) = 5e208344ea8bde06ec4cc8084eef0e3ba2f165f7
-SHA1 (patch-ac) = 8e4712bd308caeba9ca5dad023e32db8b27f3b31
-SHA1 (patch-util_compile) = f6435bfa38bed3a8d897289ef2e0afeb793c5640
+SHA1 (wmii+ixp-3.9.2.tbz) = e85a2979a0bd0a1db7ed486fc709afe72bafd8b0
+RMD160 (wmii+ixp-3.9.2.tbz) = 8a401a5d0a033c0da254d15e7fe415ec40e7a332
+SHA512 (wmii+ixp-3.9.2.tbz) = c75d6d3f80e2b263c8d7b9eb6d0e700a1ad642209fc0984908e9399d22372c6c0572f47ab61881d5d56c4cc4eeb2914a545f6af1bbb936b65848764577d75761
+Size (wmii+ixp-3.9.2.tbz) = 432032 bytes
+SHA1 (patch-aa) = ba9598bf6d9313a800ee8de8588a6192c294e697
+SHA1 (patch-ab) = cdb5ae1f02497852a5c965bdfb106e1b3a77853e
+SHA1 (patch-cmd_wmii_main.c) = 2e52a5861b197b9ffa8b7df83230e7bc74059256
+SHA1 (patch-util_compile) = 0474964a1e2491a28a17cc1f37c7a3cadd3b598a
diff --git a/wm/wmii/patches/patch-aa b/wm/wmii/patches/patch-aa
index 37c5edd3dd7..a7ab8ab6a25 100644
--- a/wm/wmii/patches/patch-aa
+++ b/wm/wmii/patches/patch-aa
@@ -1,45 +1,19 @@
-$NetBSD: patch-aa,v 1.10 2013/05/21 14:59:25 jperkin Exp $
+$NetBSD: patch-aa,v 1.11 2018/05/14 10:20:57 maya Exp $
---- config.mk.orig 2007-11-16 13:59:15.000000000 +0000
+--- config.mk.orig 2010-06-10 07:24:04.000000000 +0000
+++ config.mk
-@@ -1,12 +1,11 @@
+@@ -1,11 +1,11 @@
# Customize below to fit your system
- # paths
+ # Paths
-PREFIX = /usr/local
--BIN = ${PREFIX}/bin
--MAN = ${PREFIX}/share/man
--ETC = ${PREFIX}/etc
--LIBDIR = ${PREFIX}/lib
--INCLUDE = ${PREFIX}/include
-+BIN = ${DESTDIR}${PREFIX}/bin
-+MAN = ${DESTDIR}${PREFIX}/${PKGMANDIR}
-+ETC = ${DESTDIR}${PKG_SYSCONFBASE}
-+LIBDIR = ${DESTDIR}${PREFIX}/lib
-+INCLUDE = ${DESTDIR}${PREFIX}/include
++PREFIX ?= /usr/local
+ BIN = $(PREFIX)/bin
+- MAN = $(PREFIX)/share/man
++ MAN = $(PREFIX)/$(PKGMANDIR)
+ DOC = $(PREFIX)/share/doc/wmii
+- ETC = $(PREFIX)/etc
++ ETC = $(PREFIX)/share/examples
+ LIBDIR = $(PREFIX)/lib
+ INCLUDE = $(PREFIX)/include
- # Includes and libs
- INCPATH = .:${ROOT}/include:${INCLUDE}:/usr/include
-@@ -14,9 +13,9 @@ LIBS = -L/usr/lib -lc -L${ROOT}/lib
-
- # Flags
- include ${ROOT}/mk/gcc.mk
--CFLAGS += -g -O0 -DIXPlint
--LDFLAGS += -g ${LIBS}
--STATIC = -static
-+CFLAGS += -DIXPlint
-+LDFLAGS += ${LIBS}
-+#STATIC = -static
- MKDEP = cpp -M
-
- # Compiler
-@@ -32,8 +31,7 @@ P9PATHS = ${PLAN9}:"'$${HOME}/plan9'":/u
- INCX11 = -I/usr/X11R6/include
- LIBX11 = -L/usr/X11R6/lib -lX11
- LIBICONV = # Leave blank if your libc includes iconv (glibc does)
--LIBIXP = ${ROOT}/libixp/libixp.a
--LIBIXP = ${LIBDIR}/libixp.a
-+LIBIXP = ${PREFIX}/lib/libixp.a
-
- # Solaris
- #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
diff --git a/wm/wmii/patches/patch-ab b/wm/wmii/patches/patch-ab
index fae7df6d6e1..94fe1c7ccdf 100644
--- a/wm/wmii/patches/patch-ab
+++ b/wm/wmii/patches/patch-ab
@@ -1,13 +1,13 @@
-$NetBSD: patch-ab,v 1.6 2010/02/12 20:42:33 joerg Exp $
+$NetBSD: patch-ab,v 1.7 2018/05/14 10:20:57 maya Exp $
---- rc/Makefile.orig 2007-11-16 14:59:15.000000000 +0100
+--- rc/Makefile.orig 2010-06-10 07:24:04.000000000 +0000
+++ rc/Makefile
@@ -2,7 +2,7 @@ ROOT=..
- include ${ROOT}/mk/hdr.mk
- include ${ROOT}/mk/wmii.mk
+ include $(ROOT)/mk/hdr.mk
+ include $(ROOT)/mk/wmii.mk
--BIN = ${ETC}/wmii-${CONFVERSION}
-+BIN = ${DESTDIR}${PREFIX}/share/examples/wmii-${CONFVERSION}
- TARG = rc.wmii \
- wmiirc \
+-BIN = $(ETC)/wmii$(CONFVERSION)
++BIN = $(PREFIX)/share/examples/wmii$(CONFVERSION)
+ TARG = wmiirc \
welcome
+
diff --git a/wm/wmii/patches/patch-ac b/wm/wmii/patches/patch-ac
deleted file mode 100644
index c4e0e24a701..00000000000
--- a/wm/wmii/patches/patch-ac
+++ /dev/null
@@ -1,28 +0,0 @@
-$NetBSD: patch-ac,v 1.1 2008/01/07 09:54:26 ghen Exp $
-
-http://www.suckless.org/hg.rc/wmii/rev/3749896cf02c
-
---- cmd/wmii/utf.c.orig 2007-11-16 14:59:15.000000000 +0100
-+++ cmd/wmii/utf.c
-@@ -2,6 +2,7 @@
- #include "dat.h"
- #include <errno.h>
- #include <iconv.h>
-+#include <langinfo.h>
- #include <string.h>
- #include "fns.h"
-
-@@ -11,8 +12,11 @@ toutf8n(char *str, size_t nstr) {
- char *buf, *pos;
- size_t nbuf, bsize;
-
-- if(cd == nil)
-- cd = iconv_open("UTF-8", "");
-+ if(cd == nil) {
-+ cd = iconv_open("UTF-8", nl_langinfo(CODESET));
-+ if(cd == (iconv_t)-1)
-+ fatal("Can't convert from native codeset to UTF-8");
-+ }
- iconv(cd, nil, nil, nil, nil);
-
- bsize = nstr * 1.25 + 4;
diff --git a/wm/wmii/patches/patch-cmd_wmii_main.c b/wm/wmii/patches/patch-cmd_wmii_main.c
new file mode 100644
index 00000000000..61c8a2b4d4c
--- /dev/null
+++ b/wm/wmii/patches/patch-cmd_wmii_main.c
@@ -0,0 +1,15 @@
+$NetBSD: patch-cmd_wmii_main.c,v 1.1 2018/05/14 10:20:57 maya Exp $
+
+signal.h for sigaction, otherwise it dumps core on netbsd/amd64
+due to a reference to compat sigaction.
+
+--- cmd/wmii/main.c.orig 2010-06-10 07:24:02.000000000 +0000
++++ cmd/wmii/main.c
+@@ -10,6 +10,7 @@
+ #include <fcntl.h>
+ #include <locale.h>
+ #include <pwd.h>
++#include <signal.h>
+ #include <sys/signal.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
diff --git a/wm/wmii/patches/patch-util_compile b/wm/wmii/patches/patch-util_compile
index b1ff343f4ff..7c9532d4782 100644
--- a/wm/wmii/patches/patch-util_compile
+++ b/wm/wmii/patches/patch-util_compile
@@ -1,31 +1,39 @@
-$NetBSD: patch-util_compile,v 1.1 2013/05/20 09:04:44 jperkin Exp $
+$NetBSD: patch-util_compile,v 1.2 2018/05/14 10:20:57 maya Exp $
---- util/compile.orig 2007-11-16 13:59:15.000000000 +0000
+--- util/compile.orig 2010-06-10 07:24:04.000000000 +0000
+++ util/compile
-@@ -1,7 +1,7 @@
--#!/bin/sh -f
-+#!@SH@ -f
+@@ -4,7 +4,7 @@ CC=$1
+ CFLAGS=$2; shift 2
outfile="$1"; shift
-bin="$(echo $0 | sed 's,/[^/]*$,,')"
-+bin="$(echo $0 | @SED@ 's,/[^/]*$,,')"
++bin="$(echo $0 | /usr/bin/sed 's,/[^/]*$,,')"
# Derived from Russ Cox's 9c in plan9port.
-@@ -12,12 +12,12 @@ echo CC $($bin/cleanname ${BASE}$outfile
- $CC -o $outfile $CFLAGS $@ 2>$xtmp
+@@ -16,7 +16,7 @@ eval '$CC -o $outfile '"$CFLAGS"' $@ >$x
status=$?
+ [ $? -eq 0 ] || echo $CC -o $outfile $CFLAGS $@ >&2
-base=$(echo $BASE | sed 's/,/\\,/g')
-+base=$(echo $BASE | @SED@ 's/,/\\,/g')
++base=$(echo $BASE | /usr/bin/sed 's/,/\\,/g')
re='\([^[:space:]/]*\..:[0-9]\)'
+ undup() { # GCC is crap.
+@@ -58,11 +58,11 @@ undup() { # GCC is crap.
+ }'
+ }
+
-cat $xtmp | sed "s,^$re,$base&,g; s,\([[:space:]]\)$re,\1$base\2,g" |
-- egrep -v ': error: .Each undeclared identifier|: error: for each function it appears|is dangerous, better use|is almost always misused|: In function |: At top level:|support .long long.|use of C99 long long|ISO C forbids conversion' |
+- egrep -v ': error: .Each undeclared identifier|: error: for each function it appears|is dangerous, better use|is almost always misused|: In function |: At top level:|support .long long.|use of C99 long long|ISO C forbids conversion|warning:.*warn_unused_result' |
- sed 's/ .first use in this function.$//; s/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' |
-+cat $xtmp | @SED@ "s,^$re,$base&,g; s,\([[:space:]]\)$re,\1$base\2,g" |
-+ @EGREP@ -v ': error: .Each undeclared identifier|: error: for each function it appears|is dangerous, better use|is almost always misused|: In function |: At top level:|support .long long.|use of C99 long long|ISO C forbids conversion' |
-+ @SED@ 's/ .first use in this function.$//; s/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' |
- uniq 1>&2
+- awk '$1 == "warning:"{t=$2" "$1; sub(/^[^ ]+ [^ ]+ /, ""); $0 = t" "$0}; //' |
+- awk '{sub(/\[/, ": [", $1); print}' |
++cat $xtmp | /usr/bin/sed "s,^$re,$base&,g; s,\([[:space:]]\)$re,\1$base\2,g" |
++ /usr/bin/egrep -v ': error: .Each undeclared identifier|: error: for each function it appears|is dangerous, better use|is almost always misused|: In function |: At top level:|support .long long.|use of C99 long long|ISO C forbids conversion|warning:.*warn_unused_result' |
++ /usr/bin/sed 's/ .first use in this function.$//; s/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' |
++ /usr/bin/awk '$1 == "warning:"{t=$2" "$1; sub(/^[^ ]+ [^ ]+ /, ""); $0 = t" "$0}; //' |
++ /usr/bin/awk '{sub(/\[/, ": [", $1); print}' |
+ undup 1>&2
rm -f $xtmp