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

Re: [PATCH v2 3/7] sane-ctype.h: move sane-ctype macros from git-compat-util.h

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
May 28, 2023, 12:04 UTC
Message-ID
<4d29e5d4-6ce3-c099-15a7-e89ad787780d@gmail.com>
In-Reply-To
<20230526211911.2291886-1-jonathantanmy@google.com>
Hi Calvin and Jonathan
On 26/05/2023 22:19, Jonathan Tan wrote:
> Calvin Wan <calvinwan@google.com> writes:
>> Splitting these macros from git-compat-util.h cleans up the file and
>> allows future third-party sources to not use these overrides if they do
>> not wish to.

I think splitting these out makes sense. If you have time to add a comment highlighting the differences from the standard library versions that would be really helpful. As far as I know the differences are

  - our versions are locale independent
  - our isspace() does not consider '\v' or '\f' to be space
  - our versions expect a signed or unsigned char rather than an int
    as their argument
  - our versions do not accept EOF
  - our versions do not require an explicit cast to avoid undefined
    behavior when passing char on systems where char is signed
Show 7 quoted lines
>> Signed-off-by: Calvin Wan <calvinwan@google.com>
>> ---
>>   git-compat-util.h | 65 +-------------------------------------------
>>   sane-ctype.h      | 69 +++++++++++++++++++++++++++++++++++++++++++++++
> 
> Any specific reason for the "sane-" prefix? I think it would make more
> sense if it was just named ctype.h: see below.

I don't have a strong opinion either way but "sane-ctype.h" makes it clearer why we're doing something different to the standard library.

Show 6 quoted lines
>> -/* in ctype.c, for kwset users */
>> -extern const unsigned char tolower_trans_tbl[256];
> 
> I'm not sure what this has to do with sanity, but this is indeed defined
> in ctype.c, so it's easier to justify moving this out if the criterion
> was "what's in ctype.c" rather than "what's related to sane ctypes".

There is only one user of this so it could be moved to diffcore-pickaxe.c or kwset.c where it would be more discoverable if anyone needs to add another user in the future.

Show 5 quoted lines
>> -extern const signed char hexval_table[256];
> 
> And this one has nothing to do with ctypes or sanity, but rather, what's
> considered to be a hex character. I think we need another patch to move
> this to hex.h.

Isn't "what's considered to be a hex character" related to ctypes and sanity though as it is used by the "sane" definition of isxdigit().

>> -#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1)
> 
> Same for this one.

I'd much rather keep all of our "sane" ctype replacements in one place as Calvin is proposing. isxdigit() is defined in <ctype.h> so it should be in our "sane" version of that header.

Best Wishes
Phillip
> With the above suggestions, I think we do get what we want - a split
> between things that make ctype more sane and between other compat stuff,
> and also a split between those two and more platform-agnostic things
> like what a hex character is.
Previous: Jonathan TanNext: Jonathan Tan
Message 21 of 56 in “git-compat-util cleanups”
  1. 0/6 git-compat-util cleanupsCalvin Wan, May 16, 2023
  2. 1/6 strbuf.h: move declarations for strbuf.c functions from git-compat-util.hCalvin Wan, May 16, 2023
  3. Junio C HamanoMay 16, 2023
  4. 2/6 wrapper.h: move declarations for wrapper.c functions from git-compat-util.hCalvin Wan, May 16, 2023
  5. Junio C HamanoMay 16, 2023
  6. 3/6 common.h: move non-compat specific macros and functions from git-compat-util.hCalvin Wan, May 16, 2023
  7. Junio C HamanoMay 16, 2023
  8. Calvin WanMay 17, 2023
  9. 4/6 usage.h: move declarations for usage.c functions from git-compat-util.hCalvin Wan, May 16, 2023
  10. 5/6 treewide: remove unnecessary includes for wrapper.hCalvin Wan, May 16, 2023
  11. 6/6 common: move alloc macros to common.hCalvin Wan, May 16, 2023
  12. Junio C HamanoMay 16, 2023
  13. Calvin WanMay 16, 2023
  14. 0/7 git-compat-util cleanupsCalvin Wan, May 23, 2023
  15. 1/7 strbuf.h: move declarations for strbuf.c functions from git-compat-util.hCalvin Wan, May 23, 2023
  16. Jonathan TanMay 26, 2023
  17. 2/7 wrapper.h: move declarations for wrapper.c functions from git-compat-util.hCalvin Wan, May 23, 2023
  18. Jonathan TanMay 26, 2023
  19. 3/7 sane-ctype.h: move sane-ctype macros from git-compat-util.hCalvin Wan, May 23, 2023
  20. Jonathan TanMay 26, 2023
  21. Phillip WoodMay 28, 2023
  22. Jonathan TanMay 30, 2023
  23. Junio C HamanoJun 1, 2023
  24. 5/7 usage.h: move declarations for usage.c functions from git-compat-util.hCalvin Wan, May 23, 2023
  25. 4/7 common.h: move non-compat specific macros and functions from git-compat-util.hCalvin Wan, May 23, 2023
  26. 6/7 treewide: remove unnecessary includes for wrapper.hCalvin Wan, May 23, 2023
  27. 7/7 common: move alloc macros to common.hCalvin Wan, May 23, 2023
  28. Jonathan TanMay 26, 2023
  29. Jonathan TanMay 26, 2023
  30. 0/8 git-compat-util cleanupsCalvin Wan, Jun 6, 2023
  31. 1/8 git-compat-util: move strbuf.c funcs to its headerCalvin Wan, Jun 6, 2023
  32. 2/8 git-compat-util: move wrapper.c funcs to its headerCalvin Wan, Jun 6, 2023
  33. 3/8 sane-ctype.h: create header for sane-ctype macrosCalvin Wan, Jun 6, 2023
  34. 4/8 kwset: move translation table from ctypeCalvin Wan, Jun 6, 2023
  35. 5/8 common.h: move non-compat specific macros and functionsCalvin Wan, Jun 6, 2023
  36. Ramsay JonesJun 6, 2023
  37. Calvin WanJun 7, 2023
  38. Junio C HamanoJun 12, 2023
  39. Calvin WanJun 13, 2023
  40. Junio C HamanoJun 13, 2023
  41. Calvin WanJun 14, 2023
  42. 6/8 git-compat-util: move usage.c funcs to its headerCalvin Wan, Jun 6, 2023
  43. 7/8 treewide: remove unnecessary includes for wrapper.hCalvin Wan, Jun 6, 2023
  44. 8/8 common: move alloc macros to common.hCalvin Wan, Jun 6, 2023
  45. 0/6 git-compat-util cleanupsCalvin Wan, Jun 30, 2023
  46. 1/6 git-compat-util: move strbuf.c funcs to its headerCalvin Wan, Jun 30, 2023
  47. 2/6 git-compat-util: move wrapper.c funcs to its headerCalvin Wan, Jun 30, 2023
  48. 3/6 sane-ctype.h: create header for sane-ctype macrosCalvin Wan, Jun 30, 2023
  49. 4/6 kwset: move translation table from ctypeCalvin Wan, Jun 30, 2023
  50. 5/6 treewide: remove unnecessary includes for wrapper.hCalvin Wan, Jun 30, 2023
  51. 6/6 common: move alloc macros to common.hCalvin Wan, Jun 30, 2023
  52. Junio C HamanoJun 30, 2023
  53. Calvin WanJul 5, 2023
  54. Junio C HamanoJul 5, 2023
  55. Calvin WanJul 5, 2023
  56. Junio C HamanoJun 30, 2023

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.