git@vger.kernel.org mailing list mirror (one of many)
 help / Atom feed
From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: git@vger.kernel.org
Cc: Nguyễn Thái Ngọc Duy  <pclouds@gmail.com>,
	Patryk Obara <patryk.obara@gmail.com>, Jeff King <peff@peff.net>,
	Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH v3 15/36] archive: convert write_archive_entry_fn_t to object_id
Date: Mon, 12 Mar 2018 02:27:35 +0000
Message-ID: <20180312022756.483934-16-sandals@crustytoothpaste.net> (raw)
In-Reply-To: <20180312022756.483934-1-sandals@crustytoothpaste.net>

Convert the write_archive_entry_fn_t type to use a pointer to struct
object_id.  Convert various static functions in the tar and zip
archivers also.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 archive-tar.c | 28 ++++++++++++++--------------
 archive-zip.c | 16 ++++++++--------
 archive.c     | 12 ++++++------
 archive.h     |  2 +-
 4 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/archive-tar.c b/archive-tar.c
index c6ed96ee74..24b1ccef3a 100644
--- a/archive-tar.c
+++ b/archive-tar.c
@@ -111,7 +111,7 @@ static void write_trailer(void)
  * queues up writes, so that all our write(2) calls write exactly one
  * full block; pads writes to RECORDSIZE
  */
-static int stream_blocked(const unsigned char *sha1)
+static int stream_blocked(const struct object_id *oid)
 {
 	struct git_istream *st;
 	enum object_type type;
@@ -119,9 +119,9 @@ static int stream_blocked(const unsigned char *sha1)
 	char buf[BLOCKSIZE];
 	ssize_t readlen;
 
-	st = open_istream(sha1, &type, &sz, NULL);
+	st = open_istream(oid->hash, &type, &sz, NULL);
 	if (!st)
-		return error("cannot stream blob %s", sha1_to_hex(sha1));
+		return error("cannot stream blob %s", oid_to_hex(oid));
 	for (;;) {
 		readlen = read_istream(st, buf, sizeof(buf));
 		if (readlen <= 0)
@@ -218,7 +218,7 @@ static void prepare_header(struct archiver_args *args,
 }
 
 static void write_extended_header(struct archiver_args *args,
-				  const unsigned char *sha1,
+				  const struct object_id *oid,
 				  const void *buffer, unsigned long size)
 {
 	struct ustar_header header;
@@ -226,14 +226,14 @@ static void write_extended_header(struct archiver_args *args,
 	memset(&header, 0, sizeof(header));
 	*header.typeflag = TYPEFLAG_EXT_HEADER;
 	mode = 0100666;
-	xsnprintf(header.name, sizeof(header.name), "%s.paxheader", sha1_to_hex(sha1));
+	xsnprintf(header.name, sizeof(header.name), "%s.paxheader", oid_to_hex(oid));
 	prepare_header(args, &header, mode, size);
 	write_blocked(&header, sizeof(header));
 	write_blocked(buffer, size);
 }
 
 static int write_tar_entry(struct archiver_args *args,
-			   const unsigned char *sha1,
+			   const struct object_id *oid,
 			   const char *path, size_t pathlen,
 			   unsigned int mode)
 {
@@ -257,7 +257,7 @@ static int write_tar_entry(struct archiver_args *args,
 		mode = (mode | ((mode & 0100) ? 0777 : 0666)) & ~tar_umask;
 	} else {
 		return error("unsupported file mode: 0%o (SHA1: %s)",
-			     mode, sha1_to_hex(sha1));
+			     mode, oid_to_hex(oid));
 	}
 	if (pathlen > sizeof(header.name)) {
 		size_t plen = get_path_prefix(path, pathlen,
@@ -268,7 +268,7 @@ static int write_tar_entry(struct archiver_args *args,
 			memcpy(header.name, path + plen + 1, rest);
 		} else {
 			xsnprintf(header.name, sizeof(header.name), "%s.data",
-				  sha1_to_hex(sha1));
+				  oid_to_hex(oid));
 			strbuf_append_ext_header(&ext_header, "path",
 						 path, pathlen);
 		}
@@ -276,14 +276,14 @@ static int write_tar_entry(struct archiver_args *args,
 		memcpy(header.name, path, pathlen);
 
 	if (S_ISREG(mode) && !args->convert &&
-	    sha1_object_info(sha1, &size) == OBJ_BLOB &&
+	    sha1_object_info(oid->hash, &size) == OBJ_BLOB &&
 	    size > big_file_threshold)
 		buffer = NULL;
 	else if (S_ISLNK(mode) || S_ISREG(mode)) {
 		enum object_type type;
-		buffer = sha1_file_to_archive(args, path, sha1, old_mode, &type, &size);
+		buffer = sha1_file_to_archive(args, path, oid->hash, old_mode, &type, &size);
 		if (!buffer)
-			return error("cannot read %s", sha1_to_hex(sha1));
+			return error("cannot read %s", oid_to_hex(oid));
 	} else {
 		buffer = NULL;
 		size = 0;
@@ -292,7 +292,7 @@ static int write_tar_entry(struct archiver_args *args,
 	if (S_ISLNK(mode)) {
 		if (size > sizeof(header.linkname)) {
 			xsnprintf(header.linkname, sizeof(header.linkname),
-				  "see %s.paxheader", sha1_to_hex(sha1));
+				  "see %s.paxheader", oid_to_hex(oid));
 			strbuf_append_ext_header(&ext_header, "linkpath",
 			                         buffer, size);
 		} else
@@ -308,7 +308,7 @@ static int write_tar_entry(struct archiver_args *args,
 	prepare_header(args, &header, mode, size_in_header);
 
 	if (ext_header.len > 0) {
-		write_extended_header(args, sha1, ext_header.buf,
+		write_extended_header(args, oid, ext_header.buf,
 				      ext_header.len);
 	}
 	strbuf_release(&ext_header);
@@ -317,7 +317,7 @@ static int write_tar_entry(struct archiver_args *args,
 		if (buffer)
 			write_blocked(buffer, size);
 		else
-			err = stream_blocked(sha1);
+			err = stream_blocked(oid);
 	}
 	free(buffer);
 	return err;
diff --git a/archive-zip.c b/archive-zip.c
index e8913e5a26..e2e5513c03 100644
--- a/archive-zip.c
+++ b/archive-zip.c
@@ -276,7 +276,7 @@ static int entry_is_binary(const char *path, const void *buffer, size_t size)
 #define STREAM_BUFFER_SIZE (1024 * 16)
 
 static int write_zip_entry(struct archiver_args *args,
-			   const unsigned char *sha1,
+			   const struct object_id *oid,
 			   const char *path, size_t pathlen,
 			   unsigned int mode)
 {
@@ -314,7 +314,7 @@ static int write_zip_entry(struct archiver_args *args,
 
 	if (pathlen > 0xffff) {
 		return error("path too long (%d chars, SHA1: %s): %s",
-				(int)pathlen, sha1_to_hex(sha1), path);
+				(int)pathlen, oid_to_hex(oid), path);
 	}
 
 	if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
@@ -325,7 +325,7 @@ static int write_zip_entry(struct archiver_args *args,
 		compressed_size = 0;
 		buffer = NULL;
 	} else if (S_ISREG(mode) || S_ISLNK(mode)) {
-		enum object_type type = sha1_object_info(sha1, &size);
+		enum object_type type = sha1_object_info(oid->hash, &size);
 
 		method = 0;
 		attr2 = S_ISLNK(mode) ? ((mode | 0777) << 16) :
@@ -337,18 +337,18 @@ static int write_zip_entry(struct archiver_args *args,
 
 		if (S_ISREG(mode) && type == OBJ_BLOB && !args->convert &&
 		    size > big_file_threshold) {
-			stream = open_istream(sha1, &type, &size, NULL);
+			stream = open_istream(oid->hash, &type, &size, NULL);
 			if (!stream)
 				return error("cannot stream blob %s",
-					     sha1_to_hex(sha1));
+					     oid_to_hex(oid));
 			flags |= ZIP_STREAM;
 			out = buffer = NULL;
 		} else {
-			buffer = sha1_file_to_archive(args, path, sha1, mode,
+			buffer = sha1_file_to_archive(args, path, oid->hash, mode,
 						      &type, &size);
 			if (!buffer)
 				return error("cannot read %s",
-					     sha1_to_hex(sha1));
+					     oid_to_hex(oid));
 			crc = crc32(crc, buffer, size);
 			is_binary = entry_is_binary(path_without_prefix,
 						    buffer, size);
@@ -357,7 +357,7 @@ static int write_zip_entry(struct archiver_args *args,
 		compressed_size = (method == 0) ? size : 0;
 	} else {
 		return error("unsupported file mode: 0%o (SHA1: %s)", mode,
-				sha1_to_hex(sha1));
+				oid_to_hex(oid));
 	}
 
 	if (creator_version > max_creator_version)
diff --git a/archive.c b/archive.c
index e664cdb624..4942b5632b 100644
--- a/archive.c
+++ b/archive.c
@@ -121,7 +121,7 @@ static int check_attr_export_subst(const struct attr_check *check)
 	return check && ATTR_TRUE(check->items[1].value);
 }
 
-static int write_archive_entry(const unsigned char *sha1, const char *base,
+static int write_archive_entry(const struct object_id *oid, const char *base,
 		int baselen, const char *filename, unsigned mode, int stage,
 		void *context)
 {
@@ -153,7 +153,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
 	if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
 		if (args->verbose)
 			fprintf(stderr, "%.*s\n", (int)path.len, path.buf);
-		err = write_entry(args, sha1, path.buf, path.len, mode);
+		err = write_entry(args, oid, path.buf, path.len, mode);
 		if (err)
 			return err;
 		return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
@@ -161,7 +161,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
 
 	if (args->verbose)
 		fprintf(stderr, "%.*s\n", (int)path.len, path.buf);
-	return write_entry(args, sha1, path.buf, path.len, mode);
+	return write_entry(args, oid, path.buf, path.len, mode);
 }
 
 static void queue_directory(const unsigned char *sha1,
@@ -191,7 +191,7 @@ static int write_directory(struct archiver_context *c)
 	d->path[d->len - 1] = '\0'; /* no trailing slash */
 	ret =
 		write_directory(c) ||
-		write_archive_entry(d->oid.hash, d->path, d->baselen,
+		write_archive_entry(&d->oid, d->path, d->baselen,
 				    d->path + d->baselen, d->mode,
 				    d->stage, c) != READ_TREE_RECURSIVE;
 	free(d);
@@ -231,7 +231,7 @@ static int queue_or_write_archive_entry(const struct object_id *oid,
 
 	if (write_directory(c))
 		return -1;
-	return write_archive_entry(oid->hash, base->buf, base->len, filename, mode,
+	return write_archive_entry(oid, base->buf, base->len, filename, mode,
 				   stage, context);
 }
 
@@ -250,7 +250,7 @@ int write_archive_entries(struct archiver_args *args,
 			len--;
 		if (args->verbose)
 			fprintf(stderr, "%.*s\n", (int)len, args->base);
-		err = write_entry(args, args->tree->object.oid.hash, args->base,
+		err = write_entry(args, &args->tree->object.oid, args->base,
 				  len, 040777);
 		if (err)
 			return err;
diff --git a/archive.h b/archive.h
index 62d1d82c1a..741991bfb6 100644
--- a/archive.h
+++ b/archive.h
@@ -31,7 +31,7 @@ extern void init_tar_archiver(void);
 extern void init_zip_archiver(void);
 
 typedef int (*write_archive_entry_fn_t)(struct archiver_args *args,
-					const unsigned char *sha1,
+					const struct object_id *oid,
 					const char *path, size_t pathlen,
 					unsigned int mode);
 

  parent reply index

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-12  2:27 [PATCH v3 00/36] object_id part 12 brian m. carlson
2018-03-12  2:27 ` [PATCH v3 01/36] bulk-checkin: convert index_bulk_checkin to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 02/36] builtin/write-tree: convert " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 03/36] cache-tree: convert write_*_as_tree to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 04/36] cache-tree: convert remnants to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 05/36] resolve-undo: convert struct resolve_undo_info to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 06/36] tree: convert read_tree_recursive to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 07/36] ref-filter: convert grab_objectname " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 08/36] strbuf: convert strbuf_add_unique_abbrev to use " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 09/36] wt-status: convert struct wt_status_state to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 10/36] Convert find_unique_abbrev* to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 11/36] http-walker: convert struct object_request to use " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 12/36] send-pack: convert remaining functions to " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 13/36] replace_object: convert struct replace_object to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 14/36] builtin/mktag: convert to struct object_id brian m. carlson
2018-03-12  2:27 ` brian m. carlson [this message]
2018-03-12  2:27 ` [PATCH v3 16/36] archive: convert sha1_file_to_archive " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 17/36] builtin/index-pack: convert struct ref_delta_entry to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 18/36] sha1_file: convert read_loose_object to use struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 19/36] sha1_file: convert check_sha1_signature to " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 20/36] streaming: convert open_istream to use " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 21/36] builtin/mktree: convert to " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 22/36] sha1_file: convert assert_sha1_type to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 23/36] sha1_file: convert retry_bad_packed_offset to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 24/36] packfile: convert unpack_entry " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 25/36] Convert remaining callers of sha1_object_info_extended to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 26/36] sha1_file: convert sha1_object_info* " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 27/36] builtin/fmt-merge-msg: convert remaining code " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 28/36] builtin/notes: convert static functions " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 29/36] tree-walk: convert get_tree_entry_follow_symlinks internals " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 30/36] streaming: convert istream internals to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 31/36] tree-walk: convert tree entry functions to object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 32/36] sha1_file: convert read_object_with_reference " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 33/36] sha1_file: convert read_sha1_file to struct object_id brian m. carlson
2018-03-12  2:27 ` [PATCH v3 34/36] Convert lookup_replace_object " brian m. carlson
2018-03-12  2:27 ` [PATCH v3 35/36] sha1_file: introduce a constant for max header length brian m. carlson
2018-03-12  2:27 ` [PATCH v3 36/36] convert: convert to struct object_id brian m. carlson
2018-03-14 16:48 ` [PATCH v3 00/36] object_id part 12 Junio C Hamano
2018-03-14 19:46   ` Junio C Hamano
2018-03-15  1:05   ` brian m. carlson
2018-03-14 17:31 ` Junio C Hamano
2018-03-15  0:53   ` brian m. carlson

Reply instructions:

You may reply publically 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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=20180312022756.483934-16-sandals@crustytoothpaste.net \
    --to=sandals@crustytoothpaste.net \
    --cc=git@vger.kernel.org \
    --cc=patryk.obara@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.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

git@vger.kernel.org mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox