* Sync up to flim-1_10_2 from flim-1_10_0.
[elisp/flim.git] / mel-g.el
index 1f50bd0..bc2c510 100644 (file)
--- a/mel-g.el
+++ b/mel-g.el
@@ -1,16 +1,15 @@
 ;;; mel-g.el: Gzip64 encoder/decoder for GNU Emacs
 
-;; Copyright (C) 1995,1996,1997 MORIOKA Tomohiko
-;; Copyright (C) 1996 Shuhei KOBAYASHI
+;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
+;; Copyright (C) 1996,1997 Shuhei KOBAYASHI
 
 ;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
 ;;     modified by MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
 ;; Created: 1995/10/25
-;; Version: $Id: mel-g.el,v 6.1 1997/03/10 13:06:34 morioka Exp $
 ;; Keywords: Gzip64, base64, gzip, MIME
 
-;; This file is not part of MEL (MIME Encoding Library) yet.
+;; This file is part of MEL (MIME Encoding Library).
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Commentary:
+
+;;; NOTE: Gzip64 is an experimental Content-Transfer-Encoding and its
+;;; use is STRONGLY DISCOURAGED except for private communication.
+
 ;;; Code:
 
 (require 'emu)
-(require 'file-detect)
+(require 'path-util)
 
 
 ;;; @ variables
                       )
     ))
 
-(defalias 'gzip64-encode-region 'gzip64-external-encode-region)
-(defalias 'gzip64-decode-region 'gzip64-external-decode-region)
+(mel-define-method-function (mime-encode-region start end (nil "x-gzip64"))
+                           'gzip64-external-encode-region)
+(mel-define-method-function (mime-decode-region start end (nil "x-gzip64"))
+                           'gzip64-external-decode-region)
+
+
+;;; @ encoder/decoder for string
+;;;
+
+(mel-define-method mime-encode-string (string (nil "x-gzip64"))
+  (with-temp-buffer
+    (insert string)
+    (gzip64-external-encode-region (point-min)(point-max))
+    (buffer-string)))
+
+(mel-define-method mime-decode-string (string (nil "x-gzip64"))
+  (with-temp-buffer
+    (insert string)
+    (gzip64-external-decode-region (point-min)(point-max))
+    (buffer-string)))
 
 
 ;;; @ encoder/decoder for file
 ;;;
 
-(defun gzip64-insert-encoded-file (filename)
+(mel-define-method mime-insert-encoded-file (filename (nil "x-gzip64"))
   (interactive (list (read-file-name "Insert encoded file: ")))
   (apply (function call-process) (car gzip64-external-encoder)
         filename t nil
         (cdr gzip64-external-encoder))
   )
 
+(mel-define-method mime-write-decoded-region (start end filename
+                                                   (nil "x-gzip64"))
+  "Decode and write current region encoded by gzip64 into FILENAME.
+START and END are buffer positions."
+  (interactive
+   (list (region-beginning) (region-end)
+        (read-file-name "Write decoded region to file: ")))
+  (as-binary-process
+   (apply (function call-process-region)
+         start end (car gzip64-external-decoder)
+         nil nil nil
+         (let ((args (cdr gzip64-external-decoder)))
+           (append (butlast args)
+                   (list (concat (car (last args)) ">" filename))))
+         )))
+
 
 ;;; @ end
 ;;;