git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] convert: use skip_iprefix() in validate_encoding()
@ 2019-11-08 20:27 René Scharfe
  2019-11-08 22:19 ` Jeff King
  0 siblings, 1 reply; 2+ messages in thread
From: René Scharfe @ 2019-11-08 20:27 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Lars Schneider, Junio C Hamano

Use skip_iprefix() to parse "UTF" case-insensitively instead of checking
with istarts_with(), building an upper-case version and then using
skip_prefix() on it.  This gets rid of duplicate code and of a small
allocation.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 convert.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/convert.c b/convert.c
index 25ac525d5f..99f684bf3e 100644
--- a/convert.c
+++ b/convert.c
@@ -270,8 +270,12 @@ static int will_convert_lf_to_crlf(struct text_stat *stats,
 static int validate_encoding(const char *path, const char *enc,
 		      const char *data, size_t len, int die_on_error)
 {
+	const char *stripped;
+
 	/* We only check for UTF here as UTF?? can be an alias for UTF-?? */
-	if (istarts_with(enc, "UTF")) {
+	if (skip_iprefix(enc, "UTF", &stripped)) {
+		skip_prefix(stripped, "-", &stripped);
+
 		/*
 		 * Check for detectable errors in UTF encodings
 		 */
@@ -285,15 +289,10 @@ static int validate_encoding(const char *path, const char *enc,
 			 */
 			const char *advise_msg = _(
 				"The file '%s' contains a byte order "
-				"mark (BOM). Please use UTF-%s as "
+				"mark (BOM). Please use UTF-%.*s as "
 				"working-tree-encoding.");
-			const char *stripped = NULL;
-			char *upper = xstrdup_toupper(enc);
-			upper[strlen(upper)-2] = '\0';
-			if (skip_prefix(upper, "UTF", &stripped))
-				skip_prefix(stripped, "-", &stripped);
-			advise(advise_msg, path, stripped);
-			free(upper);
+			int stripped_len = strlen(stripped) - strlen("BE");
+			advise(advise_msg, path, stripped_len, stripped);
 			if (die_on_error)
 				die(error_msg, path, enc);
 			else {
@@ -308,12 +307,7 @@ static int validate_encoding(const char *path, const char *enc,
 				"mark (BOM). Please use UTF-%sBE or UTF-%sLE "
 				"(depending on the byte order) as "
 				"working-tree-encoding.");
-			const char *stripped = NULL;
-			char *upper = xstrdup_toupper(enc);
-			if (skip_prefix(upper, "UTF", &stripped))
-				skip_prefix(stripped, "-", &stripped);
 			advise(advise_msg, path, stripped, stripped);
-			free(upper);
 			if (die_on_error)
 				die(error_msg, path, enc);
 			else {
--
2.24.0

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] convert: use skip_iprefix() in validate_encoding()
  2019-11-08 20:27 [PATCH] convert: use skip_iprefix() in validate_encoding() René Scharfe
@ 2019-11-08 22:19 ` Jeff King
  0 siblings, 0 replies; 2+ messages in thread
From: Jeff King @ 2019-11-08 22:19 UTC (permalink / raw)
  To: René Scharfe; +Cc: Git Mailing List, Lars Schneider, Junio C Hamano

On Fri, Nov 08, 2019 at 09:27:34PM +0100, René Scharfe wrote:

> @@ -285,15 +289,10 @@ static int validate_encoding(const char *path, const char *enc,
>  			 */
>  			const char *advise_msg = _(
>  				"The file '%s' contains a byte order "
> -				"mark (BOM). Please use UTF-%s as "
> +				"mark (BOM). Please use UTF-%.*s as "
>  				"working-tree-encoding.");
> -			const char *stripped = NULL;
> -			char *upper = xstrdup_toupper(enc);
> -			upper[strlen(upper)-2] = '\0';
> -			if (skip_prefix(upper, "UTF", &stripped))
> -				skip_prefix(stripped, "-", &stripped);
> -			advise(advise_msg, path, stripped);
> -			free(upper);
> +			int stripped_len = strlen(stripped) - strlen("BE");
> +			advise(advise_msg, path, stripped_len, stripped);

I think we could drop xstrdup_toupper() after this.

Of course it _could_ come in handy in another spot, but in most cases
you can use xstrdup_tolower() interchangeably (e.g., that would have
worked here). And even the tolower() variant is seldom used.

-Peff

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-11-08 22:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-08 20:27 [PATCH] convert: use skip_iprefix() in validate_encoding() René Scharfe
2019-11-08 22:19 ` Jeff King

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