Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Make read_patch_file work on a strbuf.
author
Pierre Habouzit
<madcoder@debian.org>
Thu, 27 Sep 2007 11:33:19 +0000
(13:33 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Sun, 30 Sep 2007 04:39:29 +0000
(21:39 -0700)
So that we don't need to use strbuf_detach.
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
387e7e1
)
diff --git
a/builtin-apply.c
b/builtin-apply.c
index fec96a8d9d24cafe492a8dbe40bdb470244ea9f5..4113d66b56c956a51b7327358e76dbef7f3647c9 100644
(file)
--- a/
builtin-apply.c
+++ b/
builtin-apply.c
@@
-178,12
+178,9
@@
static void say_patch_name(FILE *output, const char *pre, struct patch *patch, c
#define CHUNKSIZE (8192)
#define SLOP (16)
#define CHUNKSIZE (8192)
#define SLOP (16)
-static void
*read_patch_file(int fd, size_t *sizep
)
+static void
read_patch_file(struct strbuf *sb, int fd
)
{
{
- struct strbuf buf;
-
- strbuf_init(&buf, 0);
- if (strbuf_read(&buf, fd, 0) < 0)
+ if (strbuf_read(sb, fd, 0) < 0)
die("git-apply: read returned %s", strerror(errno));
/*
die("git-apply: read returned %s", strerror(errno));
/*
@@
-191,9
+188,8
@@
static void *read_patch_file(int fd, size_t *sizep)
* so that we can do speculative "memcmp" etc, and
* see to it that it is NUL-filled.
*/
* so that we can do speculative "memcmp" etc, and
* see to it that it is NUL-filled.
*/
- strbuf_grow(&buf, SLOP);
- memset(buf.buf + buf.len, 0, SLOP);
- return strbuf_detach(&buf, sizep);
+ strbuf_grow(sb, SLOP);
+ memset(sb->buf + sb->len, 0, SLOP);
}
static unsigned long linelen(const char *buffer, unsigned long size)
}
static unsigned long linelen(const char *buffer, unsigned long size)
@@
-2633,22
+2629,22
@@
static void prefix_patches(struct patch *p)
static int apply_patch(int fd, const char *filename, int inaccurate_eof)
{
static int apply_patch(int fd, const char *filename, int inaccurate_eof)
{
-
unsigned long offset, size
;
-
char *buffer = read_patch_file(fd, &size)
;
+
size_t offset
;
+
struct strbuf buf
;
struct patch *list = NULL, **listp = &list;
int skipped_patch = 0;
struct patch *list = NULL, **listp = &list;
int skipped_patch = 0;
+ strbuf_init(&buf, 0);
patch_input_file = filename;
patch_input_file = filename;
- if (!buffer)
- return -1;
+ read_patch_file(&buf, fd);
offset = 0;
offset = 0;
- while (
size > 0
) {
+ while (
offset < buf.len
) {
struct patch *patch;
int nr;
patch = xcalloc(1, sizeof(*patch));
patch->inaccurate_eof = inaccurate_eof;
struct patch *patch;
int nr;
patch = xcalloc(1, sizeof(*patch));
patch->inaccurate_eof = inaccurate_eof;
- nr = parse_chunk(buf
fer + offset, size
, patch);
+ nr = parse_chunk(buf
.buf + offset, buf.len
, patch);
if (nr < 0)
break;
if (apply_in_reverse)
if (nr < 0)
break;
if (apply_in_reverse)
@@
-2666,7
+2662,6
@@
static int apply_patch(int fd, const char *filename, int inaccurate_eof)
skipped_patch++;
}
offset += nr;
skipped_patch++;
}
offset += nr;
- size -= nr;
}
if (whitespace_error && (new_whitespace == error_on_whitespace))
}
if (whitespace_error && (new_whitespace == error_on_whitespace))
@@
-2701,7
+2696,7
@@
static int apply_patch(int fd, const char *filename, int inaccurate_eof)
if (summary)
summary_patch_list(list);
if (summary)
summary_patch_list(list);
-
free(buffer
);
+
strbuf_release(&buf
);
return 0;
}
return 0;
}