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

[PATCH 07/19] Provide access to the name attribute of git_attr

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Jul 26, 2011, 14:12 UTC
Message-ID
<1311689582-3116-8-git-send-email-mhagger@alum.mit.edu>
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
Previous: Michael HaggertyNext: Junio C Hamano
Message 9 of 24 in “Add --all option to git-check-attr”
  1. 00/19 Add --all option to git-check-attrMichael Haggerty, Jul 26, 2011
  2. 01/19 doc: Add a link from gitattributes(5) to git-check-attr(1)Michael Haggerty, Jul 26, 2011
  3. 02/19 doc: Correct git_attr() calls in example codeMichael Haggerty, Jul 26, 2011
  4. 03/19 Remove anachronism from commentMichael Haggerty, Jul 26, 2011
  5. 04/19 Disallow the empty string as an attribute nameMichael Haggerty, Jul 26, 2011
  6. Junio C HamanoJul 27, 2011
  7. 05/19 git-check-attr: Add missing "&&"Michael Haggerty, Jul 26, 2011
  8. 06/19 git-check-attr: Add tests of command-line parsingMichael Haggerty, Jul 26, 2011
  9. 07/19 Provide access to the name attribute of git_attrMichael Haggerty, Jul 26, 2011
  10. Junio C HamanoJul 27, 2011
  11. Michael HaggertyJul 28, 2011
  12. 08/19 git-check-attr: Use git_attr_name()Michael Haggerty, Jul 26, 2011
  13. 09/19 Allow querying all attributes on a fileMichael Haggerty, Jul 26, 2011
  14. 10/19 git-check-attr: Extract a function output_attr()Michael Haggerty, Jul 26, 2011
  15. 11/19 git-check-attr: Introduce a new variableMichael Haggerty, Jul 26, 2011
  16. 12/19 git-check-attr: Extract a function error_with_usage()Michael Haggerty, Jul 26, 2011
  17. 13/19 git-check-attr: Handle each error separatelyMichael Haggerty, Jul 26, 2011
  18. 14/19 git-check-attr: Process command-line args more systematicallyMichael Haggerty, Jul 26, 2011
  19. 15/19 git-check-attr: Error out if no pathnames are specifiedMichael Haggerty, Jul 26, 2011
  20. 16/19 git-check-attr: Add an --all option to show all attributesMichael Haggerty, Jul 26, 2011
  21. Michael HaggertyJul 28, 2011
  22. 17/19 git-check-attr: Drive two tests using the same raw dataMichael Haggerty, Jul 26, 2011
  23. 18/19 git-check-attr: Fix command-line handling to match docsMichael Haggerty, Jul 26, 2011
  24. 19/19 Rename struct git_attr_check to git_attr_valueMichael Haggerty, Jul 26, 2011

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.