diff --git a/tools/file_operations.py b/tools/file_operations.py index d217d54a9a..0cf1105310 100644 --- a/tools/file_operations.py +++ b/tools/file_operations.py @@ -441,8 +441,8 @@ class ShellFileOperations(FileOperations): # Clamp limit limit = min(limit, MAX_LINES) - # Check if file exists and get metadata - stat_cmd = f"stat -c '%s' {self._escape_shell_arg(path)} 2>/dev/null" + # Check if file exists and get size (wc -c is POSIX, works on Linux + macOS) + stat_cmd = f"wc -c < {self._escape_shell_arg(path)} 2>/dev/null" stat_result = self._exec(stat_cmd) if stat_result.exit_code != 0: @@ -518,8 +518,8 @@ class ShellFileOperations(FileOperations): def _read_image(self, path: str) -> ReadResult: """Read an image file, returning base64 content.""" - # Get file size - stat_cmd = f"stat -c '%s' {self._escape_shell_arg(path)} 2>/dev/null" + # Get file size (wc -c is POSIX, works on Linux + macOS) + stat_cmd = f"wc -c < {self._escape_shell_arg(path)} 2>/dev/null" stat_result = self._exec(stat_cmd) try: file_size = int(stat_result.stdout.strip()) @@ -648,8 +648,8 @@ class ShellFileOperations(FileOperations): if write_result.exit_code != 0: return WriteResult(error=f"Failed to write file: {write_result.stdout}") - # Get bytes written - stat_cmd = f"stat -c '%s' {self._escape_shell_arg(path)} 2>/dev/null" + # Get bytes written (wc -c is POSIX, works on Linux + macOS) + stat_cmd = f"wc -c < {self._escape_shell_arg(path)} 2>/dev/null" stat_result = self._exec(stat_cmd) try: