(gnus-read-group): Added check to ask confirmation if
[gnus] / lisp / gnus-fun.el
index f8afca8..ca5cdea 100644 (file)
@@ -1,4 +1,4 @@
-;;; gnus-fun.el --- various frivoluos extension functions to Gnus
+;;; gnus-fun.el --- various frivolous extension functions to Gnus
 ;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'cl)
+  (require 'mm-util))
+
 (defcustom gnus-x-face-directory (expand-file-name "x-faces" gnus-directory)
   "*Directory where X-Face PBM files are stored."
   :group 'gnus-fun
@@ -107,18 +111,19 @@ Output to the current buffer, replace text, and don't mingle error."
       (while (and (not done)
                  (> quant 1))
        (setq attempt
-             (gnus-shell-command-to-string
-              (format gnus-convert-image-to-face-command
-                      (shell-quote-argument (expand-file-name file))
-                      quant)))
-       (if (> (length attempt) 740)
+             (let ((coding-system-for-read 'binary))
+               (gnus-shell-command-to-string
+                (format gnus-convert-image-to-face-command
+                        (shell-quote-argument (expand-file-name file))
+                        quant))))
+       (if (> (length attempt) 726)
            (progn
              (setq quant (- quant 2))
              (message "Length %d; trying quant %d"
                       (length attempt) quant))
          (setq done t)))
       (if done
-         (mm-with-unibyte-buffer       
+         (mm-with-unibyte-buffer
            (insert attempt)
            (gnus-face-encode))
        nil))))
@@ -147,14 +152,14 @@ The PNG is returned as a string."
       (base64-decode-region (point-min) (point-max)))
     (buffer-string)))
 
-;;;#autoload
+;;;###autoload
 (defun gnus-convert-png-to-face (file)
   "Convert FILE to a Face.
 FILE should be a PNG file that's 48x48 and smaller than or equal to
-740 bytes."
+726 bytes."
   (mm-with-unibyte-buffer
     (insert-file-contents file)
-    (when (> (buffer-size) 740)
+    (when (> (buffer-size) 726)
       (error "The file is %d bytes long, which is too long"
             (buffer-size)))
     (gnus-face-encode)))
@@ -185,9 +190,9 @@ colors of the displayed X-Faces."
            (if (gnus-image-type-available-p 'xface)
                (gnus-create-image
                 (concat "X-Face: " data)
-                'xface t :ascent 'center :face 'gnus-x-face)
+                'xface t :face 'gnus-x-face)
              (gnus-create-image
-              pbm 'pbm t :ascent 'center :face 'gnus-x-face))))
+              pbm 'pbm t :face 'gnus-x-face)) nil 'xface))
          (gnus-add-wash-type 'xface))))))
 
 (defun gnus-grab-cam-x-face ()
@@ -219,10 +224,10 @@ colors of the displayed X-Faces."
       (sleep-for 1))
     (setq file (car file))
     (shell-command
-     (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | ppmnorm 2>/dev/null | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
+     (format "pnmcut -left 110 -top 30 -width 144 -height 144 '%s' | pnmscale -width 48 -height 48 | ppmtopgm > /tmp/gnus.face.ppm"
             file))
     (let ((gnus-convert-image-to-face-command
-          (format "cat '%%s' | ppmchange %s | ppmquant %%d | pnmtopng"
+          (format "cat '%%s' | ppmquant %%d | ppmchange %s | pnmtopng"
                   (gnus-fun-ppm-change-string))))
       (setq result (gnus-face-from-file "/tmp/gnus.face.ppm")))
     (delete-file file)