git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Haggerty <mhagger@alum.mit.edu>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Michael Haggerty <mhagger@alum.mit.edu>
Subject: [PATCH 07/19] Provide access to the name attribute of git_attr
Date: Tue, 26 Jul 2011 16:12:50 +0200	[thread overview]
Message-ID: <1311689582-3116-8-git-send-email-mhagger@alum.mit.edu> (raw)
In-Reply-To: <1311689582-3116-1-git-send-email-mhagger@alum.mit.edu>

It will be present in any likely future reimplementation, and its
availability simplifies other code.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---

struct git_attr is an opaque structure containing, among other things,
the name of the attribute that it represents.  This patch adds a
function git_attr_name(struct git_attr *) that allows the name to be
read from the structure.  This functionality will be convenient for
later patches.

This seems harmless to me.  It is hardly conceivable that the
implementation will change so dramatically that it becomes impossible
to derive the attribute name from the git_attr.

Please check that the name that I chose for this function conforms to
git conventions.

 Documentation/technical/api-gitattributes.txt |    3 ++-
 attr.c                                        |    4 ++++
 attr.h                                        |    7 +++++++
 3 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/Documentation/technical/api-gitattributes.txt b/Documentation/technical/api-gitattributes.txt
index 916720f..ab3a84d 100644
--- a/Documentation/technical/api-gitattributes.txt
+++ b/Documentation/technical/api-gitattributes.txt
@@ -13,7 +13,8 @@ Data Structure
 	An attribute is an opaque object that is identified by its name.
 	Pass the name to `git_attr()` function to obtain the object of
 	this type.  The internal representation of this structure is
-	of no interest to the calling programs.
+	of no interest to the calling programs.  The name of the
+	attribute can be retrieved by calling `git_attr_name()`.
 
 `struct git_attr_check`::
 
diff --git a/attr.c b/attr.c
index b1d1d6d..a261550 100644
--- a/attr.c
+++ b/attr.c
@@ -36,6 +36,10 @@ static int attr_nr;
 static struct git_attr_check *check_all_attr;
 static struct git_attr *(git_attr_hash[HASHSIZE]);
 
+char *git_attr_name(struct git_attr *attr) {
+	return attr->name;
+}
+
 static unsigned hash_name(const char *name, int namelen)
 {
 	unsigned val = 0, c;
diff --git a/attr.h b/attr.h
index 8b3f19b..d4f875a 100644
--- a/attr.h
+++ b/attr.h
@@ -29,6 +29,13 @@ struct git_attr_check {
 	const char *value;
 };
 
+/*
+ * Return the name of the attribute represented by the argument.  The
+ * return value is a pointer to a null-delimited string that is part
+ * of the internal data structure; it should not be modified or freed.
+ */
+char *git_attr_name(struct git_attr *);
+
 int git_checkattr(const char *path, int, struct git_attr_check *);
 
 enum git_attr_direction {
-- 
1.7.6.8.gd2879

  parent reply	other threads:[~2011-07-26 14:30 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-26 14:12 [PATCH 00/19] Add --all option to git-check-attr Michael Haggerty
2011-07-26 14:12 ` [PATCH 01/19] doc: Add a link from gitattributes(5) to git-check-attr(1) Michael Haggerty
2011-07-26 14:12 ` [PATCH 02/19] doc: Correct git_attr() calls in example code Michael Haggerty
2011-07-26 14:12 ` [PATCH 03/19] Remove anachronism from comment Michael Haggerty
2011-07-26 14:12 ` [PATCH 04/19] Disallow the empty string as an attribute name Michael Haggerty
2011-07-27 20:20   ` Junio C Hamano
2011-07-26 14:12 ` [PATCH 05/19] git-check-attr: Add missing "&&" Michael Haggerty
2011-07-26 14:12 ` [PATCH 06/19] git-check-attr: Add tests of command-line parsing Michael Haggerty
2011-07-26 14:12 ` Michael Haggerty [this message]
2011-07-27 20:02   ` [PATCH 07/19] Provide access to the name attribute of git_attr Junio C Hamano
2011-07-28  4:27     ` Michael Haggerty
2011-07-26 14:12 ` [PATCH 08/19] git-check-attr: Use git_attr_name() Michael Haggerty
2011-07-26 14:12 ` [PATCH 09/19] Allow querying all attributes on a file Michael Haggerty
2011-07-26 14:12 ` [PATCH 10/19] git-check-attr: Extract a function output_attr() Michael Haggerty
2011-07-26 14:12 ` [PATCH 11/19] git-check-attr: Introduce a new variable Michael Haggerty
2011-07-26 14:12 ` [PATCH 12/19] git-check-attr: Extract a function error_with_usage() Michael Haggerty
2011-07-26 14:12 ` [PATCH 13/19] git-check-attr: Handle each error separately Michael Haggerty
2011-07-26 14:12 ` [PATCH 14/19] git-check-attr: Process command-line args more systematically Michael Haggerty
2011-07-26 14:12 ` [PATCH 15/19] git-check-attr: Error out if no pathnames are specified Michael Haggerty
2011-07-26 14:12 ` [PATCH 16/19] git-check-attr: Add an --all option to show all attributes Michael Haggerty
2011-07-28  4:31   ` Michael Haggerty
2011-07-26 14:13 ` [PATCH 17/19] git-check-attr: Drive two tests using the same raw data Michael Haggerty
2011-07-26 14:13 ` [PATCH 18/19] git-check-attr: Fix command-line handling to match docs Michael Haggerty
2011-07-26 14:13 ` [PATCH 19/19] Rename struct git_attr_check to git_attr_value Michael Haggerty

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=1311689582-3116-8-git-send-email-mhagger@alum.mit.edu \
    --to=mhagger@alum.mit.edu \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /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).