variable decode = "pgp-verify --core --footer | mimedecode"; variable tmpdir = "$HOME/.tmpdir"; define pgpmimedecode () { variable art, f, fname, line, ctype; art = ""; ctype = ""; ctype = extract_article_header ("Content-Type"); if (is_substr(strlow(ctype), "multipart/signed")) { f = popen ("mktemp -q "+tmpdir+"/pgpmime.XXXXXX | tr -d '\n'", "r"); if (f == NULL) return; if (-1 == fgets (&fname, f)) return; pclose (f); f = popen (decode+" >"+fname, "w"); if (f == NULL) { message ("pgpmime: Unable to filter article to "+fname); return; } if (-1 == fputs (raw_article_as_string(), f)) { message ("pgpmime: Decode error"); return; } () = pclose (f); f = fopen (fname, "r"); if (f == NULL) { message ("pgpmime: "+fname+" could not be opened."); return; } while (-1 != fgets (&line, f)) { art = art + line; } fclose (f); if (0 != remove(fname)) message ("pgpmime: Unable to remove "+fname); replace_article (art); } } define register_pgpmimedecode () { if (1 == register_hook("read_article_hook", "pgpmimedecode")) { message ("PGP/MIME decoding activated"); } else { message ("PGP/MIME decoding NOT activated"); } } define unregister_pgpmimedecode () { if (1 == unregister_hook("read_article_hook", "pgpmimedecode")) { message ("PGP/MIME decoding deactivated"); } else { message ("PGP/MIME decoding NOT deactivated"); } } % enable by default register_hook("read_article_hook", "pgpmimedecode");