* [PATCH 0/8] More uses of 64 bit stat internally
@ 2022-05-31 16:24 Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 1/8] misc: Use 64 bit stat for daemon (BZ# 29203) Adhemerval Zanella
` (8 more replies)
0 siblings, 9 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
These are missing spots initially done by 52a5fe70a2c77935.
Adhemerval Zanella (8):
misc: Use 64 bit stat for daemon (BZ# 29203)
misc: Use 64 bit stat for getusershell (BZ# 29203)
posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207)
posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208)
socket: Use 64 bit stat for isfdtype (BZ# 29209)
inet: Use 64 bit stat for ruserpass (BZ# 29210)
catgets: Use 64 bit stat for __open_catalog (BZ# 29211)
iconv: Use 64 bit stat for __open_catalog (BZ# 29213)
catgets/open_catalog.c | 4 ++--
iconv/gconv_parseconfdir.h | 9 ++++++---
inet/ruserpass.c | 4 ++--
misc/daemon.c | 5 ++---
misc/getusershell.c | 4 ++--
sysdeps/posix/fpathconf.c | 4 ++--
sysdeps/posix/isfdtype.c | 4 ++--
sysdeps/posix/posix_fallocate.c | 4 ++--
sysdeps/posix/posix_fallocate64.c | 4 ++--
9 files changed, 22 insertions(+), 20 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/8] misc: Use 64 bit stat for daemon (BZ# 29203)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 2/8] misc: Use 64 bit stat for getusershell " Adhemerval Zanella
` (7 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Trying to come up with a testcase it tricky because to create a
/dev/null device it requires root access and even test-container
there is no easy way to do it.
Checked on i686-linux-gnu.
---
misc/daemon.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/misc/daemon.c b/misc/daemon.c
index 0e688f4d74..3c73ac2ab8 100644
--- a/misc/daemon.c
+++ b/misc/daemon.c
@@ -61,11 +61,10 @@ daemon (int nochdir, int noclose)
(void)__chdir("/");
if (!noclose) {
- struct stat64 st;
+ struct __stat64_t64 st;
if ((fd = __open_nocancel(_PATH_DEVNULL, O_RDWR, 0)) != -1
- && (__builtin_expect (__fstat64 (fd, &st), 0)
- == 0)) {
+ && __glibc_likely (__fstat64_time64 (fd, &st) == 0)) {
if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0
#if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR
&& (st.st_rdev
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/8] misc: Use 64 bit stat for getusershell (BZ# 29203)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 1/8] misc: Use 64 bit stat for daemon (BZ# 29203) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 3/8] posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) Adhemerval Zanella
` (6 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
misc/getusershell.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/misc/getusershell.c b/misc/getusershell.c
index 11f5aa83f8..4221095dca 100644
--- a/misc/getusershell.c
+++ b/misc/getusershell.c
@@ -97,7 +97,7 @@ initshells (void)
{
char **sp, *cp;
FILE *fp;
- struct stat64 statb;
+ struct __stat64_t64 statb;
size_t flen;
free(shells);
@@ -106,7 +106,7 @@ initshells (void)
strings = NULL;
if ((fp = fopen(_PATH_SHELLS, "rce")) == NULL)
goto init_okshells_noclose;
- if (__fstat64(fileno(fp), &statb) == -1) {
+ if (__fstat64_time64(fileno(fp), &statb) == -1) {
init_okshells:
(void)fclose(fp);
init_okshells_noclose:
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/8] posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 1/8] misc: Use 64 bit stat for daemon (BZ# 29203) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 2/8] misc: Use 64 bit stat for getusershell " Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 4/8] posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208) Adhemerval Zanella
` (5 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
sysdeps/posix/posix_fallocate.c | 4 ++--
sysdeps/posix/posix_fallocate64.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sysdeps/posix/posix_fallocate.c b/sysdeps/posix/posix_fallocate.c
index 037d328647..9720e71cc6 100644
--- a/sysdeps/posix/posix_fallocate.c
+++ b/sysdeps/posix/posix_fallocate.c
@@ -30,7 +30,7 @@
int
posix_fallocate (int fd, __off_t offset, __off_t len)
{
- struct stat64 st;
+ struct __stat64_t64 st;
if (offset < 0 || len < 0)
return EINVAL;
@@ -48,7 +48,7 @@ posix_fallocate (int fd, __off_t offset, __off_t len)
}
/* We have to make sure that this is really a regular file. */
- if (__fstat64 (fd, &st) != 0)
+ if (__fstat64_time64 (fd, &st) != 0)
return EBADF;
if (S_ISFIFO (st.st_mode))
return ESPIPE;
diff --git a/sysdeps/posix/posix_fallocate64.c b/sysdeps/posix/posix_fallocate64.c
index a670ee0a39..bf984f7f91 100644
--- a/sysdeps/posix/posix_fallocate64.c
+++ b/sysdeps/posix/posix_fallocate64.c
@@ -30,7 +30,7 @@
int
__posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
{
- struct stat64 st;
+ struct __stat64_t64 st;
if (offset < 0 || len < 0)
return EINVAL;
@@ -48,7 +48,7 @@ __posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len)
}
/* We have to make sure that this is really a regular file. */
- if (__fstat64 (fd, &st) != 0)
+ if (__fstat64_time64 (fd, &st) != 0)
return EBADF;
if (S_ISFIFO (st.st_mode))
return ESPIPE;
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 4/8] posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (2 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 3/8] posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 5/8] socket: Use 64 bit stat for isfdtype (BZ# 29209) Adhemerval Zanella
` (4 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
sysdeps/posix/fpathconf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sysdeps/posix/fpathconf.c b/sysdeps/posix/fpathconf.c
index 216f2a9c8d..4b215e0600 100644
--- a/sysdeps/posix/fpathconf.c
+++ b/sysdeps/posix/fpathconf.c
@@ -131,9 +131,9 @@ __fpathconf (int fd, int name)
#ifdef _POSIX_ASYNC_IO
{
/* AIO is only allowed on regular files and block devices. */
- struct stat64 st;
+ struct __stat64_t64 st;
- if (__fstat64 (fd, &st) < 0
+ if (__fstat64_time64 (fd, &st) < 0
|| (! S_ISREG (st.st_mode) && ! S_ISBLK (st.st_mode)))
return -1;
else
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 5/8] socket: Use 64 bit stat for isfdtype (BZ# 29209)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (3 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 4/8] posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 6/8] inet: Use 64 bit stat for ruserpass (BZ# 29210) Adhemerval Zanella
` (3 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
sysdeps/posix/isfdtype.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sysdeps/posix/isfdtype.c b/sysdeps/posix/isfdtype.c
index 192c7f9be6..d26c14259e 100644
--- a/sysdeps/posix/isfdtype.c
+++ b/sysdeps/posix/isfdtype.c
@@ -24,12 +24,12 @@
int
isfdtype (int fildes, int fdtype)
{
- struct stat64 st;
+ struct __stat64_t64 st;
int result;
{
int save_error = errno;
- result = __fstat64 (fildes, &st);
+ result = __fstat64_time64 (fildes, &st);
__set_errno (save_error);
}
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 6/8] inet: Use 64 bit stat for ruserpass (BZ# 29210)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (4 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 5/8] socket: Use 64 bit stat for isfdtype (BZ# 29209) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 7/8] catgets: Use 64 bit stat for __open_catalog (BZ# 29211) Adhemerval Zanella
` (2 subsequent siblings)
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
inet/ruserpass.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/inet/ruserpass.c b/inet/ruserpass.c
index d61a72877d..75e2a06552 100644
--- a/inet/ruserpass.c
+++ b/inet/ruserpass.c
@@ -95,7 +95,7 @@ ruserpass (const char *host, const char **aname, const char **apass)
char *hdir, *buf, *tmp;
char myname[1024], *mydomain;
int t, usedefault = 0;
- struct stat64 stb;
+ struct __stat64_t64 stb;
hdir = __libc_secure_getenv("HOME");
if (hdir == NULL) {
@@ -174,7 +174,7 @@ next:
break;
case PASSWD:
if (strcmp(*aname, "anonymous") &&
- __fstat64(fileno(cfile), &stb) >= 0 &&
+ __fstat64_time64(fileno(cfile), &stb) >= 0 &&
(stb.st_mode & 077) != 0) {
warnx(_("Error: .netrc file is readable by others."));
warnx(_("Remove 'password' line or make file unreadable by others."));
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 7/8] catgets: Use 64 bit stat for __open_catalog (BZ# 29211)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (5 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 6/8] inet: Use 64 bit stat for ruserpass (BZ# 29210) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213) Adhemerval Zanella
2022-06-01 12:32 ` [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
catgets/open_catalog.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c
index 48c2a4b983..cb1d123cdb 100644
--- a/catgets/open_catalog.c
+++ b/catgets/open_catalog.c
@@ -39,7 +39,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
__nl_catd catalog)
{
int fd = -1;
- struct stat64 st;
+ struct __stat64_t64 st;
int swapping;
size_t cnt;
size_t max_offset;
@@ -193,7 +193,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var,
return -1;
}
- if (__builtin_expect (__fstat64 (fd, &st), 0) < 0)
+ if (__glibc_unlikely (__fstat64_time64 (fd, &st) < 0))
goto close_unlock_return;
if (__builtin_expect (!S_ISREG (st.st_mode), 0)
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213)
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (6 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 7/8] catgets: Use 64 bit stat for __open_catalog (BZ# 29211) Adhemerval Zanella
@ 2022-05-31 16:24 ` Adhemerval Zanella
2022-05-31 20:18 ` Adhemerval Zanella
2022-06-01 12:32 ` [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
8 siblings, 1 reply; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 16:24 UTC (permalink / raw)
To: libc-alpha
The issue is only when used within libc.so (iconvconfig already builds
with _TIME_SIZE=64).
This is a a missing spot initially done by 52a5fe70a2c77935.
Checked on i686-linux-gnu.
---
iconv/gconv_parseconfdir.h | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h
index c0de548833..debb96b322 100644
--- a/iconv/gconv_parseconfdir.h
+++ b/iconv/gconv_parseconfdir.h
@@ -32,8 +32,11 @@
# define readdir __readdir
# define closedir __closedir
# define mempcpy __mempcpy
-# define lstat64 __lstat64
+# define struct_stat struct __stat64_t64
+# define lstat __lstat64_time64
# define feof_unlocked __feof_unlocked
+#else
+# define struct_stat struct stat
#endif
/* Name of the file containing the module information in the directories
@@ -158,12 +161,12 @@ gconv_parseconfdir (const char *prefix, const char *dir, size_t dir_len)
&& strcmp (ent->d_name + len - strlen (suffix), suffix) == 0)
{
char *conf;
- struct stat64 st;
+ struct_stat st;
if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0)
continue;
if (ent->d_type != DT_UNKNOWN
- || (lstat64 (conf, &st) != -1 && S_ISREG (st.st_mode)))
+ || (lstat (conf, &st) != -1 && S_ISREG (st.st_mode)))
found |= read_conf_file (conf, dir, dir_len);
free (conf);
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213)
2022-05-31 16:24 ` [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213) Adhemerval Zanella
@ 2022-05-31 20:18 ` Adhemerval Zanella
0 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-05-31 20:18 UTC (permalink / raw)
To: libc-alpha
On 31/05/2022 13:24, Adhemerval Zanella wrote:
> The issue is only when used within libc.so (iconvconfig already builds
> with _TIME_SIZE=64).
>
> This is a a missing spot initially done by 52a5fe70a2c77935.
>
> Checked on i686-linux-gnu.
And it should be gconv_parseconfdir on title.
> ---
> iconv/gconv_parseconfdir.h | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/iconv/gconv_parseconfdir.h b/iconv/gconv_parseconfdir.h
> index c0de548833..debb96b322 100644
> --- a/iconv/gconv_parseconfdir.h
> +++ b/iconv/gconv_parseconfdir.h
> @@ -32,8 +32,11 @@
> # define readdir __readdir
> # define closedir __closedir
> # define mempcpy __mempcpy
> -# define lstat64 __lstat64
> +# define struct_stat struct __stat64_t64
> +# define lstat __lstat64_time64
> # define feof_unlocked __feof_unlocked
> +#else
> +# define struct_stat struct stat
> #endif
>
> /* Name of the file containing the module information in the directories
> @@ -158,12 +161,12 @@ gconv_parseconfdir (const char *prefix, const char *dir, size_t dir_len)
> && strcmp (ent->d_name + len - strlen (suffix), suffix) == 0)
> {
> char *conf;
> - struct stat64 st;
> + struct_stat st;
> if (asprintf (&conf, "%s/%s", buf, ent->d_name) < 0)
> continue;
>
> if (ent->d_type != DT_UNKNOWN
> - || (lstat64 (conf, &st) != -1 && S_ISREG (st.st_mode)))
> + || (lstat (conf, &st) != -1 && S_ISREG (st.st_mode)))
> found |= read_conf_file (conf, dir, dir_len);
>
> free (conf);
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/8] More uses of 64 bit stat internally
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
` (7 preceding siblings ...)
2022-05-31 16:24 ` [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213) Adhemerval Zanella
@ 2022-06-01 12:32 ` Adhemerval Zanella
8 siblings, 0 replies; 11+ messages in thread
From: Adhemerval Zanella @ 2022-06-01 12:32 UTC (permalink / raw)
To: libc-alpha
If no one opposes it, I will commit this shortly as obvious fixes.
On 31/05/2022 13:24, Adhemerval Zanella wrote:
> These are missing spots initially done by 52a5fe70a2c77935.
>
> Adhemerval Zanella (8):
> misc: Use 64 bit stat for daemon (BZ# 29203)
> misc: Use 64 bit stat for getusershell (BZ# 29203)
> posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207)
> posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208)
> socket: Use 64 bit stat for isfdtype (BZ# 29209)
> inet: Use 64 bit stat for ruserpass (BZ# 29210)
> catgets: Use 64 bit stat for __open_catalog (BZ# 29211)
> iconv: Use 64 bit stat for __open_catalog (BZ# 29213)
>
> catgets/open_catalog.c | 4 ++--
> iconv/gconv_parseconfdir.h | 9 ++++++---
> inet/ruserpass.c | 4 ++--
> misc/daemon.c | 5 ++---
> misc/getusershell.c | 4 ++--
> sysdeps/posix/fpathconf.c | 4 ++--
> sysdeps/posix/isfdtype.c | 4 ++--
> sysdeps/posix/posix_fallocate.c | 4 ++--
> sysdeps/posix/posix_fallocate64.c | 4 ++--
> 9 files changed, 22 insertions(+), 20 deletions(-)
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-06-01 12:32 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-31 16:24 [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 1/8] misc: Use 64 bit stat for daemon (BZ# 29203) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 2/8] misc: Use 64 bit stat for getusershell " Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 3/8] posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 4/8] posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 5/8] socket: Use 64 bit stat for isfdtype (BZ# 29209) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 6/8] inet: Use 64 bit stat for ruserpass (BZ# 29210) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 7/8] catgets: Use 64 bit stat for __open_catalog (BZ# 29211) Adhemerval Zanella
2022-05-31 16:24 ` [PATCH 8/8] iconv: Use 64 bit stat for __open_catalog (BZ# 29213) Adhemerval Zanella
2022-05-31 20:18 ` Adhemerval Zanella
2022-06-01 12:32 ` [PATCH 0/8] More uses of 64 bit stat internally Adhemerval Zanella
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 read-only IMAP folder(s) and NNTP newsgroup(s).