From 0ef04ac2e042bf08c6abf7c557dc3b052a6f053f Mon Sep 17 00:00:00 2001
From: Philipp Stephani
Date: Thu, 27 Aug 2026 12:55:35 +0200
Subject: [PATCH] Remove unused function elisp/proto/write-stdout
---
elisp/proto/module.c | 59 --------------------------
tests/proto/integration/cat.el | 8 +---
tests/proto/integration/module_test.go | 24 +----------
3 files changed, 3 insertions(+), 88 deletions(-)
diff --git a/elisp/proto/module.c b/elisp/proto/module.c
index 30a3bcc46..eeda7c6f8 100644
--- a/elisp/proto/module.c
+++ b/elisp/proto/module.c
@@ -2945,10 +2945,6 @@ static HANDLE StdinHandle(struct Context ctx) {
return StandardHandle(ctx, STD_INPUT_HANDLE);
}
-static HANDLE StdoutHandle(struct Context ctx) {
- return StandardHandle(ctx, STD_OUTPUT_HANDLE);
-}
-
static upb_StringView ReadHandle(struct Context ctx, HANDLE handle,
char* buffer, size_t size) {
upb_StringView null = UPB_STRINGVIEW_INIT(NULL, 0);
@@ -2965,22 +2961,6 @@ static upb_StringView ReadHandle(struct Context ctx, HANDLE handle,
if (n == 0) return null;
return upb_StringView_FromDataAndSize(buffer, n);
}
-
-static bool WriteHandle(struct Context ctx, HANDLE handle,
- upb_StringView* data) {
- if (!Success(ctx)) return false;
- DWORD n;
- if (!WriteFile(handle, data->data,
- data->size <= MAXDWORD ? (DWORD)data->size : MAXDWORD, &n,
- NULL)) {
- assert(n == 0);
- FileError(ctx, GetLastError());
- return false;
- }
- data->data += n;
- data->size -= n;
- return true;
-}
#else
static void FileError(struct Context ctx, int code) {
emacs_value message = Nil(ctx);
@@ -3004,10 +2984,6 @@ static int StdinHandle(struct Context ctx ABSL_ATTRIBUTE_UNUSED) {
return STDIN_FILENO;
}
-static int StdoutHandle(struct Context ctx ABSL_ATTRIBUTE_UNUSED) {
- return STDOUT_FILENO;
-}
-
static upb_StringView ReadHandle(struct Context ctx, int fd, char* buffer,
size_t size) {
upb_StringView null = UPB_STRINGVIEW_INIT(NULL, 0);
@@ -3021,18 +2997,6 @@ static upb_StringView ReadHandle(struct Context ctx, int fd, char* buffer,
assert((size_t)n <= size);
return upb_StringView_FromDataAndSize(buffer, (size_t)n);
}
-
-static bool WriteHandle(struct Context ctx, int fd, upb_StringView* data) {
- if (!Success(ctx)) return false;
- ssize_t n = write(fd, data->data, data->size <= kMaxIO ? data->size : kMaxIO);
- if (n < 0) {
- FileError(ctx, errno);
- return false;
- }
- data->data += n;
- data->size -= (size_t)n;
- return true;
-}
#endif
/// Function definitions
@@ -4245,22 +4209,6 @@ static emacs_value InsertStdin(emacs_env* env,
return Nil(ctx);
}
-static emacs_value WriteStdout(emacs_env* env,
- ptrdiff_t nargs ABSL_ATTRIBUTE_UNUSED,
- emacs_value* args, void* data) {
- struct Context ctx = {env, data};
- assert(nargs == 1);
- struct Allocator alloc = HeapAllocator();
- FileHandle handle = StdoutHandle(ctx);
- if (!ValidHandle(handle)) return NULL;
- struct MutableString content = ExtractUnibyteString(ctx, alloc, args[0]);
- if (content.data == NULL) return NULL;
- upb_StringView left = View(content);
- while (left.size > 0 && WriteHandle(ctx, handle, &left));
- Free(alloc, content.data);
- return Nil(ctx);
-}
-
static emacs_value ParseCodeGeneratorRequest(
emacs_env* env, ptrdiff_t nargs ABSL_ATTRIBUTE_UNUSED, emacs_value* args,
void* data) {
@@ -4776,13 +4724,6 @@ int EXPORT emacs_module_init(struct emacs_runtime* rt) {
"This function is used by the protocol buffer compiler;\n"
"users should not call it directly.",
Params0(), kT, 0, InsertStdin);
- Defun(ctx, "elisp/proto/write-stdout", 1, 1,
- "Write STRING to standard output.\n"
- "STRING must be a unibyte string.\n"
- "This function is used by the protocol buffer compiler;\n"
- "users should not call it directly.\n\n"
- "(fn string)",
- Params1(kString), kT, 0, WriteStdout);
Defun(ctx, "elisp/proto/parse-code-generator-request", 1, 1,
"Parse a protocol buffer code generator request.\n"
"SERIALIZED must be the serialized form of a\n"
diff --git a/tests/proto/integration/cat.el b/tests/proto/integration/cat.el
index 3b96f4678..592f18220 100644
--- a/tests/proto/integration/cat.el
+++ b/tests/proto/integration/cat.el
@@ -1,6 +1,6 @@
;;; cat.el --- helper binary for module test -*- lexical-binding: t; -*-
-;; Copyright 2024, 2025 Philipp Stephani
+;; Copyright 2024-2026 Philipp Stephani
;;
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
@@ -40,10 +40,6 @@
(pcase-exhaustive op
(">"
(with-temp-file file
- (elisp/proto/insert-stdin)))
- ("<"
- (insert-file-contents-literally file)
- (elisp/proto/write-stdout
- (buffer-substring-no-properties (point-min) (point-max))))))))
+ (elisp/proto/insert-stdin)))))))
;;; cat.el ends here
diff --git a/tests/proto/integration/module_test.go b/tests/proto/integration/module_test.go
index ce0eaa63d..716f98156 100644
--- a/tests/proto/integration/module_test.go
+++ b/tests/proto/integration/module_test.go
@@ -1,4 +1,4 @@
-// Copyright 2024, 2025 Philipp Stephani
+// Copyright 2024-2026 Philipp Stephani
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -57,25 +57,3 @@ func TestInsertStdin(t *testing.T) {
t.Errorf("unexpected file content: %q", got)
}
}
-
-// Integration test for elisp/proto/write-stdout.
-func TestWriteStdout(t *testing.T) {
- infile := filepath.Join(t.TempDir(), "in")
- if err := os.WriteFile(infile, []byte("stdout \xFF"), 0400); err != nil {
- t.Error(err)
- }
- cmd := exec.Command(*cat, "<", infile)
- stdout := new(strings.Builder)
- stderr := new(bytes.Buffer)
- cmd.Stdout = stdout
- cmd.Stderr = stderr
- if err := cmd.Run(); err != nil {
- t.Error(err)
- }
- if got := stdout.String(); got != "stdout \xFF" {
- t.Errorf("unexpected stdout: %q", got)
- }
- if stderr.Len() != 0 {
- t.Errorf("unexpected stderr: %q", stderr.Bytes())
- }
-}