1 # $Id: junkbuster-rh.spec,v 1.34 2002/03/07 00:11:57 morcego Exp $
3 # Written by and Copyright (C) 2001 the SourceForge
4 # IJBSWA team. http://ijbswa.sourceforge.net
6 # Based on the Internet Junkbuster originally written
7 # by and Copyright (C) 1997 Anonymous Coders and
8 # Junkbusters Corporation. http://www.junkbusters.com
10 # This program is free software; you can redistribute it
11 # and/or modify it under the terms of the GNU General
12 # Public License as published by the Free Software
13 # Foundation; either version 2 of the License, or (at
14 # your option) any later version.
16 # This program is distributed in the hope that it will
17 # be useful, but WITHOUT ANY WARRANTY; without even the
18 # implied warranty of MERCHANTABILITY or FITNESS FOR A
19 # PARTICULAR PURPOSE. See the GNU General Public
20 # License for more details.
22 # The GNU General Public License should be included with
23 # this file. If not, you can view it at
24 # http://www.gnu.org/copyleft/gpl.html
25 # or write to the Free Software Foundation, Inc., 59
26 # Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28 # $Log: junkbuster-rh.spec,v $
29 # Revision 1.34 2002/03/07 00:11:57 morcego
30 # Few changes on the %pre and %post sections of the rh specfile to handle
31 # usernames more cleanly
33 # Revision 1.33 2002/03/05 13:13:57 morcego
34 # - Added "make redhat-dok" to the build phase
35 # - Added docbook-utils to BuildRequires
37 # Revision 1.32 2002/03/05 12:34:24 morcego
38 # - Changing section internaly on the manpage from 1 to 8
39 # - We now require packages, not files, to avoid issues with apt
41 # Revision 1.31 2002/03/04 18:06:09 morcego
42 # SPECFILE: fixing permissing of the init script (broken by the last change)
44 # Revision 1.30 2002/03/04 16:18:03 morcego
45 # General cleanup of the rh specfile.
48 # * Mon Mar 04 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
49 # + junkbuster-2.9.11-2
50 # - General specfile fixup, using the best recomended practices, including:
51 # - Adding -q to %%setup
52 # - Using macros whereever possible
53 # - Not using wildchars on %%files section
54 # - Doubling the percentage char on changelog and comments, to
55 # avoid rpm expanding them
57 # Revision 1.29 2002/03/03 19:21:22 hal9
58 # Init script fails if shell is /bin/false.
60 # Revision 1.28 2002/01/09 18:34:03 hal9
63 # Revision 1.27 2002/01/09 18:32:02 hal9
64 # Removed RPM_OPT_FLAGS kludge.
66 # Revision 1.26 2002/01/09 18:21:10 hal9
67 # A few minor updates.
69 # Revision 1.25 2001/12/28 01:45:36 steudten
70 # Add paranoia check and BuildReq: gzip
72 # Revision 1.24 2001/12/01 21:43:14 hal9
73 # Allowed for new ijb.action file.
75 # Revision 1.23 2001/11/06 12:09:03 steudten
76 # Compress doc files. Install README and AUTHORS at last as document.
78 # Revision 1.22 2001/11/05 21:37:34 steudten
79 # Fix to include the actual version for name.
80 # Let the 'real' packager be included - sorry stefan.
82 # Revision 1.21 2001/10/31 19:27:27 swa
83 # consistent description. new name for suse since
84 # we had troubles with rpms of identical names
87 # Revision 1.20 2001/10/24 15:45:49 hal9
88 # To keep Thomas happy (aka correcting my mistakes)
90 # Revision 1.19 2001/10/15 03:23:59 hal9
93 # Revision 1.17 2001/10/10 18:59:28 hal9
94 # Minor change for init script.
96 # Revision 1.16 2001/09/24 20:56:23 hal9
99 # Revision 1.13 2001/09/10 17:44:43 swa
100 # integrate three pieces of documentation. needs work.
101 # will not build cleanly under redhat.
103 # Revision 1.12 2001/09/10 16:25:04 swa
104 # copy all templates. version updated.
106 # Revision 1.11 2001/07/03 11:00:25 sarantis
107 # replaced permissionsfile with actionsfile
109 # Revision 1.10 2001/07/03 09:34:44 sarantis
110 # bumped up version number.
112 # Revision 1.9 2001/06/12 18:15:29 swa
113 # the %% in front of configure (see tag below) confused
114 # the rpm build process on 7.1.
116 # Revision 1.8 2001/06/12 17:15:56 swa
117 # fixes, because a clean build on rh6.1 was impossible.
118 # GZIP confuses make, %% configure confuses rpm, etc.
120 # Revision 1.7 2001/06/11 12:17:26 sarantis
123 # Revision 1.6 2001/06/11 11:28:25 sarantis
124 # Further optimizations and adaptations in the spec file.
126 # Revision 1.5 2001/06/09 09:14:11 swa
127 # shamelessly adapted RPM stuff from the newest rpm that
128 # RedHat provided for the JB.
130 # Revision 1.4 2001/06/08 20:54:18 swa
131 # type with status file. remove forward et. al from file list.
133 # Revision 1.3 2001/06/07 17:28:10 swa
136 # Revision 1.2 2001/06/04 18:31:58 swa
137 # files are now prefixed with either `confdir' or `logdir'.
138 # `make redhat-dist' replaces both entries confdir and logdir
141 # Revision 1.1 2001/06/04 10:44:57 swa
142 # `make redhatr-dist' now works. Except for the paths
143 # in the config file.
148 # Defines should happen in the begining of the file
149 %define ijbconf %{_sysconfdir}/%{name}
151 Summary: The Internet Junkbuster
152 Vendor: http://ijbswa.sourceforge.net
156 Source0: http://www.waldherr.org/%{name}/ijbswa-%{version}.tar.gz
158 BuildRoot: %{_tmppath}/%{name}-%{version}-root
159 Group: Networking/Utilities
160 URL: http://ijbswa.sourceforge.net/
161 Obsoletes: junkbuster-raw junkbuster-blank
162 # Prereq: /usr/sbin/useradd , /sbin/chkconfig , /sbin/service
163 Prereq: shadow-utils, chkconfig, initscripts, sh-utils
164 BuildRequires: perl gzip sed docbook-utils
165 Conflicts: junkbuster-raw junkbuster-blank
168 Internet Junkbuster is a web proxy with advanced filtering
169 capabilities for protecting privacy, filtering web page content,
170 managing cookies, controlling access, and removing ads, banners,
171 pop-ups and other obnoxious Internet Junk. Junkbuster has a very
172 flexible configuration and can be customized to suit individual needs
173 and tastes. Internet Junkbuster has application for both stand-alone
174 systems and multi-user networks.
177 %setup -q -c -n ijbswa
184 ## Explicitily stripping is not recomended.
185 ## This is handled altomaticaly by RPM, and can couse troubles if
186 ## anyone wants to build an unstriped version - morcego
190 [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
191 mkdir -p %{buildroot}%{_sbindir} \
192 %{buildroot}%{_mandir}/man8 \
193 %{buildroot}%{_localstatedir}/log/%{name} \
194 %{buildroot}%{ijbconf}/templates \
195 %{buildroot}%{_sysconfdir}/logrotate.d \
196 %{buildroot}%{_sysconfdir}/rc.d/init.d
198 ## Manual gziping of manpages should not be done, once it can
199 ## break the building on some distributions. Anyway, rpm does it
200 ## automagicaly these days
201 ## Gziping the documentation files is not recomended - morcego
202 #gzip README AUTHORS ChangeLog %{name}.1 || /bin/true
204 install -s -m 744 %{name} %{buildroot}%{_sbindir}/%{name}
206 ## We need to change the man section internaly on the manpage
207 ## -- morcego (sugestion by Hal Burgiss)
208 #cp -f %{name}.1 %{buildroot}%{_mandir}/man8/%{name}.8
209 sed -e 's@^.TH JUNKBUSTER 1@.TH JUNKBUSTER 8@g' %{name}.1 > %{buildroot}%{_mandir}/man8/%{name}.8
210 cp -f *.action %{buildroot}%{ijbconf}/
211 cp -f re_filterfile %{buildroot}%{ijbconf}/re_filterfile
212 cp -f trust %{buildroot}%{ijbconf}/trust
213 cp -f templates/* %{buildroot}%{ijbconf}/templates/
214 cp -f %{name}.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
215 install -m 755 %{name}.init %{buildroot}%{_sysconfdir}/rc.d/init.d/%{name}
216 install -m 711 -d %{buildroot}%{_localstatedir}/log/%{name}
218 # verify all file locations, etc. in the config file
219 # don't start with ^ or commented lines are not replaced
220 ## Changing the sed paramter delimiter to @, so we don't have to
221 ## escape the slashes
223 sed 's@^confdir.*@confdir %{_sysconfdir}/%{name}@g' | \
224 # sed 's/^permissionsfile.*/permissionsfile \/etc\/%{name}\/permissionsfile/g' | \
225 # sed 's/^re_filterfile.*/re_filterfile \/etc\/%{name}\/re_filterfile/g' | \
226 # sed 's/^logfile.*/logfile \%{_localstatedir}\/log\/%{name}\/logfile/g' | \
227 # sed 's/^jarfile.*/jarfile \%{_localstatedir}\/log\/%{name}\/jarfile/g' | \
228 # sed 's/^forward.*/forward \/etc\/%{name}\/forward/g' | \
229 # sed 's/^aclfile.*/aclfile \/etc\/%{name}\/aclfile/g' > \
230 sed 's@^logdir.*@logdir %{_localstatedir}/log/%{name}@g' > \
231 %{buildroot}%{ijbconf}/config
232 perl -pe 's/{-no-cookies}/{-no-cookies}\n\.redhat.com/' ijb.action >\
233 %{buildroot}%{ijbconf}/ijb.action
235 ## Macros are expanded even on commentaries. So, we have to use %%
240 # We check to see if the user junkbuster exists.
241 # If it does, we do nothing
242 # If we don't, we check to see if the user junkbust exist and, in case it
243 # does, we change it do junkbuster. If it also does not exist, we create the
244 # junkbuster user -- morcego
245 id junkbuster > /dev/null 2>&1
246 if [ $? -eq 1 ]; then
247 id junkbust > /dev/null 2>&1
248 if [ $? -eq 0 ]; then
249 /usr/sbin/usermod -l junkbuster -d %{_sysconfdir}/%{name} -s "" junkbust > /dev/null 2>&1
251 /usr/sbin/useradd -d %{_sysconfdir}/%{name} -r -s "" junkbuster > /dev/null 2>&1
256 # for upgrade from 2.0.x
257 [ -f %{_localstatedir}/log/%{name}/%{name} ] &&\
258 mv -f %{_localstatedir}/log/%{name}/%{name} %{_localstatedir}/log/%{name}/logfile || /bin/true
259 chown -R %{name}:%{name} %{_localstatedir}/log/%{name} 2>/dev/null
260 chown -R %{name}:%{name} /etc/%{name} 2>/dev/null
261 if [ "$1" = "1" ]; then
262 /sbin/chkconfig --add %{name}
263 /sbin/service %{name} condrestart > /dev/null 2>&1
265 # 01/09/02 HB, getting rid of any user=junkbust
266 # Changed by morcego to use the id command.
267 id junkbust > /dev/null 2>&1 && /usr/sbin/userdel junkbust || /bin/true
270 if [ "$1" = "0" ]; then
271 /sbin/service %{name} stop > /dev/null 2>&1 ||:
272 /sbin/chkconfig --del %{name}
276 #if [ "$1" -ge "1" ]; then
277 # /sbin/service %{name} condrestart > /dev/null 2>&1
281 [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
284 %defattr(0644,root,root,0755)
285 %doc README AUTHORS ChangeLog
286 # Where are the webserver/{developer,user}-manual files ?
287 %doc doc/text/developer-manual.txt doc/text/user-manual.txt
288 %doc doc/webserver/developer-manual
289 %doc doc/webserver/user-manual
290 #%doc %{name}.weekly %{name}.monthly AUTHORS
293 %dir %{ijbconf}/templates
294 %attr(0744,junkbuster,junkbuster) %dir %{_localstatedir}/log/%{name}
296 %attr(0744,junkbuster,junkbuster)%{_sbindir}/%{name}
298 # We should not use wildchars here. This could mask missing files problems
300 %config %{ijbconf}/config
301 %config %{ijbconf}/ijb-advanced.action
302 %config %{ijbconf}/ijb-basic.action
303 %config %{ijbconf}/ijb-intermediate.action
304 %config %{ijbconf}/ijb.action
305 %config %{ijbconf}/re_filterfile
306 %config %{ijbconf}/trust
308 %config %{ijbconf}/templates/blocked
309 %config %{ijbconf}/templates/blocked-compact
310 %config %{ijbconf}/templates/cgi-error-404
311 %config %{ijbconf}/templates/cgi-error-bad-param
312 %config %{ijbconf}/templates/cgi-error-disabled
313 %config %{ijbconf}/templates/cgi-error-file
314 %config %{ijbconf}/templates/cgi-error-modified
315 %config %{ijbconf}/templates/cgi-error-parse
316 %config %{ijbconf}/templates/connect-failed
317 %config %{ijbconf}/templates/default
318 %config %{ijbconf}/templates/edit-actions-add-url-form
319 %config %{ijbconf}/templates/edit-actions-for-url
320 %config %{ijbconf}/templates/edit-actions-list
321 %config %{ijbconf}/templates/edit-actions-list-section
322 %config %{ijbconf}/templates/edit-actions-list-url
323 %config %{ijbconf}/templates/edit-actions-remove-url-form
324 %config %{ijbconf}/templates/edit-actions-url-form
325 %config %{ijbconf}/templates/no-such-domain
326 %config %{ijbconf}/templates/show-request
327 %config %{ijbconf}/templates/show-status
328 %config %{ijbconf}/templates/show-status-file
329 %config %{ijbconf}/templates/show-url-info
330 %config %{ijbconf}/templates/show-version
331 %config %{ijbconf}/templates/toggle
332 %config %{ijbconf}/templates/toggle-mini
333 %config %{ijbconf}/templates/untrusted
335 %config %{_sysconfdir}/logrotate.d/%{name}
336 %config %attr(0744,root,root) %{_sysconfdir}/rc.d/init.d/%{name}
338 %{_mandir}/man8/%{name}.8*
341 * Tue Mar 06 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
342 + junkbuster-2.9.11-6
343 - Changed the routined that handle the junkbust and junkbuster users on
344 %%pre and %%post to work in a smoother manner
345 - %%files now uses hardcoded usernames, to avoid problems with package
346 name changes in the future
348 * Tue Mar 05 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
349 + junkbuster-2.9.11-5
350 - Added "make redhat-dok" to the build process
351 - Added docbook-utils to BuildRequires
353 * Tue Mar 05 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
354 + junkbuster-2.9.11-4
355 - Changing man section in the manpage from 1 to 8
356 - We now require packages, not files, to avoid issues with apt
358 * Mon Mar 04 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
359 + junkbuster-2.9.11-3
360 - Fixing permissions of the init script
362 * Mon Mar 04 2002 Rodrigo Barbosa <rodrigob@tisbrasil.com.br>
363 + junkbuster-2.9.11-2
364 - General specfile fixup, using the best recomended practices, including:
365 - Adding -q to %%setup
366 - Using macros whereever possible
367 - Not using wildchars on %%files section
368 - Doubling the percentage char on changelog and comments, to
369 avoid rpm expanding them
371 * Sun Mar 03 2002 Hal Burgiss <hal@foobox.net>
372 - /bin/false for shell causes init script to fail. Reverting.
374 * Wed Jan 09 2002 Hal Burgiss <hal@foobox.net>
375 - Removed UID 73. Included user-manual and developer-manual in docs.
376 Include other actions files. Default shell is now /bin/false.
377 Userdel user=junkbust. ChangeLog was not zipped. Removed
378 RPM_OPT_FLAGS kludge.
380 * Fri Dec 28 2001 Thomas Steudten <thomas@steudten.ch>
381 - add paranoia check for 'rm -rf %%{buildroot}'
382 - add gzip to 'BuildRequires'
384 * Sat Dec 1 2001 Hal Burgiss <hal@foobox.net>
385 - actionsfile is now ijb.action.
387 * Tue Nov 6 2001 Thomas Steudten <thomas@steudten.ch>
389 - Add more documents for installation
390 - Add version string to name and source
392 * Wed Oct 24 2001 Hal Burigss <hal@foobox.net>
393 - Back to user 'junkbuster' and fix configure macro.
395 * Wed Oct 10 2001 Hal Burigss <hal@foobox.net>
396 - More changes for user 'junkbust'. Init script had 'junkbuster'.
398 * Sun Sep 23 2001 Hal Burgiss <hal@foobox.net>
399 - Change of $RPM_OPT_FLAGS handling. Added new HTML doc files.
400 - Changed owner of /etc/junkbuster to shut up PAM/xauth log noise.
402 * Thu Sep 13 2001 Hal Burgiss <hal@foobox.net>
403 - Added $RPM_OPT_FLAGS support, renaming of old logfile, and
404 - made sure no default shell exists for user junkbust.
406 * Sun Jun 3 2001 Stefan Waldherr <stefan@waldherr.org>
409 * Mon Sep 25 2000 Stefan Waldherr <stefan@waldherr.org>
410 - CLF Logging patch by davep@cyw.uklinux.net
411 - Hal DeVore <haldevore@earthling.net> fix akamaitech in blocklist
413 * Sun Sep 17 2000 Stefan Waldherr <stefan@waldherr.org>
414 - Steve Kemp skx@tardis.ed.ac.uk's javascript popup patch.
415 - Markus Breitenbach breitenb@rbg.informatik.tu-darmstadt.de supplied
416 numerous fixes and enhancements for Steve's patch.
417 - adamlock@netscape.com (Adam Lock) in the windows version:
418 - Taskbar activity spinner always spins even when logging is
419 turned off (which is the default) - people who don't
420 like the spinner can turn it off from a menu option.
421 - Taskbar popup menu has a options submenu - people can now
422 open the settings files for cookies, blockers etc.
423 without opening the JB window.
424 - Logging functionality works again
425 - Buffer overflow is fixed - new code uses a bigger buffer
426 and snprintf so it shouldn't overflow anymore.
427 - Fixed userid swa, group learning problem while installing.
429 - Added patch by Benjamin Low <ben@snrc.uow.edu.au> that prevents JB to
430 core dump when there is no log file.
431 - Tweaked SuSE startup with the help of mohataj@gmx.net and Doc.B@gmx.de.
432 - Fixed man page to include imagefile and popupfile.
433 - Sanity check for the statistics function added.
434 - "Patrick D'Cruze" <pdcruze@orac.iinet.net.au>: It seems Microsoft
435 are transitioning Hotmail from FreeBSD/Apache to Windows 2000/IIS.
436 With IIS/5, it appears to omit the trailing \r\n from http header
437 only messages. eg, when I visit http://www.hotmail.com, IIS/5
438 responds with a HTTP 302 redirect header. However, this header
439 message is missing the trailing \r\n. IIS/5 then closes the
440 connection. Junkbuster, unfortunately, discards the header becomes
441 it thinks it is incomplete - and it is. MS have transmitted an
443 - Added bug reports and patch submission forms in the docs.
445 * Mon Mar 20 2000 Stefan Waldherr <stefan@waldherr.org>
446 Andrew <anw@tirana.freewire.co.uk> extended the JB:
447 Display of statistics of the total number of requests and the number
448 of requests filtered by junkbuster, also the percentage of requests
449 filtered. Suppression of the listing of files on the proxy-args page.
450 All stuff optional and configurable.
452 * Sun Sep 12 1999 Stefan Waldherr <stefan@waldherr.org>
453 Jan Willamowius (jan@janhh.shnet.org) fixed a bug in the
454 code which prevented the JB from handling URLs of the form
455 user:password@www.foo.com. Fixed.
457 * Mon Aug 2 1999 Stefan Waldherr <stefan@waldherr.org>
458 Blank images are no longer cached, thanks to a hint from Markus
459 Breitenbach <breitenb@rbg.informatik.tu-darmstadt.de>. The user
460 agent is NO longer set by the Junkbuster. Sadly, many sites depend
461 on the correct browser version nowadays. Incorporated many
462 suggestions from Jan "Yenya" Kasprzak <kas@fi.muni.cz> for the
463 spec file. Fixed logging problem and since runlevel 2 does not
464 use networking, I replaced /etc/rc.d/rc2.d/S84junkbuster with
465 /etc/rc.d/rc2.d/K09junkbuster thanks to Shaw Walker
466 <walker@netgate.net>. You should now be able to build this RPM as
467 a non-root user (mathias@weidner.sem.lipsia.de).
469 * Sun Jan 31 1999 Stefan Waldherr <stefan@waldherr.org>
470 %%{_localstatedir}/log/junkbuster set to nobody. Added /etc/junkbuster/imagelist
471 to allow more sophisticated matching of blocked images. Logrotate
472 logfile. Added files for auto-updating the blocklist et al.
474 * Wed Dec 16 1998 Stefan Waldherr <stefan@waldherr.org>
475 Configure blank version via config file. No separate blank
476 version anymore. Added Roland's <roland@spinnaker.rhein.de>
477 patch to show a logo instead of a blank area. Added a suggestion
478 from Alex <alex@cocoa.demon.co.uk>: %%{_localstatedir}/lock/subsys/junkbuster.
479 More regexps in the blocklist. Prepared the forwardfile for
480 squid. Extended image regexp with help from gabriel
481 <somlo@CS.ColoState.EDU>.
483 * Thu Nov 19 1998 Stefan Waldherr <stefan@waldherr.org>
484 All RPMs now identify themselves in the show-proxy-args page.
485 Released Windoze version. Run junkbuster as nobody instead of
488 * Fri Oct 30 1998 Stefan Waldherr <stefan@waldherr.org>
489 Newest version. First release (hence the little version number
490 mixture -- 2.0.2-0 instead of 2.0-7). This version tightens
491 security over 2.0.1; some multi-user sites will need to change
492 the listen-address in the configuration file. The blank version of
493 the Internet Junkbuster has a more sophisticated way of replacing
494 images. All RPMs identify themselves in the show-proxy-args page.
496 * Thu Sep 23 1998 Stefan Waldherr <stefan@waldherr.org>
497 Modified the blocking feature, so that only GIFs and JPEGs are
498 blocked and replaced but not HTML pages. Thanks to
499 "Gerd Flender" <plgerd@informatik.uni-siegen.de> for this nice
500 idea. Added numerous stuff to the blocklist. Keep patches in
501 seperate files and no longer in diffs (easier to maintain).
503 * Tue Jun 16 1998 Stefan Waldherr <swa@cs.cmu.edu>
504 Moved config files to /etc/junkbuster directory, moved man page,
505 added BuildRoot directive (Thanks to Alexey Nogin <ayn2@cornell.edu>)
506 Made new version junkbuster-raw (which is only a stripped version of
507 the junkuster rpm, i.e. without my blocklist, etc.)
509 * Tue Jun 16 1998 (2.0-1)
510 Uhm, not that much. Just a new junkbuster version that
511 fixes a couple of bugs ... and of course a bigger
512 blocklist with the unique Now-less-ads-than-ever(SM)
514 Oh, one thing: I changed the default user agent to Linux -- no
515 need anymore to support Apple.
517 * Tue Jun 16 1998 (2.0-0)
518 Now-less-ads-than-ever (SM)
519 compiled with gcc instead of cc
520 compiled with -O3, thus it should be a little faster
521 show-proxy-args now works
522 /etc/junkbuster.init wasn't necessary
524 * Tue Jun 16 1998 (1.4)
525 some more config files were put into /etc
526 The junkbuster-blank rpm returns a 1x1 pixel image, that gets
527 displayed by Netscape instead of the blocked image.
528 Read http://www.waldherr.org/junkbuster/ for
531 * Tue Jun 16 1998 (1.3)
532 The program has been moved to /usr/sbin (from /usr/local/bin)
533 Init- and stopscripts (/etc/rc.d/rc*) have been added so
534 that the junkbuster starts automatically during bootup.
535 The /etc/blocklist file is much more sophisticated. Theoretically
536 one should e.g. browse all major US and German newspapers without
537 seeing one annoying ad.
538 junkbuster.init was modified. It now starts junkbuster with an
539 additional "-r @" flag.