rfc2047-encode.awk.in
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #! @AWK@ -f
  2. #      $Id: rfc2047-encode.awk.in,v 1.4 2007/08/23 04:14:32 faxguy Exp $
  3. #
  4. # HylaFAX Facsimile Software
  5. #
  6. # Copyright 2006 Patrice Fournier
  7. # Copyright 2006 iFAX Solutions Inc.
  8. #
  9. # Permission to use, copy, modify, distribute, and sell this software and 
  10. # its documentation for any purpose is hereby granted without fee, provided
  11. # that (i) the above copyright notices and this permission notice appear in
  12. # all copies of the software and related documentation, and (ii) the names of
  13. # Sam Leffler and Silicon Graphics may not be used in any advertising or
  14. # publicity relating to the software without the specific, prior written
  15. # permission of Sam Leffler and Silicon Graphics.
  16. # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  17. # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  18. # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  19. # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20. # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21. # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22. # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23. # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24. # OF THIS SOFTWARE.
  25. #
  26. BEGIN {
  27.   for (i = 0; i < 256; i++) {
  28.     c = sprintf("%c", i);
  29.     if ((i >= 48 && i <= 57) || (i >= 65 && i <= 90) || (i >= 97 && i <= 122))
  30.       qp[c] = c;
  31.     else
  32.       qp[c] = sprintf("=%02X", i);
  33.   }
  34. }
  35. {
  36.   l=1;
  37.   len = length();
  38.   while (l <= len) {
  39.     printf("=?" charset "?Q?");
  40.     pos = 5 + length(charset);
  41.     for (; pos < 70 && l <= len; l++) {
  42.       printf(qp[substr($0, l, 1)]);
  43.       pos += length(qp[substr($0, l, 1)]);
  44.     }
  45.     printf("?=");
  46.     if (l < len) {
  47.       print("");
  48.       printf(" ");
  49.     }
  50.   }
  51. }