Mercurial > emacs
annotate lisp/net/tramp-uu.el @ 48478:a94c995f94de
*** empty log message ***
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Wed, 20 Nov 2002 18:54:25 +0000 |
| parents | b31c8ab7336a |
| children | 09acf3f65bb5 |
| rev | line source |
|---|---|
|
47576
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
1 ;;; tramp-uu.el --- uuencode in Lisp |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
2 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
3 ;; Copyright (C) 2002 Free Software Foundation, Inc. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
4 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
5 ;; Author: Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
6 ;; Keywords: comm, terminals |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
7 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
8 ;; This file is free software; you can redistribute it and/or modify |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
9 ;; it under the terms of the GNU General Public License as published by |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
10 ;; the Free Software Foundation; either version 2, or (at your option) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
11 ;; any later version. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
12 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
13 ;; This file is distributed in the hope that it will be useful, |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
16 ;; GNU General Public License for more details. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
17 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
18 ;; You should have received a copy of the GNU General Public License |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
19 ;; along with GNU Emacs; see the file COPYING. If not, write to |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
20 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
21 ;; Boston, MA 02111-1307, USA. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
22 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
23 ;;; Commentary: |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
24 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
25 ;; An implementation of "uuencode" in Lisp. Uses the function |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
26 ;; base64-encode-region which is built-in to modern Emacsen. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
27 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
28 ;;; Code: |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
29 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
30 (defvar tramp-uu-b64-alphabet |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
31 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
32 "Mapping from base64-encoded character to the byte it represents.") |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
33 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
34 (defvar tramp-uu-b64-char-to-byte |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
35 (let ((i 0)) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
36 (mapcar (lambda (c) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
37 (prog1 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
38 (cons c i) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
39 (incf i))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
40 tramp-uu-b64-alphabet)) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
41 "Alist of mapping from base64 character to its byte.") |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
42 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
43 (defun tramp-uu-byte-to-uu-char (byte) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
44 "Return the character encoding BYTE." |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
45 (if (zerop byte) ?` (+ byte 32))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
46 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
47 (defun tramp-uu-b64-char-to-byte (char) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
48 "Return the byte that is encoded as CHAR." |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
49 (cdr (assq char tramp-uu-b64-char-to-byte))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
50 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
51 (defun tramp-uuencode-region (beg end) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
52 "UU-encode the region between BEG and END." |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
53 ;; First we base64 encode the region, then we transmogrify that into |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
54 ;; uu encoding. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
55 (let ((len (base64-encode-region beg end t)) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
56 (padding 0) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
57 i c) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
58 (save-excursion |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
59 (goto-char beg) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
60 (setq i 0) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
61 (while (< i len) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
62 (setq c (char-after (point))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
63 (delete-char 1) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
64 (if (equal c ?=) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
65 ;; "=" means padding. Insert "`" instead. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
66 (insert "`") |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
67 (insert (tramp-uu-byte-to-uu-char (tramp-uu-b64-char-to-byte c)))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
68 (incf i) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
69 ;; Every 60 characters, add "M" at beginning of line (as |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
70 ;; length byte) and insert a newline. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
71 (when (zerop (% i 60)) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
72 (save-excursion |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
73 (beginning-of-line) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
74 (insert (char-to-string (+ 32 (/ (* 3 60) 4))))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
75 (insert "\n"))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
76 ;; If there is something leftover, we compute the length byte |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
77 ;; for that stuff and insert it and a trailing newline. |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
78 (unless (zerop (% i 60)) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
79 (save-excursion |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
80 (beginning-of-line) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
81 (insert (char-to-string (+ 32 (% (- end beg) 45))))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
82 (insert "\n")) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
83 ;; Why is there always a "`" line at the end? |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
84 (insert "`\nend\n") |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
85 (goto-char beg) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
86 (insert "begin 600 xxx\n")))) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
87 |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
88 (provide 'tramp-uu) |
|
b31c8ab7336a
Sync with version 2.0.20. Lengthy ChangeLog follows:
Kai Gro?johann <kgrossjo@eu.uu.net>
parents:
diff
changeset
|
89 ;;; tramp-uu.el ends here |
