Quellcode durchsuchen

ls: Remove extra spaces after filenames when piping

Fixes #5671
Jagger De Leo vor 4 Jahren
Ursprung
Commit
cebd3f740b
1 geänderte Dateien mit 9 neuen und 3 gelöschten Zeilen
  1. 9 3
      Userland/Utilities/ls.cpp

+ 9 - 3
Userland/Utilities/ls.cpp

@@ -75,6 +75,8 @@ static bool output_is_terminal = false;
 static HashMap<uid_t, String> users;
 static HashMap<uid_t, String> users;
 static HashMap<gid_t, String> groups;
 static HashMap<gid_t, String> groups;
 
 
+static bool is_a_tty = false;
+
 int main(int argc, char** argv)
 int main(int argc, char** argv)
 {
 {
     if (pledge("stdio rpath tty", nullptr) < 0) {
     if (pledge("stdio rpath tty", nullptr) < 0) {
@@ -89,7 +91,9 @@ int main(int argc, char** argv)
         terminal_columns = ws.ws_col;
         terminal_columns = ws.ws_col;
         output_is_terminal = true;
         output_is_terminal = true;
     }
     }
-    if (!isatty(STDOUT_FILENO)) {
+
+    is_a_tty = isatty(STDOUT_FILENO);
+    if (!is_a_tty) {
         flag_disable_hyperlinks = true;
         flag_disable_hyperlinks = true;
     } else {
     } else {
         flag_colorize = true;
         flag_colorize = true;
@@ -483,8 +487,10 @@ static bool print_names(const char* path, size_t longest_name, const Vector<Stri
         size_t column_width = longest_name + max(offset, 2);
         size_t column_width = longest_name + max(offset, 2);
         printed_on_row += column_width;
         printed_on_row += column_width;
 
 
-        for (size_t j = nprinted; i != (names.size() - 1) && j < column_width; ++j)
-            printf(" ");
+        if (is_a_tty) {
+            for (size_t j = nprinted; i != (names.size() - 1) && j < column_width; ++j)
+                printf(" ");
+        }
         if ((printed_on_row + column_width) >= terminal_columns) {
         if ((printed_on_row + column_width) >= terminal_columns) {
             printf("\n");
             printf("\n");
             printed_on_row = 0;
             printed_on_row = 0;