procmail
[Top] [All Lists]

Re: [SOLVED] Re: How to let procmail use mre memory?

2010-02-01 14:18:12
On Mon, 2010-02-01 at 00:33 +0100, Michelle Konzack wrote:
Hello *,

Now it is solved using following script:

----[ '~/.tdtools-procmail/BUSINESS_firms_maxim' ]----------------------
<snip>
  :0
  * ^From:.*Application Notes
  {
    # Eliminate any encodings
    TMPVAR1=`mimedecode |grep --max-count=1 "^URL: " |sed 's|^URL: ||' ; :`

    # Get the number of the AppNote
    TMPVAR2=`echo "${TMPVAR1}" |sed 's|.*an_pk/||' |tr -d ' ' ; :`

    # Download the AppNote
    TMPVAR3=`wget --user-agent="tdtools-procmail v${TDTP_VERSION}" --quiet -O 
- ${TMPVAR1} ; :`
    :0
    * ? test -n "${TMPVAR3}"
    {
      # Get the link to the PDF
      TMPVAR4=`echo -e "${TMPVAR3}" |grep 'pdfserv' |head -n1 |sed 
's|.*http://pdfserv|http://pdfserv|' |sed 's|\.pdf.*|.pdf|' ; :`

      :0fw
      | ( formail -i "Subject: [${TMPVAR2}] ${MSG_SUBJECT}" ; \
          echo 
"========================================================================${NL}"
 ; \
          echo "PDF URL: ${TMPVAR4}${NL}" ; \
          echo 
"========================================================================${NL}"
 ; \
          echo "####_BEGIN_HTML_2_####" ; \
          echo "####_BEGIN_HTML_H_####" ; \
          echo "####_BEGIN_HTML_1_####" ; \
          echo "${TMPVAR3}" ;  \
          echo "####_END_HTML_1_####" ; \
          echo "####_END_HTML_2_####" )

      TMPVAR3=""

      :0fw
      * B ?? APPLICATION NOTE&nbsp;
      | sed '/####_BEGIN_HTML_1_####/,/APPLICATION NOTE&nbsp/d' |sed 
's|.*APPLICATION 
NOTE&nbsp;|<html><head></head><body><table><tr><td>APPLICATION NOTE |'
      :0fw
      * B ?? ! \<html\>
      | sed 
's|####_BEGIN_HTML_H_####|<html><head></head><body><table><tr><td>APPLICATION 
NOTE |'

      :0fw
      * B ?? REFERENCE DESIGN&nbsp;
      | sed '/####_BEGIN_HTML_1_####/,/REFERENCE DESIGN&nbsp/d' |sed 
's|.*REFERENCE 
DESIGN&nbsp;|<html><head></head><body><table><tr><td>APPLICATION NOTE |'
      :0fw
      * B ?? ! \<html\>
      | sed 
's|####_BEGIN_HTML_H_####|<html><head></head><body><table><tr><td>REFERENCE 
DESIGN |'

      # Eleminate the unused FOOTER
      :0fw
      * B ?? \<\!\-\-\ BEGIN:\ EE\-MAIL\ \-\->
      | sed '/<\!\-\- BEGIN:\ EE\-MAIL \-\->/,/####_END_HTML_1_####/d'

      # Attach a footer if there is no one
      :0fw
      * B ?? ! \</html\>
      | sed  -e 
"s|####_END_HTML_2_####|\n</table></body></html>\n####_END_HTML_2_####|"

      TMPVAR9=`sed '/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/!d' |grep 
-v 'HTML_2_####' |html2text -width 72 -nobs -style pretty |sed '$!N; 
/^\(.*\)\n\1$/!P; D' ; :`

      :0fw
      * ? test -n "${TMPVAR9}"
      | ( sed "/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/d" ; \
          echo "${TMPVAR9}" )
    }
    :0
    .Business.USA.Maxim.App_Notes/
  }
<snip>
------------------------------------------------------------------------

It is tested on my own Mail-Server and the Backup

Thanks, Greetings and nice Day/Evening
    Michelle Konzack
    Systemadministrator
    Electronic Engineer
    Tamay Dogan Network
    Debian GNU/Linux Consultant


I'd like to make some suggestions ...
If I made any mistakes with this, I'll be happy to make corrections accordingly.
Basically, here is a rewrite of what you have above, side-stepping the memory 
issue altogether by never using TEMPVAR3 in the first place.
I'll be very pleased if I can be more helpful.

Note that the retrieved page is emulated emulated as TMPVAR3.html, and 
containing what you e-mailed me and also stuffed to make it 205 kB

john(_at_)system76-pc:~/kon$ ls -l
-rw-r--r-- 1 john john   2504 2010-02-01 14:05 kon.rc
-rw-r--r-- 1 john john  78055 2010-01-31 09:09 
Re:_How_to_let_procmail_use_mre_memory?
-rw-r--r-- 1 john john 205232 2010-02-01 12:32 TMPVAR3.html

john(_at_)system76-pc:~/kon$ cat kon.rc
VERBOSE=yes
SHELL='/bin/sh'
NL='
'
LINEBUF=123456

MSG_SUBJECT="< message subject >"

:0
#* ^From:.*Application Notes
{
   TMPVAR1=`mimedecode | sed -ne '/^URL: /{s|^URL: ||;p;q}'`
   TMPVAR2=`echo "${TMPVAR1}" |sed 's|.*an_pk/||;s| ||g'` # <- spaces ??? in 
tmpvar1 => won't they mess up the wget ???

   :0 ifb
   * TMPVAR1 ?? http
   #| wget --user-agent="tdtools-procmail v${TDTP_VERSION}" --quiet -O - 
${TMPVAR1} ; :
   | cat TMPVAR3.html

   :0
   * 1^1 > 1
   {
      SIZE=$=
      TMPVAR4=`grep 'pdfserv' |head -n1 |sed -ne 
'/pdfserv/{s|.*http://pdfserv|http://pdfserv|;s|\.pdf.*|.pdf|;p;q}' ; :`

      :0 fhw
      | formail -i "Subject: [${TMPVAR2}] ${MSG_SUBJECT}" 

      :0 ifbw
      | echo 
"========================================================================${NL}" 
; \
        echo "PDF URL: ${TMPVAR4}${NL}" ; \
        echo 
"========================================================================${NL}" 
; \
        echo "####_BEGIN_HTML_2_####" ; \
        echo "####_BEGIN_HTML_H_####" ; \
        echo "####_BEGIN_HTML_1_####" ; \
        cat - ;  \
        echo "####_END_HTML_1_####" ; \
        echo "####_END_HTML_2_####"

#      TMPVAR3=""

# unchanged from here on ...
      :0fw
      * B ?? APPLICATION NOTE&nbsp;
      | sed '/####_BEGIN_HTML_1_####/,/APPLICATION NOTE&nbsp/d' |sed 
's|.*APPLICATION NOTE&nbsp;|<html><head></head><body><table><tr><td>APPLICATION 
NOTE |'
      :0fw
      * B ?? ! \<html\>
      | sed 
's|####_BEGIN_HTML_H_####|<html><head></head><body><table><tr><td>APPLICATION 
NOTE |'
      :0fw
      * B ?? REFERENCE DESIGN&nbsp;
      | sed '/####_BEGIN_HTML_1_####/,/REFERENCE DESIGN&nbsp/d' |sed 
's|.*REFERENCE DESIGN&nbsp;|<html><head></head><body><table><tr><td>APPLICATION 
NOTE |'
      :0fw
      * B ?? ! \<html\>
      | sed 
's|####_BEGIN_HTML_H_####|<html><head></head><body><table><tr><td>REFERENCE 
DESIGN |'
      :0fw
      * B ?? \<\!\-\-\ BEGIN:\ EE\-MAIL\ \-\->
      | sed '/<\!\-\- BEGIN:\ EE\-MAIL \-\->/,/####_END_HTML_1_####/d'
      :0fw
      * B ?? ! \</html\>
      | sed  -e 
"s|####_END_HTML_2_####|\n</table></body></html>\n####_END_HTML_2_####|"
      TMPVAR9=`sed '/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/!d' |grep -v 
'HTML_2_####' |html2text -width 72 -nobs -style pretty |sed '$!N; 
/^\(.*\)\n\1$/!P; D' ; :`
      :0fw
      * ? test -n "${TMPVAR9}"
      | ( sed "/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/d" ; \
          echo "${TMPVAR9}" )
   }

   :0
   #.Business.USA.Maxim.App_Notes/
   output.txt
}

john(_at_)system76-pc:~/kon$ echo "URL: 
http://www.example.com/example-an_pk/178"; | procmail -m kon.rc 
procmail: [25470] Mon Feb  1 14:06:02 2010
procmail: Assigning "SHELL=/bin/sh"
procmail: Assigning "NL=
"
procmail: Assigning "LINEBUF=123456"
procmail: Assigning "MSG_SUBJECT=< message subject >"
procmail: Executing "mimedecode | sed -ne '/^URL: /{s|^URL: ||;p;q}'"
procmail: Assigning "TMPVAR1=http://www.example.com/example-an_pk/178";
procmail: Executing "echo "${TMPVAR1}" |sed 's|.*an_pk/||;s| ||g'"
procmail: Assigning "TMPVAR2=178"
procmail: Match on "http"
procmail: Executing "cat,TMPVAR3.html"
procmail: Score:  205278  205278 "> 1"
procmail: Assigning "SIZE=205278"
procmail: Executing "grep 'pdfserv' |head -n1 |sed -ne 
'/pdfserv/{s|.*http://pdfserv|http://pdfserv|;s|\.pdf.*|.pdf|;p;q}' ; :"
procmail: Assigning "TMPVAR4=http://pdfserv.maxim-ic.com/en/an/AN178.pdf";
procmail: Executing " formail -i "Subject: [${TMPVAR2}] ${MSG_SUBJECT}" "
procmail: Executing " echo 
"========================================================================${NL}" 
; \
        echo "PDF URL: ${TMPVAR4}${NL}" ; \
        echo 
"========================================================================${NL}" 
; \
        echo "####_BEGIN_HTML_2_####" ; \
        echo "####_BEGIN_HTML_H_####" ; \
        echo "####_BEGIN_HTML_1_####" ; \
        cat - ;  \
        echo "####_END_HTML_1_####" ; \
        echo "####_END_HTML_2_####""
procmail: No match on "APPLICATION NOTE&nbsp;"
procmail: No match on ! "\<html\>"
procmail: No match on "REFERENCE DESIGN&nbsp;"
procmail: No match on ! "\<html\>"
procmail: Match on "\<\!\-\-\ BEGIN:\ EE\-MAIL\ \-\->"
procmail: Executing " sed '/<\!\-\- BEGIN:\ EE\-MAIL 
\-\->/,/####_END_HTML_1_####/d'"
procmail: Match on ! "\</html\>"
procmail: Executing " sed  -e 
"s|####_END_HTML_2_####|\n</table></body></html>\n####_END_HTML_2_####|""
procmail: Executing "sed '/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/!d' 
|grep -v 'HTML_2_####' |html2text -width 72 -nobs -style pretty |sed '$!N; 
/^\(.*\)\n\1$/!P; D' ; :"
procmail: Assigning "TMPVAR9=####_BEGIN_HTML_H_#### ####_BEGIN_HTML_1_####

APPLICATION NOTE 178
<clipped>
                                 ... Full_Data_Sheet     Free_Samples
                                     (PDF, 456kB)

------------------------------------------------------------------------"
procmail: [25470] Mon Feb  1 14:06:03 2010
procmail: Executing " test -n "${TMPVAR9}""
procmail: [25470] Mon Feb  1 14:06:03 2010
procmail: Match on " test -n "${TMPVAR9}""
procmail: Executing " ( sed "/####_BEGIN_HTML_2_####/,/####_END_HTML_2_####/d" 
; \
          echo "${TMPVAR9}" )"
procmail: Assigning "LASTFOLDER=output.txt"
procmail: Opening "output.txt"
procmail: Acquiring kernel-lock
From foo(_at_)bar  Mon Feb  1 14:06:02 2010
 Subject: [178] < message subject >
  Folder: output.txt                                                      43704



-- 
JW Simpson <john(_at_)swajime(_dot_)com>
SwaJime's Cove℠

____________________________________________________________
procmail mailing list   Procmail homepage: http://www.procmail.org/
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)de
http://mailman.rwth-aachen.de/mailman/listinfo/procmail

<Prev in Thread] Current Thread [Next in Thread>