From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Fleischer Subject: [PATCH 1/3] Make read_index_data() public Date: Fri, 12 Apr 2013 19:26:11 +0200 Message-ID: <1365787573-597-2-git-send-email-git@cryptocrack.de> References: <1365787573-597-1-git-send-email-git@cryptocrack.de> To: git@vger.kernel.org X-From: git-owner@vger.kernel.org Fri Apr 12 19:26:27 2013 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UQhjy-0004Ep-ED for gcvg-git-2@plane.gmane.org; Fri, 12 Apr 2013 19:26:22 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755905Ab3DLR0R (ORCPT ); Fri, 12 Apr 2013 13:26:17 -0400 Received: from elnino.cryptocrack.de ([46.165.227.75]:17096 "EHLO elnino.cryptocrack.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753304Ab3DLR0Q (ORCPT ); Fri, 12 Apr 2013 13:26:16 -0400 Received: from localhost (p57B41A7F.dip.t-dialin.net [87.180.26.127]) by elnino.cryptocrack.de (OpenSMTPD) with ESMTP id e7e81691 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128) for ; Fri, 12 Apr 2013 19:26:14 +0200 (CEST) X-Mailer: git-send-email 1.8.2.675.gda3bb24.dirty In-Reply-To: <1365787573-597-1-git-send-email-git@cryptocrack.de> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: This allows for reusing the function in convert.c later. Also, move it from attr.c to read-cache.c and add a use_index parameter to specify a custom index_state since we are no longer enable to access the static use_index variable from attr.c. Signed-off-by: Lukas Fleischer --- I am not totally sure whether read-cache.c is the best place for this... attr.c | 35 +---------------------------------- cache.h | 1 + read-cache.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/attr.c b/attr.c index 689bc2a..2e1ce7b 100644 --- a/attr.c +++ b/attr.c @@ -381,46 +381,13 @@ static struct attr_stack *read_attr_from_file(const char *path, int macro_ok) return res; } -static void *read_index_data(const char *path) -{ - int pos, len; - unsigned long sz; - enum object_type type; - void *data; - struct index_state *istate = use_index ? use_index : &the_index; - - len = strlen(path); - pos = index_name_pos(istate, path, len); - if (pos < 0) { - /* - * We might be in the middle of a merge, in which - * case we would read stage #2 (ours). - */ - int i; - for (i = -pos - 1; - (pos < 0 && i < istate->cache_nr && - !strcmp(istate->cache[i]->name, path)); - i++) - if (ce_stage(istate->cache[i]) == 2) - pos = i; - } - if (pos < 0) - return NULL; - data = read_sha1_file(istate->cache[pos]->sha1, &type, &sz); - if (!data || type != OBJ_BLOB) { - free(data); - return NULL; - } - return data; -} - static struct attr_stack *read_attr_from_index(const char *path, int macro_ok) { struct attr_stack *res; char *buf, *sp; int lineno = 0; - buf = read_index_data(path); + buf = read_index_data(path, use_index); if (!buf) return NULL; diff --git a/cache.h b/cache.h index ba5a47c..a71e443 100644 --- a/cache.h +++ b/cache.h @@ -471,6 +471,7 @@ extern int add_file_to_index(struct index_state *, const char *path, int flags); extern struct cache_entry *make_cache_entry(unsigned int mode, const unsigned char *sha1, const char *path, int stage, int refresh); extern int ce_same_name(struct cache_entry *a, struct cache_entry *b); extern int index_name_is_other(const struct index_state *, const char *, int); +extern void *read_index_data(const char *path, struct index_state *use_index); /* do stat comparison even if CE_VALID is true */ #define CE_MATCH_IGNORE_VALID 01 diff --git a/read-cache.c b/read-cache.c index 5a9704f..39e3424 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1899,3 +1899,36 @@ int index_name_is_other(const struct index_state *istate, const char *name, } return 1; } + +void *read_index_data(const char *path, struct index_state *use_index) +{ + int pos, len; + unsigned long sz; + enum object_type type; + void *data; + struct index_state *istate = use_index ? use_index : &the_index; + + len = strlen(path); + pos = index_name_pos(istate, path, len); + if (pos < 0) { + /* + * We might be in the middle of a merge, in which + * case we would read stage #2 (ours). + */ + int i; + for (i = -pos - 1; + (pos < 0 && i < istate->cache_nr && + !strcmp(istate->cache[i]->name, path)); + i++) + if (ce_stage(istate->cache[i]) == 2) + pos = i; + } + if (pos < 0) + return NULL; + data = read_sha1_file(istate->cache[pos]->sha1, &type, &sz); + if (!data || type != OBJ_BLOB) { + free(data); + return NULL; + } + return data; +} -- 1.8.2.675.gda3bb24.dirty