git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/13] parseopt fixes from -Wunused-parameters

From
Jeff King <peff@peff.net>
Date
Nov 5, 2018, 06:37 UTC
Message-ID
<20181105063718.GA24877@sigill.intra.peff.net>

Continuing my exploration of what -Wunused-parameters can show us, here are some bug-fixes related to parse-options callbacks.

This is the last of the actual bug-fixes I've found. After this, I have about 60 patches worth of cleanups (i.e., dropping the unused parameters), and then I have a series to annotate parameters that must be unused (e.g., for functions that must conform to callback interfaces). After we can start compiling with -Wunused-parameters, assuming we don't find the annotations too cumbersome.

But this series fixes real bugs. These first four fix segfaults:
  [01/13]: apply: mark include/exclude options as NONEG
  [02/13]: am: handle --no-patch-format option
  [03/13]: ls-files: mark exclude options as NONEG
  [04/13]: pack-objects: mark index-version option as NONEG
And these four fix cases where we just quietly do the wrong thing:
  [05/13]: cat-file: mark batch options with NONEG
  [06/13]: status: mark --find-renames option with NONEG
  [07/13]: format-patch: mark "--no-numbered" option with NONEG
  [08/13]: show-branch: mark --reflog option as NONEG
These ones are just message improvements:
  [09/13]: tag: mark "--message" option with NONEG
  [10/13]: cat-file: report an error on multiple --batch options
  [11/13]: apply: return -1 from option callback instead of calling exit(1)
This one is a segfault, but it has no callers. ;)
  [12/13]: parse-options: drop OPT_DATE()

And then this last one is mostly about annotating the callbacks. It doesn't strictly need to happen here, but the alternative is that I'd eventually have to deal with it in the later series I mentioned.

  [13/13]: assert NOARG/NONEG behavior of parse-options callbacks
 apply.c                       | 24 +++++++++++++++++++++---
 builtin/am.c                  |  4 +++-
 builtin/blame.c               |  4 ++++
 builtin/cat-file.c            | 10 +++++++---
 builtin/checkout-index.c      |  2 ++
 builtin/clean.c               |  1 +
 builtin/commit.c              |  5 ++++-
 builtin/fetch.c               |  2 ++
 builtin/grep.c                | 14 +++++++++++++-
 builtin/init-db.c             |  1 +
 builtin/interpret-trailers.c  |  2 ++
 builtin/log.c                 | 12 +++++++++++-
 builtin/ls-files.c            | 14 +++++++++++---
 builtin/merge-file.c          |  2 ++
 builtin/merge.c               |  1 +
 builtin/notes.c               |  7 +++++++
 builtin/pack-objects.c        |  5 ++++-
 builtin/read-tree.c           |  3 +++
 builtin/rebase.c              |  6 ++++++
 builtin/show-branch.c         |  3 ++-
 builtin/show-ref.c            |  1 +
 builtin/tag.c                 |  6 ++++--
 builtin/update-index.c        | 21 +++++++++++++++++++--
 parse-options-cb.c            | 14 +++++++-------
 parse-options.h               | 18 ++++++++++++++----
 ref-filter.c                  |  2 ++
 t/helper/test-parse-options.c |  2 +-
 t/t0040-parse-options.sh      | 22 ----------------------
 28 files changed, 155 insertions(+), 53 deletions(-)
-Peff
Next: Jeff King
Message 1 of 21 in “parseopt fixes from -Wunused-parameters”
  1. 0/13 parseopt fixes from -Wunused-parametersJeff King, Nov 5, 2018
  2. 01/13 apply: mark include/exclude options as NONEGJeff King, Nov 5, 2018
  3. Junio C HamanoNov 5, 2018
  4. 02/13 am: handle --no-patch-format optionJeff King, Nov 5, 2018
  5. Junio C HamanoNov 5, 2018
  6. 03/13 ls-files: mark exclude options as NONEGJeff King, Nov 5, 2018
  7. 04/13 pack-objects: mark index-version option as NONEGJeff King, Nov 5, 2018
  8. 05/13 cat-file: mark batch options with NONEGJeff King, Nov 5, 2018
  9. 06/13 status: mark --find-renames option with NONEGJeff King, Nov 5, 2018
  10. 07/13 format-patch: mark "--no-numbered" option with NONEGJeff King, Nov 5, 2018
  11. 08/13 show-branch: mark --reflog option as NONEGJeff King, Nov 5, 2018
  12. 09/13 tag: mark "--message" option with NONEGJeff King, Nov 5, 2018
  13. 10/13 cat-file: report an error on multiple --batch optionsJeff King, Nov 5, 2018
  14. 11/13 apply: return -1 from option callback instead of calling exit(1)Jeff King, Nov 5, 2018
  15. 12/13 parse-options: drop OPT_DATE()Jeff King, Nov 5, 2018
  16. parse-options: deprecate OPT_DATECarlo Marcelo Arenas Belón, Nov 5, 2018
  17. Jeff KingNov 5, 2018
  18. 13/13 assert NOARG/NONEG behavior of parse-options callbacksJeff King, Nov 5, 2018
  19. Duy NguyenNov 5, 2018
  20. Jeff KingNov 5, 2018
  21. Duy NguyenNov 5, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.