diff --git a/builtin-stripspace.c b/builtin-stripspace.c
index 1ce2847..c0b2130 100644
--- a/builtin-stripspace.c
+++ b/builtin-stripspace.c
@@ -8,17 +8,13 @@
  */
 static size_t cleanup(char *line, size_t len)
 {
-	if (len) {
-		if (line[len - 1] == '\n')
-			len--;
-
-		while (len) {
-			unsigned char c = line[len - 1];
-			if (!isspace(c))
-				break;
-			len--;
-		}
+	while (len) {
+		unsigned char c = line[len - 1];
+		if (!isspace(c))
+			break;
+		len--;
 	}
+
 	return len;
 }
 
@@ -34,42 +30,42 @@
  * If the input has only empty lines and spaces,
  * no output will be produced.
  *
- * If last line has a newline at the end, it will be removed.
+ * If last line does not have a newline at the end, one is added.
  *
  * Enable skip_comments to skip every line starting with "#".
  */
-size_t stripspace(char *buffer, size_t length, int skip_comments)
+void stripspace(struct strbuf *sb, int skip_comments)
 {
-	int empties = -1;
+	int empties = 0;
 	size_t i, j, len, newlen;
 	char *eol;
 
-	for (i = j = 0; i < length; i += len, j += newlen) {
-		eol = memchr(buffer + i, '\n', length - i);
-		len = eol ? eol - (buffer + i) + 1 : length - i;
+	/* We may have to add a newline. */
+	strbuf_grow(sb, 1);
 
-		if (skip_comments && len && buffer[i] == '#') {
+	for (i = j = 0; i < sb->len; i += len, j += newlen) {
+		eol = memchr(sb->buf + i, '\n', sb->len - i);
+		len = eol ? eol - (sb->buf + i) + 1 : sb->len - i;
+
+		if (skip_comments && len && sb->buf[i] == '#') {
 			newlen = 0;
 			continue;
 		}
-		newlen = cleanup(buffer + i, len);
+		newlen = cleanup(sb->buf + i, len);
 
 		/* Not just an empty line? */
 		if (newlen) {
-			if (empties != -1)
-				buffer[j++] = '\n';
-			if (empties > 0)
-				buffer[j++] = '\n';
+			if (empties > 0 && j > 0)
+				sb->buf[j++] = '\n';
 			empties = 0;
-			memmove(buffer + j, buffer + i, newlen);
-			continue;
+			memmove(sb->buf + j, sb->buf + i, newlen);
+			sb->buf[newlen + j++] = '\n';
+		} else {
+			empties++;
 		}
-		if (empties < 0)
-			continue;
-		empties++;
 	}
 
-	return j;
+	strbuf_setlen(sb, j);
 }
 
 int cmd_stripspace(int argc, const char **argv, const char *prefix)
@@ -85,9 +81,7 @@
 	if (strbuf_read(&buf, 0, 1024) < 0)
 		die("could not read the input");
 
-	strbuf_setlen(&buf, stripspace(buf.buf, buf.len, strip_comments));
-	if (buf.len)
-		strbuf_addch(&buf, '\n');
+	stripspace(&buf, strip_comments);
 
 	write_or_die(1, buf.buf, buf.len);
 	strbuf_release(&buf);
diff --git a/builtin-tag.c b/builtin-tag.c
index fcbf9bb..6132cac 100644
--- a/builtin-tag.c
+++ b/builtin-tag.c
@@ -291,14 +291,11 @@
 		free(path);
 	}
 
-	strbuf_setlen(buf, stripspace(buf->buf, buf->len, 1));
+	stripspace(buf, 1);
 
 	if (!message && !buf->len)
 		die("no tag message?");
 
-	/* insert the header and add the '\n' if needed: */
-	if (buf->len)
-		strbuf_addch(buf, '\n');
 	strbuf_insert(buf, 0, header_buf, header_len);
 
 	if (sign && do_sign(buf) < 0)
diff --git a/builtin.h b/builtin.h
index 03ee7bf..d6f2c76 100644
--- a/builtin.h
+++ b/builtin.h
@@ -7,7 +7,6 @@
 extern const char git_usage_string[];
 
 extern void help_unknown_cmd(const char *cmd);
-extern size_t stripspace(char *buffer, size_t length, int skip_comments);
 extern int write_tree(unsigned char *sha1, int missing_ok, const char *prefix);
 extern void prune_packed_objects(int);
 
diff --git a/strbuf.h b/strbuf.h
index d4d9e56..5657e3d 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -112,4 +112,6 @@
 
 extern int strbuf_getline(struct strbuf *, FILE *, int);
 
+extern void stripspace(struct strbuf *buf, int skip_comments);
+
 #endif /* STRBUF_H */
