Mercurial > emacs
view lisp/net/tramp-uu.el @ 68199:5012e59a73c7
* mh-comp.el (mh-pgp-support-flag): Move here from mh-utils.el; needed
to help remove dependency on mh-utils.
* mh-exec.el: New file. Move process support routines here from
mh-utils.el.
* mh-init.el (mh-utils): Remove require.
(mh-exec): Add require.
(mh-profile-component, mh-profile-component-value): Move here from
mh-utils.el.
* mh-utils.el (mh-pgp-support-flag): Move to mh-comp.el to reduce
dependencies on mh-utils.el.
(mh-profile-component, mh-profile-component-value): Move to mh-init.el
since that's the only place that uses them. (Other than mh-alias.el;
I'm thinking that mh-find-path can set variable from the Aliasfile
component like it does the other components).
(mh-index-max-cmdline-args, mh-xargs, mh-quote-for-shell)
(mh-exec-cmd, mh-exec-cmd-error, mh-exec-cmd-daemon)
(mh-exec-cmd-env-daemon, mh-process-daemon, mh-exec-cmd-quiet)
(defvar, mh-exec-cmd-output)
(mh-exchange-point-and-mark-preserving-active-mark)
(mh-exec-lib-cmd-output, mh-handle-process-error): Move to new file
mh-exec.el so that mh-init.el doesn't have to depend on mh-utils.el,
breaking circular dependency.
* mh-alias.el: mh-customize.el: mh-e.el: mh-funcs.el: mh-gnus.el:
* mh-identity.el: mh-inc.el: mh-junk.el: mh-mime.el: mh-print.el:
* mh-search.el: mh-seq.el: mh-speed.el: Added debugging statements
(commented out) around requires to help find dependency loops. Will
remove them when issues are resolved.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Sun, 15 Jan 2006 08:17:56 +0000 |
parents | 060177e931f8 |
children | 067115a6e738 2d92f5c9d6ae |
line wrap: on
line source
;;; -*- coding: iso-2022-7bit; -*- ;;; tramp-uu.el --- uuencode in Lisp ;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> ;; Keywords: comm, terminals ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;; Commentary: ;; An implementation of "uuencode" in Lisp. Uses the function ;; base64-encode-region which is built-in to modern Emacsen. ;;; Code: (defvar tramp-uu-b64-alphabet "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" "Mapping from base64-encoded character to the byte it represents.") (defvar tramp-uu-b64-char-to-byte (let ((i 0)) (mapcar (lambda (c) (prog1 (cons c i) (setq i (1+ i)))) tramp-uu-b64-alphabet)) "Alist of mapping from base64 character to its byte.") (defun tramp-uu-byte-to-uu-char (byte) "Return the character encoding BYTE." (if (zerop byte) ?` (+ byte 32))) (defun tramp-uu-b64-char-to-byte (char) "Return the byte that is encoded as CHAR." (cdr (assq char tramp-uu-b64-char-to-byte))) (defun tramp-uuencode-region (beg end) "UU-encode the region between BEG and END." ;; First we base64 encode the region, then we transmogrify that into ;; uu encoding. (let ((len (base64-encode-region beg end t)) (padding 0) i c) (save-excursion (goto-char beg) (setq i 0) (while (< i len) (setq c (char-after (point))) (delete-char 1) (if (equal c ?=) ;; "=" means padding. Insert "`" instead. Not counted for length. (progn (insert "`") (setq len (1- len))) (insert (tramp-uu-byte-to-uu-char (tramp-uu-b64-char-to-byte c))) (setq i (1+ i))) ;; Every 60 characters, add "M" at beginning of line (as ;; length byte) and insert a newline. (when (zerop (% i 60)) (save-excursion (beginning-of-line) (insert (char-to-string (+ 32 (/ (* 3 60) 4))))) (insert "\n"))) ;; If there is something leftover, we compute the length byte ;; for that stuff and insert it and a trailing newline. (unless (zerop (% i 60)) (save-excursion (beginning-of-line) (insert (char-to-string (+ 32 (% (- end beg) 45))))) (insert "\n")) ;; Why is there always a "`" line at the end? (insert "`\nend\n") (goto-char beg) (insert "begin 600 xxx\n")))) (provide 'tramp-uu) ;;; arch-tag: 7153f2c6-8be5-4cd2-8c06-0fbcf5190ef6 ;;; tramp-uu.el ends here