Re: extern already declared
Hi, Todd C. Miller wrote on Sun, Feb 09, 2020 at 09:49:35AM -0700: > On Sun, 09 Feb 2020 17:46:51 +0100, Jan Stary wrote: >> Whenever unistd.h declares getopt(3), it also declares >> the extern optind and optarg, so files including unistd.h >> don't need to declare those themselves, right? > Correct. Most of those date back from before optind and optarg > were defined for you by unistd.h. Committed, thanks. Ingo
Re: extern already declared
On Thu, 13 Feb 2020 23:53:49 +0100, Jan Stary wrote: > On Feb 09 09:49:35, mill...@openbsd.org wrote: > > On Sun, 09 Feb 2020 17:46:51 +0100, Jan Stary wrote: > > > > > Whenever unistd.h declares getopt(3), it also declares > > > the extern optind and optarg, so files including unistd.h > > > don't need to declare those themselves, right? > > > > Correct. Most of those date back from before optind and optarg > > were defined for you by unistd.h. > > So can they be removed now? Yes, they can be removed. - todd
Re: extern already declared
On Feb 09 17:46:51, h...@stare.cz wrote: > Whenever unistd.h declares getopt(3), it also declares > the extern optind and optarg, so files including unistd.h > don't need to declare those themselves, right? > > Jan > > Index: games/fortune/strfile/strfile.c > === > RCS file: /cvs/src/games/fortune/strfile/strfile.c,v > retrieving revision 1.29 > diff -u -p -r1.29 strfile.c > --- games/fortune/strfile/strfile.c 4 Jun 2017 13:39:25 - 1.29 > +++ games/fortune/strfile/strfile.c 9 Feb 2020 16:23:42 - > @@ -252,8 +252,6 @@ main(int ac, char *av[]) > void > getargs(int argc, char *argv[]) > { > - extern char *optarg; > - extern int optind; > int ch; > > while ((ch = getopt(argc, argv, "c:hiorsx")) != -1) { > Index: games/hunt/hunt/hunt.c > === > RCS file: /cvs/src/games/hunt/hunt/hunt.c,v > retrieving revision 1.22 > diff -u -p -r1.22 hunt.c > --- games/hunt/hunt/hunt.c8 Apr 2017 22:50:41 - 1.22 > +++ games/hunt/hunt/hunt.c9 Feb 2020 16:23:42 - > @@ -85,8 +85,6 @@ int > main(int ac, char **av) > { > int c; > - extern int optind; > - extern char *optarg; > longenter_status; > int option; > struct servent *se; > Index: games/hunt/huntd/driver.c > === > RCS file: /cvs/src/games/hunt/huntd/driver.c,v > retrieving revision 1.29 > diff -u -p -r1.29 driver.c > --- games/hunt/huntd/driver.c 21 Jan 2017 08:22:57 - 1.29 > +++ games/hunt/huntd/driver.c 9 Feb 2020 16:23:42 - > @@ -80,8 +80,6 @@ main(int ac, char **av) > static fd_set read_fds; > static FLAG first = TRUE; > static FLAG server = FALSE; > - extern int optind; > - extern char *optarg; > extern char *__progname; > int c; > static struct timeval linger = { 0, 0 }; > Index: games/robots/main.c > === > RCS file: /cvs/src/games/robots/main.c,v > retrieving revision 1.28 > diff -u -p -r1.28 main.c > --- games/robots/main.c 28 Jun 2019 13:32:52 - 1.28 > +++ games/robots/main.c 9 Feb 2020 16:23:42 - > @@ -56,7 +56,6 @@ main(int ac, char *av[]) > int score_err = 0; /* hold errno from score file open */ > int ch; > int ret; > - extern int optind; > char*home; > #ifdef FANCY > char*sp; > Index: regress/lib/libc/db/dbtest.c > === > RCS file: /cvs/src/regress/lib/libc/db/dbtest.c,v > retrieving revision 1.16 > diff -u -p -r1.16 dbtest.c > --- regress/lib/libc/db/dbtest.c 27 Jul 2017 15:08:37 - 1.16 > +++ regress/lib/libc/db/dbtest.c 9 Feb 2020 16:23:48 - > @@ -76,8 +76,6 @@ int XXlineno; /* Fast > breakpoint for > int > main(int argc, char *argv[]) > { > - extern int optind; > - extern char *optarg; > enum S command, state; > DB *dbp; > DBT data, key, keydata; > Index: regress/lib/libc/getaddrinfo/gaitest.c > === > RCS file: /cvs/src/regress/lib/libc/getaddrinfo/gaitest.c,v > retrieving revision 1.6 > diff -u -p -r1.6 gaitest.c > --- regress/lib/libc/getaddrinfo/gaitest.c9 Jun 2009 18:15:08 - > 1.6 > +++ regress/lib/libc/getaddrinfo/gaitest.c9 Feb 2020 16:23:48 - > @@ -119,8 +119,6 @@ main(argc, argv) > struct addrinfo *res; > int error, i; > char *p, *q; > - extern int optind; > - extern char *optarg; > int c; > char nbuf[10]; > > Index: regress/lib/libc/regex/main.c > === > RCS file: /cvs/src/regress/lib/libc/regex/main.c,v > retrieving revision 1.10 > diff -u -p -r1.10 main.c > --- regress/lib/libc/regex/main.c 13 Jul 2016 06:17:11 - 1.10 > +++ regress/lib/libc/regex/main.c 9 Feb 2020 16:23:48 - > @@ -41,8 +41,6 @@ main(int argc, char *argv[]) > int c; > int errflg = 0; > register int i; > - extern int optind; > - extern char *optarg; > > progname = argv[0]; > > Index: regress/lib/libutil/fmt_scaled/fmt_test.c > === > RCS file: /cvs/src/regress/lib/libutil/fmt_scaled/fmt_test.c,v > retrieving revision 1.15 > diff -u -p -r1.15 fmt_test.c > --- regress/lib/libutil/fmt_scaled/fmt_test.c 16 Mar 2017 02:42:31 - > 1.15 > +++ regress/lib/libutil/fmt_scaled/fmt_test.c 9 Feb 2020 16:23:49 - > @@ -36,8 +36,6 @@ __dead static void usage(int stat) > int > main(int argc, char **argv) > {
Re: extern already declared
On Sun, 09 Feb 2020 19:05:28 +0100, Jan Stary wrote: > But the externs should be mentioned in the manpage, right? > That's the only place they are mentioned before being talked about > in the text; although I suspect that's why people keep declaring them > in source code - it's what SYNOPSIS said. I don't think so, you don't copy the contents of the SYNOPSIS to your program. The reason we have code that declares these itself is that is what you needed to do in 4.3BSD (and probably System V where the API originated). - todd
Re: extern already declared
On Feb 09 09:49:35, mill...@openbsd.org wrote: > On Sun, 09 Feb 2020 17:46:51 +0100, Jan Stary wrote: > > > Whenever unistd.h declares getopt(3), it also declares > > the extern optind and optarg, so files including unistd.h > > don't need to declare those themselves, right? > > Correct. Most of those date back from before optind and optarg > were defined for you by unistd.h. But the externs should be mentioned in the manpage, right? That's the only place they are mentioned before being talked about in the text; although I suspect that's why people keep declaring them in source code - it's what SYNOPSIS said. Jan
Re: extern already declared
On Sun, 09 Feb 2020 17:46:51 +0100, Jan Stary wrote: > Whenever unistd.h declares getopt(3), it also declares > the extern optind and optarg, so files including unistd.h > don't need to declare those themselves, right? Correct. Most of those date back from before optind and optarg were defined for you by unistd.h. - todd
extern already declared
Whenever unistd.h declares getopt(3), it also declares the extern optind and optarg, so files including unistd.h don't need to declare those themselves, right? Jan Index: games/fortune/strfile/strfile.c === RCS file: /cvs/src/games/fortune/strfile/strfile.c,v retrieving revision 1.29 diff -u -p -r1.29 strfile.c --- games/fortune/strfile/strfile.c 4 Jun 2017 13:39:25 - 1.29 +++ games/fortune/strfile/strfile.c 9 Feb 2020 16:23:42 - @@ -252,8 +252,6 @@ main(int ac, char *av[]) void getargs(int argc, char *argv[]) { - extern char *optarg; - extern int optind; int ch; while ((ch = getopt(argc, argv, "c:hiorsx")) != -1) { Index: games/hunt/hunt/hunt.c === RCS file: /cvs/src/games/hunt/hunt/hunt.c,v retrieving revision 1.22 diff -u -p -r1.22 hunt.c --- games/hunt/hunt/hunt.c 8 Apr 2017 22:50:41 - 1.22 +++ games/hunt/hunt/hunt.c 9 Feb 2020 16:23:42 - @@ -85,8 +85,6 @@ int main(int ac, char **av) { int c; - extern int optind; - extern char *optarg; longenter_status; int option; struct servent *se; Index: games/hunt/huntd/driver.c === RCS file: /cvs/src/games/hunt/huntd/driver.c,v retrieving revision 1.29 diff -u -p -r1.29 driver.c --- games/hunt/huntd/driver.c 21 Jan 2017 08:22:57 - 1.29 +++ games/hunt/huntd/driver.c 9 Feb 2020 16:23:42 - @@ -80,8 +80,6 @@ main(int ac, char **av) static fd_set read_fds; static FLAG first = TRUE; static FLAG server = FALSE; - extern int optind; - extern char *optarg; extern char *__progname; int c; static struct timeval linger = { 0, 0 }; Index: games/robots/main.c === RCS file: /cvs/src/games/robots/main.c,v retrieving revision 1.28 diff -u -p -r1.28 main.c --- games/robots/main.c 28 Jun 2019 13:32:52 - 1.28 +++ games/robots/main.c 9 Feb 2020 16:23:42 - @@ -56,7 +56,6 @@ main(int ac, char *av[]) int score_err = 0; /* hold errno from score file open */ int ch; int ret; - extern int optind; char*home; #ifdef FANCY char*sp; Index: regress/lib/libc/db/dbtest.c === RCS file: /cvs/src/regress/lib/libc/db/dbtest.c,v retrieving revision 1.16 diff -u -p -r1.16 dbtest.c --- regress/lib/libc/db/dbtest.c27 Jul 2017 15:08:37 - 1.16 +++ regress/lib/libc/db/dbtest.c9 Feb 2020 16:23:48 - @@ -76,8 +76,6 @@ int XXlineno; /* Fast breakpoint for int main(int argc, char *argv[]) { - extern int optind; - extern char *optarg; enum S command, state; DB *dbp; DBT data, key, keydata; Index: regress/lib/libc/getaddrinfo/gaitest.c === RCS file: /cvs/src/regress/lib/libc/getaddrinfo/gaitest.c,v retrieving revision 1.6 diff -u -p -r1.6 gaitest.c --- regress/lib/libc/getaddrinfo/gaitest.c 9 Jun 2009 18:15:08 - 1.6 +++ regress/lib/libc/getaddrinfo/gaitest.c 9 Feb 2020 16:23:48 - @@ -119,8 +119,6 @@ main(argc, argv) struct addrinfo *res; int error, i; char *p, *q; - extern int optind; - extern char *optarg; int c; char nbuf[10]; Index: regress/lib/libc/regex/main.c === RCS file: /cvs/src/regress/lib/libc/regex/main.c,v retrieving revision 1.10 diff -u -p -r1.10 main.c --- regress/lib/libc/regex/main.c 13 Jul 2016 06:17:11 - 1.10 +++ regress/lib/libc/regex/main.c 9 Feb 2020 16:23:48 - @@ -41,8 +41,6 @@ main(int argc, char *argv[]) int c; int errflg = 0; register int i; - extern int optind; - extern char *optarg; progname = argv[0]; Index: regress/lib/libutil/fmt_scaled/fmt_test.c === RCS file: /cvs/src/regress/lib/libutil/fmt_scaled/fmt_test.c,v retrieving revision 1.15 diff -u -p -r1.15 fmt_test.c --- regress/lib/libutil/fmt_scaled/fmt_test.c 16 Mar 2017 02:42:31 - 1.15 +++ regress/lib/libutil/fmt_scaled/fmt_test.c 9 Feb 2020 16:23:49 - @@ -36,8 +36,6 @@ __dead static void usage(int stat) int main(int argc, char **argv) { - extern char *optarg; - extern int optind; int i, ch; while ((ch = getopt(argc, argv, "hv")) != -1) {