git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saurav Sachidanand <sauravsachidanand@gmail.com>
To: git@vger.kernel.org
Cc: Saurav Sachidanand <sauravsachidanand@gmail.com>
Subject: [PATCH] Change type of signed int flags to unsigned
Date: Thu, 25 Feb 2016 18:54:32 +0530	[thread overview]
Message-ID: <1456406672-5661-1-git-send-email-sauravsachidanand@gmail.com> (raw)

“pattern” and “exclude” are two structs defined in attr.c and dir.h
respectively. Each contains a field named “flags” of type int, that
takes on values from the set of positive integers {1, 4, 8, 16}
enumerated through the macro EXC_FLAG_*.

That the most significant bit (used to store the sign) of these two
fields is not used in any special way, is observed from the fact
that, the flags fields (accessed within attr.c, dir.c, and
builtin/check-ignore.c) is either checked for it's value using the &
operator (e.g.: flags & EXC_FLAG_NODIR), or assigned a value of 0
first and then assigned any one of {1, 4, 8, 16} using the | operator
(e.g.: flags |= EXC_FLAG_NODIR). Hence, change the type of flags
to unsigned in both structs.

Furthermore, flags is passed by reference to the function
parse_exclude_pattern defined in dir.c, which accepts an “int *” type
for the flags argument. To avoid converting between pointers to
different types, change type of the flags argument to “unsigned *”.

While we’re at it, document the flags field of exclude to explicitly
state the values it’s supposed to take on.

Signed-off-by: Saurav Sachidanand <sauravsachidanand@gmail.com>
---
 attr.c | 2 +-
 dir.c  | 4 ++--
 dir.h  | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/attr.c b/attr.c
index 086c08d..679e13c 100644
--- a/attr.c
+++ b/attr.c
@@ -124,7 +124,7 @@ struct pattern {
 	const char *pattern;
 	int patternlen;
 	int nowildcardlen;
-	int flags;		/* EXC_FLAG_* */
+	unsigned flags;		/* EXC_FLAG_* */
 };

 /*
diff --git a/dir.c b/dir.c
index 552af23..d36fda7 100644
--- a/dir.c
+++ b/dir.c
@@ -459,7 +459,7 @@ int no_wildcard(const char *string)

 void parse_exclude_pattern(const char **pattern,
 			   int *patternlen,
-			   int *flags,
+			   unsigned *flags,
 			   int *nowildcardlen)
 {
 	const char *p = *pattern;
@@ -500,7 +500,7 @@ void add_exclude(const char *string, const char *base,
 {
 	struct exclude *x;
 	int patternlen;
-	int flags;
+	unsigned flags;
 	int nowildcardlen;

 	parse_exclude_pattern(&string, &patternlen, &flags, &nowildcardlen);
diff --git a/dir.h b/dir.h
index 3ec3fb0..e34df5e 100644
--- a/dir.h
+++ b/dir.h
@@ -28,7 +28,7 @@ struct exclude {
 	int nowildcardlen;
 	const char *base;
 	int baselen;
-	int flags;
+	unsigned flags;		/* EXC_FLAG_* */

 	/*
 	 * Counting starts from 1 for line numbers in ignore files,
@@ -244,7 +244,7 @@ extern struct exclude_list *add_exclude_list(struct dir_struct *dir,
 extern int add_excludes_from_file_to_list(const char *fname, const char *base, int baselen,
 					  struct exclude_list *el, int check_index);
 extern void add_excludes_from_file(struct dir_struct *, const char *fname);
-extern void parse_exclude_pattern(const char **string, int *patternlen, int *flags, int *nowildcardlen);
+extern void parse_exclude_pattern(const char **string, int *patternlen, unsigned *flags, int *nowildcardlen);
 extern void add_exclude(const char *string, const char *base,
 			int baselen, struct exclude_list *el, int srcpos);
 extern void clear_exclude_list(struct exclude_list *el);
--
2.7.1.339.g0233b80

This patch is for the suggested microproject for GSoC 2016 titled
"Use unsigned integral type for collection of bits."

             reply	other threads:[~2016-02-25 13:25 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 13:24 Saurav Sachidanand [this message]
2016-02-28  7:59 ` [PATCH] Change type of signed int flags to unsigned Eric Sunshine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1456406672-5661-1-git-send-email-sauravsachidanand@gmail.com \
    --to=sauravsachidanand@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).