Author: glen
Date: Sat Oct 11 19:13:34 2008
New Revision: 9902

Modified:
   nagios-notify/trunk/nagios-notify
Log:
- implement $(urlencode:data)

Modified: nagios-notify/trunk/nagios-notify
==============================================================================
--- nagios-notify/trunk/nagios-notify   (original)
+++ nagios-notify/trunk/nagios-notify   Sat Oct 11 19:13:34 2008
@@ -53,6 +53,29 @@
                return "=?" charset "?b?" base64_string(data) "?="
        }
 
+       # urlencode
+       function urlencode(data) {
+               split("1 2 3 4 5 6 7 8 9 a b c d e f", hextab, " ")
+               hextab[0] = 0
+               for (i = 1; i <= 255; i++) {
+                       ord[sprintf("%c", i) ""] = i + 0
+               }
+
+               n = length(data)
+               res = ""
+               for (i = 1; i <= n; i++) {
+                       c = substr(data, i, 1);
+                       if (!match(c, /[A-Za-z0-9._-]/)) {
+                               lo = ord[c] % 16
+                               hi = int(ord[c] / 16);
+                               c = "%" hextab[hi] hextab[lo]
+                       }
+                       res = res c
+               }
+
+               return res
+       }
+
        {
                # replace environ variables
                for (var in ENVIRON) {
@@ -82,6 +105,14 @@
                        data = substr(params, index(params, ",") + 1)
                        $0 = left encode_mime_header(charset, data) right;
                }
+               # $(urlencode:data)
+               if (match($0, /\$\(urlencode:(.*)\)/)) {
+                       pos = length("$(urlencode:")
+                       data = substr($0, RSTART + pos, RLENGTH - pos - 1);
+                       left = substr($0, 0, RSTART);
+                       right = substr($0, RSTART + RLENGTH);
+                       $0 = left urlencode(data) right;
+               }
 
                # print out
                print
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to