quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Quilt-dev] [PATCH] quilt/mail: remove procmail dependency


From: Martin Quinson
Subject: Re: [Quilt-dev] [PATCH] quilt/mail: remove procmail dependency
Date: Tue, 27 Jan 2015 08:40:01 +0100
User-agent: Mutt/1.5.23 (2014-03-12)

Hello,

I've read the patch, and it seems ok to me. Many thanks for that.

Bye, Mt.

On Mon, Jan 26, 2015 at 06:01:09PM -0600, Kent R. Spillner wrote:
> quilt depends on procmail because 'quilt mail' requires formail.
> However, formail is only used to extract header values from messages.
> Since quilt already requires sed we can replace formail -x uses with
> sed instead.  The sed script is slightly complicated because it
> needs to handle the case of "Long Header Fields" definied in RFC
> 2822, but essentially all it's doing is: look for the first line
> beginning with the name of header we are looking for, and print
> every line until one that does not start with blanks.
> 
> Signed-off-by: Kent R. Spillner <address@hidden>
> ---
>  po/de.po      |  4 ----
>  po/fr.po      |  6 ------
>  po/ja.po      |  4 ----
>  po/quilt.pot  |  4 ----
>  po/ru.po      |  4 ----
>  quilt/mail.in | 33 +++++++++++++++++++++------------
>  6 files changed, 21 insertions(+), 34 deletions(-)
> 
> diff --git a/po/de.po b/po/de.po
> index e8d32c8..923074d 100644
> --- a/po/de.po
> +++ b/po/de.po
> @@ -834,10 +834,6 @@ msgstr ""
>  msgid "Introduction message already specified"
>  msgstr "Einleitung gespeichert als %s\\n"
>  
> -#: quilt/mail.in:262
> -msgid "You have to install 'formail' to use 'quilt mail'"
> -msgstr ""
> -
>  #: quilt/mail.in:305
>  msgid "Could not determine the envelope sender address. Please use --sender."
>  msgstr ""
> diff --git a/po/fr.po b/po/fr.po
> index ca85579..72dc867 100644
> --- a/po/fr.po
> +++ b/po/fr.po
> @@ -846,12 +846,6 @@ msgstr ""
>  msgid "Introduction message already specified"
>  msgstr "Message d'introduction déjà spécifié"
>  
> -#: quilt/mail.in:262
> -msgid "You have to install 'formail' to use 'quilt mail'"
> -msgstr ""
> -"Vous devez installer le programme «formail» afin d'utiliser la commande "
> -"«quilt mail»"
> -
>  #: quilt/mail.in:305
>  msgid "Could not determine the envelope sender address. Please use --sender."
>  msgstr "Impossible de déterminer l'adresse d'expéditeur. Utilisez --sender."
> diff --git a/po/ja.po b/po/ja.po
> index 8e3dadd..f04c22d 100644
> --- a/po/ja.po
> +++ b/po/ja.po
> @@ -818,10 +818,6 @@ msgstr ""
>  msgid "Introduction message already specified"
>  msgstr "序文は %s という名前で保存されました\\n"
>  
> -#: quilt/mail.in:262
> -msgid "You have to install 'formail' to use 'quilt mail'"
> -msgstr ""
> -
>  #: quilt/mail.in:305
>  msgid "Could not determine the envelope sender address. Please use --sender."
>  msgstr ""
> diff --git a/po/quilt.pot b/po/quilt.pot
> index b1d2889..44d95c0 100644
> --- a/po/quilt.pot
> +++ b/po/quilt.pot
> @@ -544,10 +544,6 @@ msgstr ""
>  msgid "Introduction message already specified"
>  msgstr ""
>  
> -#: quilt/mail.in:262
> -msgid "You have to install 'formail' to use 'quilt mail'"
> -msgstr ""
> -
>  #: quilt/mail.in:305
>  msgid "Could not determine the envelope sender address. Please use --sender."
>  msgstr ""
> diff --git a/po/ru.po b/po/ru.po
> index 6e91e3a..fdec6f3 100644
> --- a/po/ru.po
> +++ b/po/ru.po
> @@ -762,10 +762,6 @@ msgstr ""
>  msgid "Introduction message already specified"
>  msgstr ""
>  
> -#: quilt/mail.in:262
> -msgid "You have to install 'formail' to use 'quilt mail'"
> -msgstr ""
> -
>  #: quilt/mail.in:305
>  msgid "Could not determine the envelope sender address. Please use --sender."
>  msgstr ""
> diff --git a/quilt/mail.in b/quilt/mail.in
> index 5e519f9..ba48851 100644
> --- a/quilt/mail.in
> +++ b/quilt/mail.in
> @@ -81,6 +81,18 @@ msgid()
>       echo "address@hidden@}"
>  }
>  
> +# Extract RFC 2822 compliant header values, including Long Header Fields,
> +# from messages
> +
> +extract_header_value()
> +{
> +      local header=$1
> +
> +      # Long Header Fields may span multiple lines, in which case CRLF
> +      # is followed by space or tab (RFC 2822)
> +      sed -n "/^${header}/,/^[^[:blank:]]/ { /^${header}/ { p; n; }; 
> /^[^[:blank:]]/q; /^$/q; p; }" | sed "s/^${header}//"
> +}
> +
>  # See RFC 2822 Internet Message Format for how the In-Reply-To and
>  # References headers are generated...
>  
> @@ -88,7 +100,7 @@ in_reply_to_header()
>  {
>       local message=$1 message_id
>  
> -     message_id=$(formail -x Message-ID: < "$message")
> +     message_id=$(extract_header_value Message-ID: < "$message")
>       message_id=${message_id# }
>       [ -n "$message_id" ] && echo "In-Reply-To: $message_id"
>  }
> @@ -97,14 +109,14 @@ references_header()
>  {
>       local message=$1 message_id references in_reply_to
>  
> -     message_id=$(formail -x Message-ID: < "$message")
> +     message_id=$(extract_header_value Message-ID: < "$message")
>       message_id=${message_id# }
>  
> -     references=$(formail -x References: < "$message")
> +     references=$(extract_header_value References: < "$message")
>       references=${references# }
>       if [ -z "$references" ]
>       then
> -             in_reply_to=$(formail -x In-Reply-To: < "$message")
> +             in_reply_to=$(extract_header_value In-Reply-To: < "$message")
>               in_reply_to=${in_reply_to# }
>               if [ -n "$in_reply_to" ]
>               then
> @@ -256,9 +268,6 @@ then
>       usage
>  fi
>  
> -# check if formail is installed before doing anything
> -check_external_tool formail procmail
> -
>  if [ $# -ge 1 ]
>  then
>       if [ "$1" = - ]
> @@ -329,7 +338,7 @@ then
>               local -a mh
>  
>               # Does this patch have a Subject: line?
> -             subject=$(formail -x Subject: < $tmpdir/header)
> +             subject=$(extract_header_value Subject: < $tmpdir/header)
>               if [ -n "$subject" ]
>               then
>                       awk '
> @@ -439,7 +448,7 @@ do
>       | quilt_mail_patch_filter "$patch" > "$tmpdir/$patch"
>       status=${PIPESTATUS[1]}
>  
> -     subject=$(formail -x Replace-Subject: < "$tmpdir/$patch" | join_lines)
> +     subject=$(extract_header_value Replace-Subject: < "$tmpdir/$patch" | 
> join_lines)
>       if [ $status -ne 0 -o -z "$subject" ]
>       then
>               printf \
> @@ -482,7 +491,7 @@ then
>  
>       if [ -z "$opt_subject" ]
>       then
> -             opt_subject="Re: $(formail -x Subject: < "$opt_reply_to" \
> +             opt_subject="Re: $(extract_header_value Subject: < 
> "$opt_reply_to" \
>                             | sed -e 's/^ *\([rR][eE]: *\)*//')"
>       fi
>  fi
> @@ -531,7 +540,7 @@ then
>       fi
>  fi
>  
> -subject=$(formail -x Subject: < $introduction | join_lines)
> +subject=$(extract_header_value Subject: < $introduction | join_lines)
>  if [ -z "$subject" ]
>  then
>       if [ -z "$opt_message" ]
> @@ -550,7 +559,7 @@ then
>       exec 1> $opt_mbox
>  fi
>  
> -subject_prefix=$(formail -x Subject-Prefix: < $introduction | join_lines)
> +subject_prefix=$(extract_header_value Subject-Prefix: < $introduction | 
> join_lines)
>  [ -n "$subject_prefix" ] && subject_prefix="$subject_prefix "
>  
>  subject_prefix=${subject_prefix//\'/\'\'}
> -- 
> 2.2.1
> 
> 
> _______________________________________________
> Quilt-dev mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/quilt-dev

-- 
Il n'est pas nécessaire d'espérer pour entreprendre, ni de réussir
pour perséverer.   --  Guillaume d'Orange-Nassau.

Attachment: signature.asc
Description: Digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]