* PATCH: ksh_autoload safety cleanup
@ 2008-07-11 8:32 Phil Pennock
2008-07-11 19:26 ` Peter Stephenson
0 siblings, 1 reply; 2+ messages in thread
From: Phil Pennock @ 2008-07-11 8:32 UTC (permalink / raw)
To: zsh-workers
Various places weren't using -z for autoload -U to load in zsh-style,
even if the user has ksh_autoload set. Not an option I normally use,
but since the option is there we should be resilient against it. 26
files changed.
In fixing this, I left alone files with "emulate" in them, assuming that
they're setting emulate zsh and assuming that they're doing it in time
to catch the autoload. I did choose to change the example loading
invocations to include -z though, even in cases of the file itself using
emulate. I don't guarantee to have caught all of those.
In cases where "autoload +X" is used, I leave it alone in the
expectation that the original autoload command correctly declared -z if
needed.
There's a problem in that "emulate zsh" followed by "autoload" doesn't
preserve the zsh-nature of the autoload file for the time when it's
eventually used, which means that my autoload +X exemption isn't good
enough but I don't know a way to solve this in the function level.
Proof of problem:
...% zsh -f
% emulate zsh
% autoload is-at-least
% setopt ksh_autoload
% is-at-least 4.3.6
zsh: is-at-least: function not defined by file
The zshbuiltins man-page notes (under typeset -f):
----------------------------8< cut here >8------------------------------
The -k and -z flags
make the function be loaded using ksh-style or zsh-style
autoloading respectively. If neither is given, the set-
ting of the KSH_AUTOLOAD option determines how the func-
tion is loaded.
----------------------------8< cut here >8------------------------------
I'd naively interpret that to mean that the ksh_autoload setting at the
time of the autoload/typeset determines it, rather than the value at the
time the function is eventually loaded. I'm not convinced that the
current behaviour is correct and am wondering if the -k/-z should be
implicitly provided instead. Is there any situation where declaring
autoload in one mode and then loading later in the other mode is likely
to be correct and/or desired?
Afterwards,
grep -L '^[^#]*emulate' $(egrep -lr '(^autoload|[^#]autoload) ([^-]|-[^z ]* )' .)
includes source files, documentation, completion functions relating to
autoload and friends, test files, newuser, the demo zshrc and standalone
scripts. And a very few false positives.
Regards,
-Phil
----------------------------8< cut here >8------------------------------
Index: Completion/Darwin/Type/_retrieve_mac_apps
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Darwin/Type/_retrieve_mac_apps,v
retrieving revision 1.2
diff -p -u -r1.2 _retrieve_mac_apps
--- Completion/Darwin/Type/_retrieve_mac_apps 13 May 2005 17:49:01 -0000 1.2
+++ Completion/Darwin/Type/_retrieve_mac_apps 11 Jul 2008 08:03:34 -0000
@@ -47,7 +47,7 @@ _mac_apps_old_retrieve () {
# Get single file applications
if ! zstyle -t ":completion:${curcontext}:commands" ignore-single; then
- autoload -U zargs
+ autoload -Uz zargs
local app_cand nargs envvars
app_cand=( ${^app_dir}^*.[a-z]#/..namedfork/rsrc(.UrN,.RN^U) )
envvars="$(builtin typeset -x)"
Index: Completion/Unix/Command/_baz
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Unix/Command/_baz,v
retrieving revision 1.11
diff -p -u -r1.11 _baz
--- Completion/Unix/Command/_baz 15 Aug 2006 05:04:58 -0000 1.11
+++ Completion/Unix/Command/_baz 11 Jul 2008 08:14:26 -0000
@@ -1,6 +1,6 @@
#compdef baz
-autoload is-at-least
+autoload -z is-at-least
local BAZ=$words[1]
local baz_version
local hide_short
Index: Completion/Unix/Command/_darcs
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Unix/Command/_darcs,v
retrieving revision 1.6
diff -p -u -r1.6 _darcs
--- Completion/Unix/Command/_darcs 27 Nov 2006 04:08:41 -0000 1.6
+++ Completion/Unix/Command/_darcs 11 Jul 2008 08:14:31 -0000
@@ -6,7 +6,7 @@ setopt EXTENDED_GLOB
local DARCS=$words[1]
# test whether to hide short options from completion
-autoload is-at-least
+autoload -z is-at-least
local hide_short
if zstyle -s ":completion:${curcontext}" hide-shortopts hide_short; then
case $hide_short in
Index: Completion/Unix/Command/_tar
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Unix/Command/_tar,v
retrieving revision 1.7
diff -p -u -r1.7 _tar
--- Completion/Unix/Command/_tar 10 Oct 2006 22:38:40 -0000 1.7
+++ Completion/Unix/Command/_tar 11 Jul 2008 08:14:35 -0000
@@ -24,7 +24,7 @@ local _tar_cmd tf tmp tmpb del index
if _pick_variant gnu=GNU unix --version; then
case "$($service --version)" in
(tar \(GNU tar\) (#b)([0-9.-]##)*)
- autoload is-at-least
+ autoload -z is-at-least
is-at-least 1.14.91 "$match[1]" || _cmd_variant[$service]="gnu-old"
;;
esac
Index: Completion/Unix/Command/_tla
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Unix/Command/_tla,v
retrieving revision 1.8
diff -p -u -r1.8 _tla
--- Completion/Unix/Command/_tla 22 Aug 2006 21:54:00 -0000 1.8
+++ Completion/Unix/Command/_tla 11 Jul 2008 08:14:38 -0000
@@ -1,6 +1,6 @@
#compdef tla
-autoload is-at-least
+autoload -z is-at-least
local TLA=$words[1]
local tla_version
local hide_short
Index: Completion/Zsh/Command/_zftp
===================================================================
RCS file: /home/cvsroot/zsh/Completion/Zsh/Command/_zftp,v
retrieving revision 1.2
diff -p -u -r1.2 _zftp
--- Completion/Zsh/Command/_zftp 14 Jun 2001 19:58:28 -0000 1.2
+++ Completion/Zsh/Command/_zftp 11 Jul 2008 08:05:01 -0000
@@ -28,13 +28,13 @@ fi
case $subcom in
*(cd|ls|dir))
# complete remote directories
- [[ -z ${functions[zfcd_match]} ]] && autoload -U zfcd_match
+ [[ -z ${functions[zfcd_match]} ]] && autoload -Uz zfcd_match
_tags directories && zfcd_match $PREFIX $SUFFIX
;;
*(get(|at)|gcp|delete|remote))
# complete remote files
- [[ -z ${functions[zfget_match]} ]] && autoload -U zfget_match
+ [[ -z ${functions[zfget_match]} ]] && autoload -Uz zfget_match
_tags files && zfget_match $PREFIX $SUFFIX
;;
Index: Functions/Misc/sticky-note
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Misc/sticky-note,v
retrieving revision 1.4
diff -p -u -r1.4 sticky-note
--- Functions/Misc/sticky-note 22 Feb 2008 02:56:14 -0000 1.4
+++ Functions/Misc/sticky-note 11 Jul 2008 07:54:25 -0000
@@ -4,7 +4,7 @@
# $HOME/.zsticky). The number of notes stored is STICKYSIZE (1000).
#
# Load this file as a function:
-# autoload -U sticky-note
+# autoload -Uz sticky-note
#
# It may then be bound as a widget:
# zle -N sticky-note
Index: Functions/Misc/tetris
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Misc/tetris,v
retrieving revision 1.1
diff -p -u -r1.1 tetris
--- Functions/Misc/tetris 21 Sep 2001 02:40:38 -0000 1.1
+++ Functions/Misc/tetris 11 Jul 2008 07:57:19 -0000
@@ -1,7 +1,7 @@
# Someone once accused zsh of not being as complete as Emacs, because it
# lacks Tetris and an adventure game.
#
-# autoload -U tetris
+# autoload -Uz tetris
# zle -N tetris
# bindkey '...' tetris
Index: Functions/Misc/xtermctl
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Misc/xtermctl,v
retrieving revision 1.2
diff -p -u -r1.2 xtermctl
--- Functions/Misc/xtermctl 18 Feb 2008 03:30:22 -0000 1.2
+++ Functions/Misc/xtermctl 11 Jul 2008 07:54:09 -0000
@@ -1,7 +1,7 @@
# Put standard xterm/dtterm window control codes in shell parameters for
# easy use. Note that some terminals do not support all combinations.
-# autoload -U xtermctl ; xtermctl
+# autoload -Uz xtermctl ; xtermctl
# xtermctl --explain
# Run once to set up; implements two functions:
Index: Functions/Misc/zed
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Misc/zed,v
retrieving revision 1.9
diff -p -u -r1.9 zed
--- Functions/Misc/zed 10 Aug 2004 23:34:58 -0000 1.9
+++ Functions/Misc/zed 11 Jul 2008 07:57:06 -0000
@@ -56,7 +56,7 @@ if (( bind )) || ! bindkey -M zed >&/dev
# Make zed-set-file-name available.
# Assume it's in fpath; there's no error at this point if it isn't
- autoload -U zed-set-file-name
+ autoload -Uz zed-set-file-name
zle -N zed-set-file-name
fi
if (( bind )) || ! bindkey -M zed-vicmd >&/dev/null; then
@@ -74,7 +74,7 @@ if ((fun)) then
var="$(functions $1)"
# If function is undefined but autoloadable, load it
if [[ $var = *\#\ undefined* ]] then
- var="$(autoload +X $1; functions $1)"
+ ar="$(autoload +X $1; functions $1)"
elif [[ -z $var ]] then
var="$1() {
}"
Index: Functions/Prompts/prompt_bigfade_setup
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/prompt_bigfade_setup,v
retrieving revision 1.4
diff -p -u -r1.4 prompt_bigfade_setup
--- Functions/Prompts/prompt_bigfade_setup 17 May 2008 22:42:17 -0000 1.4
+++ Functions/Prompts/prompt_bigfade_setup 11 Jul 2008 08:01:05 -0000
@@ -28,7 +28,7 @@ prompt_bigfade_setup () {
local cwd=${4:-'yellow'}
local -A schars
- autoload -U prompt_special_chars
+ autoload -Uz prompt_special_chars
prompt_special_chars
PS1="%B%F{$fadebar}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$userhost}%K{$fadebar}%n@%m%b%k%f%F{$fadebar}%K{black}$schars[260]$schars[261]$schars[262]$schars[333]%b%f%k%F{$fadebar}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$date}%K{black} %D{%a %b %d} %D{%I:%M:%S%P}$prompt_newline%B%F{$cwd}%K{black}$PWD>%b%f%k "
Index: Functions/Prompts/prompt_elite2_setup
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/prompt_elite2_setup,v
retrieving revision 1.5
diff -p -u -r1.5 prompt_elite2_setup
--- Functions/Prompts/prompt_elite2_setup 17 May 2008 22:42:17 -0000 1.5
+++ Functions/Prompts/prompt_elite2_setup 11 Jul 2008 08:01:10 -0000
@@ -22,7 +22,7 @@ prompt_elite2_setup () {
local parens_col=${2:-$text_col}
local -A schars
- autoload -U prompt_special_chars
+ autoload -Uz prompt_special_chars
prompt_special_chars
local text="%b%F{$text_col}"
Index: Functions/Prompts/prompt_elite_setup
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/prompt_elite_setup,v
retrieving revision 1.4
diff -p -u -r1.4 prompt_elite_setup
--- Functions/Prompts/prompt_elite_setup 17 May 2008 22:42:17 -0000 1.4
+++ Functions/Prompts/prompt_elite_setup 11 Jul 2008 08:01:15 -0000
@@ -22,7 +22,7 @@ prompt_elite_setup () {
local punctuation=${2:-'blue'}
local -A schars
- autoload -U prompt_special_chars
+ autoload -Uz prompt_special_chars
prompt_special_chars
PS1="%F{$text}$schars[332]$schars[304]%F{$punctuation}(%F{$text}%n%F{$punctuation}@%F{$text}%m%F{$punctuation})%F{$text}-%F{$punctuation}(%F{$text}%D{%I:%M%P}%F{$punctuation}-:-%F{$text}%D{%m}%F{$punctuation}%F{$text}/%D{%d}%F{$punctuation})%F{$text}$schars[304]-%F{$punctuation}$schars[371]%F{$text}-$schars[371]$schars[371]%F{$punctuation}$schars[372]$prompt_newline%F{$text}$schars[300]$schars[304]%F{$punctuation}(%F{$text}%1~%F{$punctuation})%F{$text}$schars[304]$schars[371]%F{$punctuation}$schars[372]%f"
Index: Functions/Prompts/prompt_fade_setup
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/prompt_fade_setup,v
retrieving revision 1.4
diff -p -u -r1.4 prompt_fade_setup
--- Functions/Prompts/prompt_fade_setup 17 May 2008 22:42:17 -0000 1.4
+++ Functions/Prompts/prompt_fade_setup 11 Jul 2008 08:01:23 -0000
@@ -28,7 +28,7 @@ prompt_fade_setup () {
local date=${3:-'white'}
local -A schars
- autoload -U prompt_special_chars
+ autoload -Uz prompt_special_chars
prompt_special_chars
PS1="%F{$fadebar_cwd}%B%K{$fadebar_cwd}$schars[333]$schars[262]$schars[261]$schars[260]%F{$userhost}%K{$fadebar_cwd}%B%n@%m%b%F{$fadebar_cwd}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%F{$date}%K{black}%B %D{%a %b %d} %D{%I:%M:%S%P} $prompt_newline%F{fadebar_cwd}%K{black}%B%~/%b%k%f "
Index: Functions/Prompts/prompt_fire_setup
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/prompt_fire_setup,v
retrieving revision 1.4
diff -p -u -r1.4 prompt_fire_setup
--- Functions/Prompts/prompt_fire_setup 17 May 2008 22:42:17 -0000 1.4
+++ Functions/Prompts/prompt_fire_setup 11 Jul 2008 08:01:28 -0000
@@ -30,7 +30,7 @@ prompt_fire_setup () {
local cwd=${6:-'yellow'}
local -a schars
- autoload -U prompt_special_chars
+ autoload -Uz prompt_special_chars
prompt_special_chars
local GRAD1="%{$schars[333]$schars[262]$schars[261]$schars[260]%}"
Index: Functions/Prompts/promptinit
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Prompts/promptinit,v
retrieving revision 1.8
diff -p -u -r1.8 promptinit
--- Functions/Prompts/promptinit 17 May 2008 22:42:17 -0000 1.8
+++ Functions/Prompts/promptinit 11 Jul 2008 08:02:28 -0000
@@ -2,7 +2,7 @@
## zsh prompt themes extension
## by Adam Spiers <adam@spiers.net>
##
-## Load with `autoload -U promptinit; promptinit'.
+## Load with `autoload -Uz promptinit; promptinit'.
## Type `prompt -h' for help.
##
Index: Functions/Zle/edit-command-line
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/edit-command-line,v
retrieving revision 1.5
diff -p -u -r1.5 edit-command-line
--- Functions/Zle/edit-command-line 12 Nov 2002 12:09:51 -0000 1.5
+++ Functions/Zle/edit-command-line 11 Jul 2008 08:25:25 -0000
@@ -1,6 +1,6 @@
# Edit the command line using your usual editor.
# Binding this to 'v' in the vi command mode map,
-# autoload edit-command-line
+# autoload -z edit-command-line
# zle -N edit-command-line
# bindkey -M vicmd v edit-command-line
# will give ksh-like behaviour for that key,
Index: Functions/Zle/history-beginning-search-menu
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/history-beginning-search-menu,v
retrieving revision 1.5
diff -p -u -r1.5 history-beginning-search-menu
--- Functions/Zle/history-beginning-search-menu 2 Aug 2006 09:59:23 -0000 1.5
+++ Functions/Zle/history-beginning-search-menu 11 Jul 2008 08:02:02 -0000
@@ -3,7 +3,7 @@
# the entire history is searched.
#
# Configuration:
-# autoload -U history-beginning-search-menu
+# autoload -Uz history-beginning-search-menu
# zle -N history-beginning-search-menu
# bindkey '\eP' history-beginning-search-menu
#
Index: Functions/Zle/incarg
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/incarg,v
retrieving revision 1.1.1.1
diff -p -u -r1.1.1.1 incarg
--- Functions/Zle/incarg 13 Sep 1999 16:32:31 -0000 1.1.1.1
+++ Functions/Zle/incarg 11 Jul 2008 08:02:08 -0000
@@ -1,6 +1,6 @@
# Shell function to increment an integer either under the cursor or just
# to the left of it. Use
-# autoload -U incarg
+# autoload -Uz incarg
# zle -N incarg
# bindkey "..." incarg
# to define it. For example,
Index: Functions/Zle/modify-current-argument
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/modify-current-argument,v
retrieving revision 1.2
diff -p -u -r1.2 modify-current-argument
--- Functions/Zle/modify-current-argument 24 Jun 2008 16:09:28 -0000 1.2
+++ Functions/Zle/modify-current-argument 11 Jul 2008 08:00:08 -0000
@@ -16,7 +16,7 @@ setopt localoptions noksharrays multibyt
local -a reply
integer REPLY REPLY2
-autoload -U split-shell-arguments
+autoload -Uz split-shell-arguments
split-shell-arguments
# Can't do this unless there's some text under or left of us.
Index: Functions/Zle/narrow-to-region-invisible
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/narrow-to-region-invisible,v
retrieving revision 1.1
diff -p -u -r1.1 narrow-to-region-invisible
--- Functions/Zle/narrow-to-region-invisible 4 Jul 2002 13:53:49 -0000 1.1
+++ Functions/Zle/narrow-to-region-invisible 11 Jul 2008 08:00:19 -0000
@@ -1,5 +1,5 @@
# As narrow-to-region, but replaces the text outside the editable region
# with `...' if it was non-empty. Can be used directly as a widget.
-autoload -U narrow-to-region
+autoload -Uz narrow-to-region
narrow-to-region -p '...' -P '...' -n
Index: Functions/Zle/predict-on
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/predict-on,v
retrieving revision 1.5
diff -p -u -r1.5 predict-on
--- Functions/Zle/predict-on 22 Jun 2004 07:10:35 -0000 1.5
+++ Functions/Zle/predict-on 11 Jul 2008 08:00:34 -0000
@@ -15,7 +15,7 @@
# with RETURN, without needing to move the cursor to the end first.
#
# To use it:
-# autoload -U predict-on
+# autoload -Uz predict-on
# zle -N predict-on
# zle -N predict-off
# bindkey '...' predict-on
Index: Functions/Zle/quote-and-complete-word
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/quote-and-complete-word,v
retrieving revision 1.1
diff -p -u -r1.1 quote-and-complete-word
--- Functions/Zle/quote-and-complete-word 27 Oct 2003 01:50:47 -0000 1.1
+++ Functions/Zle/quote-and-complete-word 11 Jul 2008 08:00:46 -0000
@@ -5,7 +5,7 @@
# normal completion fails, the quotes are removed again.
#
# To use it:
-# autoload -U quote-and-complete-word
+# autoload -Uz quote-and-complete-word
# zle -N quote-and-complete-word
# bindkey '\t' quote-and-complete-word
#
Index: Functions/Zle/transpose-words-match
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/transpose-words-match,v
retrieving revision 1.3
diff -p -u -r1.3 transpose-words-match
--- Functions/Zle/transpose-words-match 25 Apr 2003 11:19:10 -0000 1.3
+++ Functions/Zle/transpose-words-match 11 Jul 2008 08:29:09 -0000
@@ -11,7 +11,7 @@
# on X would be turned into `barXfoo' with the cursor still on the X,
# regardless of what the character X is.
-autoload match-words-by-style
+autoload -z match-words-by-style
local curcontext=":zle:$WIDGET" skip
local -a matched_words
Index: Functions/Zle/url-quote-magic
===================================================================
RCS file: /home/cvsroot/zsh/Functions/Zle/url-quote-magic,v
retrieving revision 1.2
diff -p -u -r1.2 url-quote-magic
--- Functions/Zle/url-quote-magic 17 Jun 2006 17:21:15 -0000 1.2
+++ Functions/Zle/url-quote-magic 11 Jul 2008 08:00:56 -0000
@@ -5,7 +5,7 @@
# the input character.
# Setup:
-# autoload -U url-quote-magic
+# autoload -Uz url-quote-magic
# zle -N self-insert url-quote-magic
# A number of zstyles may be set to control the quoting behavior.
Index: StartupFiles/zshrc
===================================================================
RCS file: /home/cvsroot/zsh/StartupFiles/zshrc,v
retrieving revision 1.3
diff -p -u -r1.3 zshrc
--- StartupFiles/zshrc 9 May 2001 16:57:31 -0000 1.3
+++ StartupFiles/zshrc 11 Jul 2008 07:53:24 -0000
@@ -117,7 +117,7 @@ bindkey '^I' complete-word # complete on
# Setup new style completion system. To see examples of the old style (compctl
# based) programmable completion, check Misc/compctl-examples in the zsh
# distribution.
-autoload -U compinit
+autoload -Uz compinit
compinit
# Completion Styles
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: PATCH: ksh_autoload safety cleanup
2008-07-11 8:32 PATCH: ksh_autoload safety cleanup Phil Pennock
@ 2008-07-11 19:26 ` Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2008-07-11 19:26 UTC (permalink / raw)
To: zsh-workers
On Fri, 11 Jul 2008 01:32:03 -0700
Phil Pennock <zsh-workers+phil.pennock@spodhuis.org> wrote:
> I'd naively interpret that to mean that the ksh_autoload setting at the
> time of the autoload/typeset determines it, rather than the value at the
> time the function is eventually loaded. I'm not convinced that the
> current behaviour is correct and am wondering if the -k/-z should be
> implicitly provided instead. Is there any situation where declaring
> autoload in one mode and then loading later in the other mode is likely
> to be correct and/or desired?
I don't imagine so, but the option was only designed as a single global
setting so that users wouldn't need to think about it, so it's not
surprising it doesn't work very well as a dynamic option and it's
probably too late to change. If you use both regularly you need the
flags.
You can in any case already handle this along the lines of (this
isn't a complete replacement but it gives you the idea):
autoload() {
if [[ -o kshautoload ]]; then
builtin autoload -k "$@"
else
builtin autoload -z "$@"
fi
}
--
Peter Stephenson <p.w.stephenson@ntlworld.com>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-07-11 19:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-11 8:32 PATCH: ksh_autoload safety cleanup Phil Pennock
2008-07-11 19:26 ` Peter Stephenson
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).