libopkg: line-wrap descriptions only on interactive terminals
[oweals/opkg-lede.git] / libopkg / pkg_parse.c
index b54ad9aead061af2bc51c33a16dbe464f76c83fc..5337f349841b5c11a047af8c1babbec45d541cf9 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <stdio.h>
 #include <ctype.h>
+#include <unistd.h>
 
 #include "pkg.h"
 #include "opkg_utils.h"
@@ -239,10 +240,16 @@ pkg_parse_line(void *ptr, const char *line, uint mask)
 
        case ' ':
                if ((mask & PFM_DESCRIPTION) && reading_description) {
-                       pkg->description = xrealloc(pkg->description,
-                                               strlen(pkg->description)
-                                               + 1 + strlen(line) + 1);
-                       strcat(pkg->description, "\n");
+                       if (isatty(1)) {
+                               pkg->description = xrealloc(pkg->description,
+                                                       strlen(pkg->description)
+                                                       + 1 + strlen(line) + 1);
+                               strcat(pkg->description, "\n");
+                       } else {
+                               pkg->description = xrealloc(pkg->description,
+                                                       strlen(pkg->description)
+                                                       + 1 + strlen(line));
+                       }
                        strcat(pkg->description, (line));
                        goto dont_reset_flags;
                } else if ((mask & PFM_CONFFILES) && reading_conffiles) {