git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Elijah Newren <newren@gmail.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: "Git Mailing List" <git@vger.kernel.org>,
	"Ævar Arnfjörð" <avarab@gmail.com>, "Jeff King" <peff@peff.net>,
	"Ramsay Jones" <ramsay@ramsayjones.plus.com>
Subject: Re: [PATCHv3 1/6] Add missing includes and forward declares
Date: Tue, 14 Aug 2018 23:51:18 -0700	[thread overview]
Message-ID: <CABPp-BGVVXcbZX44er6TO-PUsfEN_6GNYJ1U5cuoN9deaA48OQ@mail.gmail.com> (raw)
In-Reply-To: <20180815061346.GJ32543@aiede.svl.corp.google.com>

On Tue, Aug 14, 2018 at 11:13 PM Jonathan Nieder <jrnieder@gmail.com> wrote:
>
> Elijah Newren wrote:
>
> > I didn't want to repeat that description in all 6 patches, since all
> > six came from that, so I put it in the cover letter.  Since patch #1
> > has most that changes though, I guess it makes sense to include it at
> > least in that one?
>
> Yes, that sounds sensible to me.

Will do.

> [...]
> >> enums are of unknown size, so forward declarations don't work for
> >> them.  See bb/pedantic for some examples.
> >
> > structs are also of unknown size; the size is irrelevant when the
> > function signature merely uses a pointer to the struct or enum.  The
> > enum forward declaration fixes a compilation bug.
>
> My rationale may miss the point but the standard and some real compilers
> don't like this, unfortunately.
>
> For structs, having an incomplete type is fine, but for enums we need
> the full definition.  E.g. C99 sayeth (in section 6.7.2.3 "tags")
>
>         A type specifier of the form
>
>                 enum identifier
>
>         without an enumerator list shall only appear after the type it
>         specifies is complete.

What about a type specifier of the form
  enum identifier *
?  Can that kind of type specifier appear before the full definition
of the enum?  (Or, alternatively, if the standard doesn't say, are
there any compilers that have a problem with that?)

If so, we can include cache.h instead.  We'll probably also have to
fix up packfile.h for the exact same issue (even the same enum name)
if that's the case.

> [...]
> >>> --- a/commit-graph.h
> >>> +++ b/commit-graph.h
> >>> @@ -4,6 +4,7 @@
> >>>  #include "git-compat-util.h"
> >>>  #include "repository.h"
> >>>  #include "string-list.h"
> >>> +#include "cache.h"
> >>
> >> We can skip the #include of git-compat-util.h since all .c files
> >> include it.
> >
> > Good point.  Should I go through and remove all the inclusions of
> > git-compat-util.h in header files?
>
> It's orthogonal to this series but might be a good change.

I think I'll leave it as #leftoverbits for someone else interested.  :-)

> [...]
> >>> --- a/pathspec.h
> >>> +++ b/pathspec.h
> >>> @@ -1,6 +1,11 @@
> >>>  #ifndef PATHSPEC_H
> >>>  #define PATHSPEC_H
> >>>
> >>> +#include "string.h"
> >>> +#include "strings.h"
> >>
> >> What are these headers?
> >
> > The original patch[1] had explanations of why I added them:
> >
> > +#include "string.h"   /* For str[n]cmp */
> > +#include "strings.h"  /* For str[n]casecmp */
>
> Ah.  Please remove these #includes: they're part of the standard
> library that we get implicitly via git-compat-util.h.
>
> I was tripped up because they were in quotes instead of angle
> brackets.

Indeed; will do.

  reply	other threads:[~2018-08-15  6:51 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-11  4:32 [PATCH 0/9] Add missing includes and forward declares Elijah Newren
2018-08-11  4:32 ` [PATCH 1/9] " Elijah Newren
2018-08-11 17:43   ` Jeff King
2018-08-11  4:32 ` [PATCH 2/9] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-11  4:32 ` [PATCH 3/9] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-11  4:32 ` [PATCH 4/9] urlmatch.h: fix include guard Elijah Newren
2018-08-11  4:32 ` [PATCH 5/9] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-11  4:32 ` [PATCH 6/9] ewah/ewok.h: add missing include Elijah Newren
2018-08-11  4:32 ` [PATCH 7/9] sha1dc/sha1.h: " Elijah Newren
2018-08-11  4:32 ` [PATCH 8/9] xdiff/xdiff.h: " Elijah Newren
2018-08-11  4:32 ` [PATCH 9/9] Add missing includes and forward declares Elijah Newren
2018-08-11  8:30 ` [PATCH 0/9] " Ævar Arnfjörð Bjarmason
2018-08-11  8:59   ` Elijah Newren
2018-08-11 17:34     ` Jeff King
2018-08-13 18:24       ` Junio C Hamano
2018-08-14  6:42         ` Elijah Newren
2018-08-15  5:45           ` Junio C Hamano
2018-08-15  5:57             ` Elijah Newren
2018-08-15 15:43               ` Junio C Hamano
2018-08-15 15:55                 ` Elijah Newren
2018-08-15 16:11                   ` Junio C Hamano
2018-08-15  1:38         ` Jeff King
2018-08-15  4:55           ` Jonathan Nieder
2018-08-15  4:57           ` Jonathan Nieder
2018-08-11 20:50 ` [PATCHv2 0/6] " Elijah Newren
2018-08-11 20:50   ` [PATCHv2 1/6] " Elijah Newren
2018-08-11 20:50   ` [PATCHv2 2/6] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-11 20:50   ` [PATCHv2 3/6] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-11 21:32     ` Ramsay Jones
2018-08-11 20:50   ` [PATCHv2 4/6] urlmatch.h: fix include guard Elijah Newren
2018-08-11 20:50   ` [PATCHv2 5/6] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-11 20:50   ` [PATCHv2 6/6] Add missing includes and forward declares Elijah Newren
2018-08-13 17:17   ` [PATCHv3 0/6] " Elijah Newren
2018-08-13 17:17     ` [PATCHv3 1/6] " Elijah Newren
2018-08-15  5:10       ` Jonathan Nieder
2018-08-15  5:50         ` Elijah Newren
2018-08-15  6:13           ` Jonathan Nieder
2018-08-15  6:51             ` Elijah Newren [this message]
2018-08-15 15:26               ` Elijah Newren
2018-08-13 17:17     ` [PATCHv3 2/6] alloc: make allocate_alloc_state and clear_alloc_state more consistent Elijah Newren
2018-08-15  5:18       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 3/6] Move definition of enum branch_track from cache.h to branch.h Elijah Newren
2018-08-15  5:22       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 4/6] urlmatch.h: fix include guard Elijah Newren
2018-08-15  5:25       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 5/6] compat/precompose_utf8.h: use more common include guard style Elijah Newren
2018-08-15  5:28       ` Jonathan Nieder
2018-08-13 17:17     ` [PATCHv3 6/6] Add missing includes and forward declares Elijah Newren
2018-08-15  5:31       ` Jonathan Nieder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABPp-BGVVXcbZX44er6TO-PUsfEN_6GNYJ1U5cuoN9deaA48OQ@mail.gmail.com \
    --to=newren@gmail.com \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=peff@peff.net \
    --cc=ramsay@ramsayjones.plus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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).