* [PATCH] time.h: include header before using time_t
@ 2019-10-04 17:40 Kurt Van Dijck
2019-10-04 17:52 ` James Carlson
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Kurt Van Dijck @ 2019-10-04 17:40 UTC (permalink / raw)
To: linux-ppp
On vr, 04 okt 2019 10:49:17 -0400, James Carlson wrote:
> On 10/04/19 10:29, Kurt Van Dijck wrote:
> > Now that I know that that file is used as include for kernel code, I'd
> > rather include time.h in the userspace c-files.
>
> My point is that include/net/ isn't strictly userspace.
>
> If you feel the need, then go ahead and include <time.h> in user level
> files. This just isn't one of those.
>
> If you must do this in ppp_def.h, then it needs to be guarded against
> *all* of the systems where including a top-level header file inside a
> kernel module is the wrong thing to do, not just "ifndef SOLARIS". Do
> you know which systems those are? I can tell you that Solaris/Illumos
> is at least one such system, but I can't tell you that it's *all* of them.
>
> I think this include is out of place here.
ack
I think you confirm 4x what I said, but I probably expressed myself
badly, so "show me code!", I created this patch.
It (1) works for me and (2) does not mix userspace headers in kernel
space anywhere.
Would this work for you?
---
commit 567d505b1b8eff3d1579e849a4272d114f047bf3
Author: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
Date: Fri Oct 4 19:24:22 2019
time.h: include header before using time_t
Since include/net/ppp_defs.h is used in both kernelspace and userland
makes it hard to put time.h include there.
This commit fixes the problems in userspace code individually and leaves
ppp_defs.h as-is.
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
index 8b2e946..f19c6d8 100644
--- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
@@ -15,6 +15,7 @@
#include <unistd.h>
#include <errno.h>
#include <string.h>
+#include <time.h>
#include "pppoe.h"
diff --git a/pppd/sha1.c b/pppd/sha1.c
index f4f975c..4e51cee 100644
--- a/pppd/sha1.c
+++ b/pppd/sha1.c
@@ -17,6 +17,7 @@
/* #define SHA1HANDSOFF * Copies data before messing with it. */
#include <string.h>
+#include <time.h>
#include <netinet/in.h> /* htonl() */
#include <net/ppp_defs.h>
#include "sha1.h"
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] time.h: include header before using time_t
2019-10-04 17:40 [PATCH] time.h: include header before using time_t Kurt Van Dijck
@ 2019-10-04 17:52 ` James Carlson
2019-10-04 18:33 ` Kurt Van Dijck
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: James Carlson @ 2019-10-04 17:52 UTC (permalink / raw)
To: linux-ppp
On 10/04/19 13:40, Kurt Van Dijck wrote:
> I think you confirm 4x what I said, but I probably expressed myself
> badly, so "show me code!", I created this patch.
> It (1) works for me and (2) does not mix userspace headers in kernel
> space anywhere.
> Would this work for you?
That seems ok, in as much as it compiles on Solaris. But I'm still a
little confused about your apparent opposition to <sys/time.h> at the
point where time_t is actually used.
<sys/time.h> is part of the UNIX standards. It's documented to define
time_t (among other things). It's on-point for a header file that may
be used in kernel context. What's the concern?
--
James Carlson 42.703N 71.076W <carlsonj@workingcode.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] time.h: include header before using time_t
2019-10-04 17:40 [PATCH] time.h: include header before using time_t Kurt Van Dijck
2019-10-04 17:52 ` James Carlson
@ 2019-10-04 18:33 ` Kurt Van Dijck
2019-10-04 20:10 ` James Carlson
2019-12-01 11:21 ` Paul Mackerras
3 siblings, 0 replies; 5+ messages in thread
From: Kurt Van Dijck @ 2019-10-04 18:33 UTC (permalink / raw)
To: linux-ppp
On vr, 04 okt 2019 13:52:11 -0400, James Carlson wrote:
> On 10/04/19 13:40, Kurt Van Dijck wrote:
> > I think you confirm 4x what I said, but I probably expressed myself
> > badly, so "show me code!", I created this patch.
> > It (1) works for me and (2) does not mix userspace headers in kernel
> > space anywhere.
> > Would this work for you?
>
> That seems ok, in as much as it compiles on Solaris. But I'm still a
> little confused about your apparent opposition to <sys/time.h> at the
> point where time_t is actually used.
>
> <sys/time.h> is part of the UNIX standards. It's documented to define
> time_t (among other things). It's on-point for a header file that may
> be used in kernel context. What's the concern?
headers under sys/ are, AFAIK, not delivered by the kernel, but by the
toolchain. sys/time.h may have less issues than time.h, it has the same
disease.
But maybe I'm incompetent on the matter, my knowledge besides linux on
this matter is very limited.
Kurt
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] time.h: include header before using time_t
2019-10-04 17:40 [PATCH] time.h: include header before using time_t Kurt Van Dijck
2019-10-04 17:52 ` James Carlson
2019-10-04 18:33 ` Kurt Van Dijck
@ 2019-10-04 20:10 ` James Carlson
2019-12-01 11:21 ` Paul Mackerras
3 siblings, 0 replies; 5+ messages in thread
From: James Carlson @ 2019-10-04 20:10 UTC (permalink / raw)
To: linux-ppp
On 10/04/19 14:33, Kurt Van Dijck wrote:
> On vr, 04 okt 2019 13:52:11 -0400, James Carlson wrote:
> headers under sys/ are, AFAIK, not delivered by the kernel, but by the
> toolchain. sys/time.h may have less issues than time.h, it has the same
> disease.
I've never heard of this problem. I'm afraid I don't know what you're
referring to.
I've never heard of a compiler (or other tool chain component) that
delivers files to /usr/include/sys. That'd be somewhat surprising to
me, but I guess it's a wide world out there.
As the name says, the stuff under sys/ is part of the _system_. On
UNIX, the standard parts of it are described in the Single UNIX
Standard, maintained by The Open Group. That's the documentation
pointer I provided previously.
Are there systems where system header files aren't installed by default?
Sure. That's somewhat commonplace. But on such a machine you can't
compile things (including pppd) until you install the (presumably
optional) header files.
If you look closely, you'll see that pppd/main.c already includes
<sys/time.h> and it's not guarded by any conditional compilation because
it's a *STANDARD HEADER FILE*. If there were problems of some sort with
this include file, I'd expect they'd have surfaced by now.
--
James Carlson 42.703N 71.076W <carlsonj@workingcode.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] time.h: include header before using time_t
2019-10-04 17:40 [PATCH] time.h: include header before using time_t Kurt Van Dijck
` (2 preceding siblings ...)
2019-10-04 20:10 ` James Carlson
@ 2019-12-01 11:21 ` Paul Mackerras
3 siblings, 0 replies; 5+ messages in thread
From: Paul Mackerras @ 2019-12-01 11:21 UTC (permalink / raw)
To: linux-ppp
On Fri, Oct 04, 2019 at 07:40:46PM +0200, Kurt Van Dijck wrote:
> On vr, 04 okt 2019 10:49:17 -0400, James Carlson wrote:
> > On 10/04/19 10:29, Kurt Van Dijck wrote:
> > > Now that I know that that file is used as include for kernel code, I'd
> > > rather include time.h in the userspace c-files.
> >
> > My point is that include/net/ isn't strictly userspace.
> >
> > If you feel the need, then go ahead and include <time.h> in user level
> > files. This just isn't one of those.
> >
> > If you must do this in ppp_def.h, then it needs to be guarded against
> > *all* of the systems where including a top-level header file inside a
> > kernel module is the wrong thing to do, not just "ifndef SOLARIS". Do
> > you know which systems those are? I can tell you that Solaris/Illumos
> > is at least one such system, but I can't tell you that it's *all* of them.
> >
> > I think this include is out of place here.
> ack
>
> I think you confirm 4x what I said, but I probably expressed myself
> badly, so "show me code!", I created this patch.
> It (1) works for me and (2) does not mix userspace headers in kernel
> space anywhere.
> Would this work for you?
>
> ---
> commit 567d505b1b8eff3d1579e849a4272d114f047bf3
> Author: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
> Date: Fri Oct 4 19:24:22 2019
>
> time.h: include header before using time_t
>
> Since include/net/ppp_defs.h is used in both kernelspace and userland
> makes it hard to put time.h include there.
> This commit fixes the problems in userspace code individually and leaves
> ppp_defs.h as-is.
>
> Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
>
> diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
> index 8b2e946..f19c6d8 100644
> --- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
> +++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
> @@ -15,6 +15,7 @@
> #include <unistd.h>
> #include <errno.h>
> #include <string.h>
> +#include <time.h>
>
> #include "pppoe.h"
>
> diff --git a/pppd/sha1.c b/pppd/sha1.c
> index f4f975c..4e51cee 100644
> --- a/pppd/sha1.c
> +++ b/pppd/sha1.c
> @@ -17,6 +17,7 @@
> /* #define SHA1HANDSOFF * Copies data before messing with it. */
>
> #include <string.h>
> +#include <time.h>
> #include <netinet/in.h> /* htonl() */
> #include <net/ppp_defs.h>
> #include "sha1.h"
I applied this patch.
Paul.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-12-01 11:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-04 17:40 [PATCH] time.h: include header before using time_t Kurt Van Dijck
2019-10-04 17:52 ` James Carlson
2019-10-04 18:33 ` Kurt Van Dijck
2019-10-04 20:10 ` James Carlson
2019-12-01 11:21 ` Paul Mackerras
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).