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

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

From
Calvin Wan <calvinwan@google.com>
Date
May 23, 2023, 19:29 UTC
Message-ID
<20230523192949.1271671-3-calvinwan@google.com>
In-Reply-To
<20230523192749.1270992-1-calvinwan@google.com>

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.

Signed-off-by: Calvin Wan <calvinwan@google.com>
---
 git-compat-util.h | 65 +-------------------------------------------
 sane-ctype.h      | 69 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 64 deletions(-)
 create mode 100644 sane-ctype.h
diff --git a/git-compat-util.h b/git-compat-util.h
index f8e68baf29..9d3c21acbb 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -1150,70 +1150,7 @@ static inline size_t xsize_t(off_t len)
 #define HOST_NAME_MAX 256
 #endif
 
-/* in ctype.c, for kwset users */
-extern const unsigned char tolower_trans_tbl[256];
-
-/* Sane ctype - no locale, and works with signed chars */
-#undef isascii
-#undef isspace
-#undef isdigit
-#undef isalpha
-#undef isalnum
-#undef isprint
-#undef islower
-#undef isupper
-#undef tolower
-#undef toupper
-#undef iscntrl
-#undef ispunct
-#undef isxdigit
-
-extern const unsigned char sane_ctype[256];
-extern const signed char hexval_table[256];
-#define GIT_SPACE 0x01
-#define GIT_DIGIT 0x02
-#define GIT_ALPHA 0x04
-#define GIT_GLOB_SPECIAL 0x08
-#define GIT_REGEX_SPECIAL 0x10
-#define GIT_PATHSPEC_MAGIC 0x20
-#define GIT_CNTRL 0x40
-#define GIT_PUNCT 0x80
-#define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0)
-#define isascii(x) (((x) & ~0x7f) == 0)
-#define isspace(x) sane_istest(x,GIT_SPACE)
-#define isdigit(x) sane_istest(x,GIT_DIGIT)
-#define isalpha(x) sane_istest(x,GIT_ALPHA)
-#define isalnum(x) sane_istest(x,GIT_ALPHA | GIT_DIGIT)
-#define isprint(x) ((x) >= 0x20 && (x) <= 0x7e)
-#define islower(x) sane_iscase(x, 1)
-#define isupper(x) sane_iscase(x, 0)
-#define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL)
-#define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL)
-#define iscntrl(x) (sane_istest(x,GIT_CNTRL))
-#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \
-		GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC)
-#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1)
-#define tolower(x) sane_case((unsigned char)(x), 0x20)
-#define toupper(x) sane_case((unsigned char)(x), 0)
-#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC)
-
-static inline int sane_case(int x, int high)
-{
-	if (sane_istest(x, GIT_ALPHA))
-		x = (x & ~0x20) | high;
-	return x;
-}
-
-static inline int sane_iscase(int x, int is_lower)
-{
-	if (!sane_istest(x, GIT_ALPHA))
-		return 0;
-
-	if (is_lower)
-		return (x & 0x20) != 0;
-	else
-		return (x & 0x20) == 0;
-}
+#include "sane-ctype.h"
 
 /*
  * Like skip_prefix, but compare case-insensitively. Note that the comparison
diff --git a/sane-ctype.h b/sane-ctype.h
new file mode 100644
index 0000000000..df06bcbe14
--- /dev/null
+++ b/sane-ctype.h
@@ -0,0 +1,69 @@
+#ifndef SANE_CTYPE_H
+#define SANE_CTYPE_H
+
+/* in ctype.c, for kwset users */
+extern const unsigned char tolower_trans_tbl[256];
+
+/* Sane ctype - no locale, and works with signed chars */
+#undef isascii
+#undef isspace
+#undef isdigit
+#undef isalpha
+#undef isalnum
+#undef isprint
+#undef islower
+#undef isupper
+#undef tolower
+#undef toupper
+#undef iscntrl
+#undef ispunct
+#undef isxdigit
+
+extern const unsigned char sane_ctype[256];
+extern const signed char hexval_table[256];
+#define GIT_SPACE 0x01
+#define GIT_DIGIT 0x02
+#define GIT_ALPHA 0x04
+#define GIT_GLOB_SPECIAL 0x08
+#define GIT_REGEX_SPECIAL 0x10
+#define GIT_PATHSPEC_MAGIC 0x20
+#define GIT_CNTRL 0x40
+#define GIT_PUNCT 0x80
+#define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0)
+#define isascii(x) (((x) & ~0x7f) == 0)
+#define isspace(x) sane_istest(x,GIT_SPACE)
+#define isdigit(x) sane_istest(x,GIT_DIGIT)
+#define isalpha(x) sane_istest(x,GIT_ALPHA)
+#define isalnum(x) sane_istest(x,GIT_ALPHA | GIT_DIGIT)
+#define isprint(x) ((x) >= 0x20 && (x) <= 0x7e)
+#define islower(x) sane_iscase(x, 1)
+#define isupper(x) sane_iscase(x, 0)
+#define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL)
+#define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL)
+#define iscntrl(x) (sane_istest(x,GIT_CNTRL))
+#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \
+		GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC)
+#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1)
+#define tolower(x) sane_case((unsigned char)(x), 0x20)
+#define toupper(x) sane_case((unsigned char)(x), 0)
+#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC)
+
+static inline int sane_case(int x, int high)
+{
+	if (sane_istest(x, GIT_ALPHA))
+		x = (x & ~0x20) | high;
+	return x;
+}
+
+static inline int sane_iscase(int x, int is_lower)
+{
+	if (!sane_istest(x, GIT_ALPHA))
+		return 0;
+
+	if (is_lower)
+		return (x & 0x20) != 0;
+	else
+		return (x & 0x20) == 0;
+}
+
+#endif
-- 
2.40.1.698.g37aff9b760-goog
Previous: Jonathan TanNext: Jonathan Tan
Message 19 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.