shell/source/unix/misc/senddoc.sh   |   40 ++++++++++++++++++------------------
 shell/source/unix/misc/uri-encode.c |    4 +--
 2 files changed, 22 insertions(+), 22 deletions(-)

New commits:
commit cf4ab0e50087ae631b9f187b1b554da463474c27
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Mon Dec 16 15:18:26 2024 +0100
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Mon Dec 16 22:41:14 2024 +0100

    tdf#135628 Let uri-encode encode newlines
    
    ...and invoke it via `printf ... | uri-encode` rather than `echo ... |
    uri-encode`, to avoid passing spurious newlines to it (which appears to have
    been the reason for it not to encode newlines in the first place)
    
    Change-Id: I26131a19f69c04b0beca8e8bab72c1dbb65300c1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178596
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de>
    (cherry picked from commit 6d1cddea8e4e19287891ab8fb7e3774ae9976ea1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178600
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/shell/source/unix/misc/senddoc.sh 
b/shell/source/unix/misc/senddoc.sh
index d4bc20176b5b..15fa40d058a2 100755
--- a/shell/source/unix/misc/senddoc.sh
+++ b/shell/source/unix/misc/senddoc.sh
@@ -85,7 +85,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --attach)
-                    ATTACH=${ATTACH:-}${ATTACH:+,}$(echo "file://$2" | 
"${URI_ENCODE}")
+                    ATTACH=${ATTACH:-}${ATTACH:+,}$(printf file://%s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -145,7 +145,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --attach)
-                    ATTACH="${ATTACH:-}${ATTACH:+ }--attach "$(echo 
"file://$2" | "${URI_ENCODE}")
+                    ATTACH="${ATTACH:-}${ATTACH:+ }--attach "$(printf 
file://%s "$2" | "${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -228,23 +228,23 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --cc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --bcc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --subject)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --body)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --attach)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(echo "file://$2" 
| "${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(printf file://%s 
"$2" | "${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -270,23 +270,23 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --cc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --bcc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --subject)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --body)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(printf %a "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --attach)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(echo 
"file://$2" | "${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(printf 
file://%s "$2" | "${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -329,7 +329,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --attach)
-                    ATTACH=${ATTACH:-}${ATTACH:+,}$(echo "file://$2" | 
"${URI_ENCODE}")
+                    ATTACH=${ATTACH:-}${ATTACH:+,}$(printf file://%s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -347,7 +347,7 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
             case $1 in
                 --attach)
                     #i95688# fix filenames containing accented chars, whatever 
alien
-                    ATTACH="${ATTACH:-}${ATTACH:+ }"$(echo "file://$2" | 
"${URI_ENCODE}")
+                    ATTACH="${ATTACH:-}${ATTACH:+ }"$(printf file://%s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 *)
@@ -391,26 +391,26 @@ case $(basename "$MAILER" | sed 's/-.*$//') in
                     shift
                     ;;
                 --cc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}cc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --bcc)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}bcc="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --subject)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}subject"=$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --body)
-                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(echo "$2" | 
"${URI_ENCODE}")
+                    MAILTO="${MAILTO:-}${MAILTO:+&}body="$(printf %s "$2" | 
"${URI_ENCODE}")
                     shift
                     ;;
                 --attach)
                     if [ "$MAILER" = "/usr/bin/xdg-email" ]; then
-                        MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(echo 
"file://$2" | "${URI_ENCODE}")
+                        MAILTO="${MAILTO:-}${MAILTO:+&}attach="$(printf 
file://%s "$2" | "${URI_ENCODE}")
                     else
-                        MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(echo 
"file://$2" | "${URI_ENCODE}")
+                        MAILTO="${MAILTO:-}${MAILTO:+&}attachment="$(printf 
file://%s "$2" | "${URI_ENCODE}")
                     fi
                     shift
                     ;;
diff --git a/shell/source/unix/misc/uri-encode.c 
b/shell/source/unix/misc/uri-encode.c
index f7bca6ff6a2e..97c38e2568e2 100644
--- a/shell/source/unix/misc/uri-encode.c
+++ b/shell/source/unix/misc/uri-encode.c
@@ -30,8 +30,8 @@ int main(void) {
         c = getchar();
         if (c == EOF) {
             exit(errno == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
-        } else if (isalnum(c) || strchr("!$'()*+,-.:=@_~/
", c) != NULL) {
-            /* valid RFC 2396 pchar characters + '/' + newline */
+        } else if (isalnum(c) || strchr("!$'()*+,-.:=@_~/", c) != NULL) {
+            /* valid RFC 2396 pchar characters + '/' */
             if (putchar(c) == EOF) {
                 exit(EXIT_FAILURE);
             }

Reply via email to