Merge branch 'pw/adopt-c99-bool-officially'
Declare weather-balloon we raised for "bool" type 18 months ago a success and officially allow using the type in our codebase. * pw/adopt-c99-bool-officially: strbuf: convert predicates to return bool git-compat-util: convert string predicates to return bool CodingGuidelines: allow the use of boolmaint
						commit
						5ce97021dd
					
				|  | @ -298,6 +298,9 @@ For C programs: | |||
|    . since late 2021 with 44ba10d6, we have had variables declared in | ||||
|      the for loop "for (int i = 0; i < 10; i++)". | ||||
|  | ||||
|    . since late 2023 with 8277dbe987 we have been using the bool type | ||||
|      from <stdbool.h>. | ||||
|  | ||||
|    New C99 features that we cannot use yet: | ||||
|  | ||||
|    . %z and %zu as a printf() argument for a size_t (the %z being for | ||||
|  |  | |||
|  | @ -897,16 +897,16 @@ static inline size_t xsize_t(off_t len) | |||
|  * is done via tolower(), so it is strictly ASCII (no multi-byte characters or | ||||
|  * locale-specific conversions). | ||||
|  */ | ||||
| static inline int skip_iprefix(const char *str, const char *prefix, | ||||
| static inline bool skip_iprefix(const char *str, const char *prefix, | ||||
| 			       const char **out) | ||||
| { | ||||
| 	do { | ||||
| 		if (!*prefix) { | ||||
| 			*out = str; | ||||
| 			return 1; | ||||
| 			return true; | ||||
| 		} | ||||
| 	} while (tolower(*str++) == tolower(*prefix++)); | ||||
| 	return 0; | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  | @ -914,7 +914,7 @@ static inline int skip_iprefix(const char *str, const char *prefix, | |||
|  * comparison is done via tolower(), so it is strictly ASCII (no multi-byte | ||||
|  * characters or locale-specific conversions). | ||||
|  */ | ||||
| static inline int skip_iprefix_mem(const char *buf, size_t len, | ||||
| static inline bool skip_iprefix_mem(const char *buf, size_t len, | ||||
| 				   const char *prefix, | ||||
| 				   const char **out, size_t *outlen) | ||||
| { | ||||
|  | @ -922,10 +922,10 @@ static inline int skip_iprefix_mem(const char *buf, size_t len, | |||
| 		if (!*prefix) { | ||||
| 			*out = buf; | ||||
| 			*outlen = len; | ||||
| 			return 1; | ||||
| 			return true; | ||||
| 		} | ||||
| 	} while (len-- > 0 && tolower(*buf++) == tolower(*prefix++)); | ||||
| 	return 0; | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
| static inline int strtoul_ui(char const *s, int base, unsigned int *result) | ||||
|  |  | |||
							
								
								
									
										28
									
								
								strbuf.c
								
								
								
								
							
							
						
						
									
										28
									
								
								strbuf.c
								
								
								
								
							|  | @ -8,55 +8,55 @@ | |||
| #include "utf8.h" | ||||
| #include "date.h" | ||||
|  | ||||
| int starts_with(const char *str, const char *prefix) | ||||
| bool starts_with(const char *str, const char *prefix) | ||||
| { | ||||
| 	for (; ; str++, prefix++) | ||||
| 		if (!*prefix) | ||||
| 			return 1; | ||||
| 			return true; | ||||
| 		else if (*str != *prefix) | ||||
| 			return 0; | ||||
| 			return false; | ||||
| } | ||||
|  | ||||
| int istarts_with(const char *str, const char *prefix) | ||||
| bool istarts_with(const char *str, const char *prefix) | ||||
| { | ||||
| 	for (; ; str++, prefix++) | ||||
| 		if (!*prefix) | ||||
| 			return 1; | ||||
| 			return true; | ||||
| 		else if (tolower(*str) != tolower(*prefix)) | ||||
| 			return 0; | ||||
| 			return false; | ||||
| } | ||||
|  | ||||
| int starts_with_mem(const char *str, size_t len, const char *prefix) | ||||
| bool starts_with_mem(const char *str, size_t len, const char *prefix) | ||||
| { | ||||
| 	const char *end = str + len; | ||||
| 	for (; ; str++, prefix++) { | ||||
| 		if (!*prefix) | ||||
| 			return 1; | ||||
| 			return true; | ||||
| 		else if (str == end || *str != *prefix) | ||||
| 			return 0; | ||||
| 			return false; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| int skip_to_optional_arg_default(const char *str, const char *prefix, | ||||
| bool skip_to_optional_arg_default(const char *str, const char *prefix, | ||||
| 				 const char **arg, const char *def) | ||||
| { | ||||
| 	const char *p; | ||||
|  | ||||
| 	if (!skip_prefix(str, prefix, &p)) | ||||
| 		return 0; | ||||
| 		return false; | ||||
|  | ||||
| 	if (!*p) { | ||||
| 		if (arg) | ||||
| 			*arg = def; | ||||
| 		return 1; | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	if (*p != '=') | ||||
| 		return 0; | ||||
| 		return false; | ||||
|  | ||||
| 	if (arg) | ||||
| 		*arg = p + 1; | ||||
| 	return 1; | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  |  | |||
							
								
								
									
										12
									
								
								strbuf.h
								
								
								
								
							
							
						
						
									
										12
									
								
								strbuf.h
								
								
								
								
							|  | @ -660,9 +660,9 @@ char *xstrvfmt(const char *fmt, va_list ap); | |||
| __attribute__((format (printf, 1, 2))) | ||||
| char *xstrfmt(const char *fmt, ...); | ||||
|  | ||||
| int starts_with(const char *str, const char *prefix); | ||||
| int istarts_with(const char *str, const char *prefix); | ||||
| int starts_with_mem(const char *str, size_t len, const char *prefix); | ||||
| bool starts_with(const char *str, const char *prefix); | ||||
| bool istarts_with(const char *str, const char *prefix); | ||||
| bool starts_with_mem(const char *str, size_t len, const char *prefix); | ||||
|  | ||||
| /* | ||||
|  * If the string "str" is the same as the string in "prefix", then the "arg" | ||||
|  | @ -678,16 +678,16 @@ int starts_with_mem(const char *str, size_t len, const char *prefix); | |||
|  * can be used instead of !strcmp(arg, "--key") and then | ||||
|  * skip_prefix(arg, "--key=", &arg) to parse such an option. | ||||
|  */ | ||||
| int skip_to_optional_arg_default(const char *str, const char *prefix, | ||||
| bool skip_to_optional_arg_default(const char *str, const char *prefix, | ||||
| 				 const char **arg, const char *def); | ||||
|  | ||||
| static inline int skip_to_optional_arg(const char *str, const char *prefix, | ||||
| static inline bool skip_to_optional_arg(const char *str, const char *prefix, | ||||
| 				       const char **arg) | ||||
| { | ||||
| 	return skip_to_optional_arg_default(str, prefix, arg, ""); | ||||
| } | ||||
|  | ||||
| static inline int ends_with(const char *str, const char *suffix) | ||||
| static inline bool ends_with(const char *str, const char *suffix) | ||||
| { | ||||
| 	size_t len; | ||||
| 	return strip_suffix(str, suffix, &len); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano