linux-ppp.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).