(battery-linux-proc-apm): Use string-to-number.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 18 Sep 2004 21:33:44 +0000 (21:33 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 18 Sep 2004 21:33:44 +0000 (21:33 +0000)
(battery-linux-proc-acpi): Ignore all hidden files in the battery dir.
Use dolist (and less indentation).  Use erase-buffer.
Pre-initialize `design-capacity', `warn', and `low'.
(battery-format): Use replace-regexp-in-string.

lisp/ChangeLog
lisp/battery.el

index 6fd4579..8e86fdd 100644 (file)
@@ -1,3 +1,11 @@
+2004-09-18  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * battery.el (battery-linux-proc-apm): Use string-to-number.
+       (battery-linux-proc-acpi): Ignore all hidden files in the battery dir.
+       Use dolist (and less indentation).  Use erase-buffer.
+       Pre-initialize `design-capacity', `warn', and `low'.
+       (battery-format): Use replace-regexp-in-string.
+
 2004-09-18  Ralph Schleicher  <rs@nunatak.allgaeu.org>
 
        * battery.el: Delete superfluous empty lines.
@@ -15,8 +23,8 @@
 
 2004-09-17  Romain Francoise  <romain@orebokech.com>
 
-       * ibuf-ext.el (define-ibuffer-filter filename): Expand
-       dired-directory since buffer-file-name is absolute.
+       * ibuf-ext.el (define-ibuffer-filter filename):
+       Expand dired-directory since buffer-file-name is absolute.
 
 2004-09-17  Dan Nicolaescu  <dann@ics.uci.edu>
 
        Use min-colors.
 
        * term.el (term-down): Perform vertical motion if DOWN is negative.
-       (term-exec-1): Set both TERMCAP and TERMINFO
-       unconditionally.
+       (term-exec-1): Set both TERMCAP and TERMINFO unconditionally.
        (term-termcap-format): Synchronyze with the eterm terminfo entry
        in etc/e/eterm.ti.
        (term-handle-colors-array): If the current foreground or
        background are zero (i.e. unspecified), use the foreground and
        background of the default face for reverse video.
        (term-ansi-at-eval-string, term-ansi-default-fg)
-       (term-ansi-default-bg, term-ansi-current-temp): Delete unused
-       variable.
+       (term-ansi-default-bg, term-ansi-current-temp): Delete unused variable.
        (term-mem): Delete ununsed function.
        (term-protocol-version): Increment.
        (term-current-face): Set to default.
index 2c7254b..7b17232 100644 (file)
@@ -1,6 +1,7 @@
 ;;; battery.el --- display battery status information
 
-;; Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004
+;;           Free Software Foundation, Inc.
 
 ;; Author: Ralph Schleicher <rs@nunatak.allgaeu.org>
 ;; Keywords: hardware
@@ -31,6 +32,7 @@
 ;;; Code:
 
 (require 'timer)
+(eval-when-compile (require 'cl))
 
 \f
 (defgroup battery nil
@@ -181,20 +183,20 @@ The following %-sequences are provided:
          (re-search-forward battery-linux-proc-apm-regexp)
          (setq driver-version (match-string 1))
          (setq bios-version (match-string 2))
-         (setq tem (string-to-int (match-string 3) 16))
+         (setq tem (string-to-number (match-string 3) 16))
          (if (not (logand tem 2))
              (setq bios-interface "not supported")
            (setq bios-interface "enabled")
            (cond ((logand tem 16) (setq bios-interface "disabled"))
                  ((logand tem 32) (setq bios-interface "disengaged")))
-           (setq tem (string-to-int (match-string 4) 16))
+           (setq tem (string-to-number (match-string 4) 16))
            (cond ((= tem 0) (setq line-status "off-line"))
                  ((= tem 1) (setq line-status "on-line"))
                  ((= tem 2) (setq line-status "on backup")))
-           (setq tem (string-to-int (match-string 6) 16))
+           (setq tem (string-to-number (match-string 6) 16))
            (if (= tem 255)
                (setq battery-status "N/A")
-             (setq tem (string-to-int (match-string 5) 16))
+             (setq tem (string-to-number (match-string 5) 16))
              (cond ((= tem 0) (setq battery-status "high"
                                     battery-status-symbol ""))
                    ((= tem 1) (setq battery-status "low"
@@ -242,64 +244,52 @@ The following %-sequences are provided:
 %m Remaining time in minutes
 %h Remaining time in hours
 %t Remaining time in the form `h:min'"
-  (let (capacity design-capacity rate rate-type charging-state warn low
-                minutes hours)
-    ;; ACPI provides information about each battery present in the system
-    ;; in a separate subdirectory.  We are going to merge the available
+  (let ((design-capacity 0)
+       (warn 0)
+       (low 0)
+       capacity rate rate-type charging-state minutes hours)
+    ;; ACPI provides information about each battery present in the system in
+    ;; a separate subdirectory.  We are going to merge the available
     ;; information together since displaying for a variable amount of
     ;; batteries seems overkill for format-strings.
     (with-temp-buffer
-      (mapc (lambda (dir)
-             (if (string-match "/\\.\\.?\\'" dir)
-                 nil
-               (delete-region (point-min) (point-max))
-               (condition-case nil
-                   (insert-file-contents (expand-file-name "state" dir))
-                 (error nil))
-               (when (re-search-forward "present: +yes$" nil t)
-                 (and (re-search-forward
-                       "charging state: +\\(.*\\)$" nil t)
-                      (or (null charging-state)
-                          (string= charging-state "unknown"))
-                      ;; On most multi-battery systems, most of the time
-                      ;; only one battery is "charging/discharging", the
-                      ;; others are "unknown".
-                      (setq charging-state (match-string 1)))
-                 (when (re-search-forward
-                        "present rate: +\\([0-9]+\\) \\(m[AW]\\)$" nil t)
-                   (setq rate (+ (or rate 0)
-                                 (string-to-int (match-string 1)))
-                         rate-type (or (and rate-type
-                                            (if (string= rate-type (match-string 2))
-                                                rate-type
-                                              (error
-                                               "Inconsistent rate types (%s vs. %s)"
-                                               rate-type (match-string 2))))
-                                       (match-string 2))))
-                 (when (re-search-forward
-                        "remaining capacity: +\\([0-9]+\\) m[AW]h$" nil t)
-                   (setq capacity (+ (or capacity 0)
-                                     (string-to-int (match-string 1))))))
-               (goto-char (point-max))
-               (condition-case nil
-                   (insert-file-contents (expand-file-name "info" dir))
-                 (error nil))
-               (when (re-search-forward "present: +yes$" nil t)
-                 (when (re-search-forward
-                        "design capacity: +\\([0-9]+\\) m[AW]h$" nil t)
-                   (setq design-capacity (+ (or design-capacity 0)
-                                            (string-to-int (match-string 1)))))
-                 (when (re-search-forward
-                        "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
-                   (setq warn (+ (or warn 0)
-                                 (string-to-int (match-string 1)))))
-                 (when (re-search-forward
-                        "design capacity low: +\\([0-9]+\\) m[AW]h$" nil t)
-                   (setq low (+ (or low 0)
-                                (string-to-int (match-string 1))))))))
-           (condition-case nil
-               (directory-files "/proc/acpi/battery/" t)
-             (error nil))))
+      (dolist (dir (ignore-errors (directory-files "/proc/acpi/battery/"
+                                                  t "\\`[^.]")))
+       (erase-buffer)
+       (ignore-errors (insert-file-contents (expand-file-name "state" dir)))
+       (when (re-search-forward "present: +yes$" nil t)
+         (and (re-search-forward "charging state: +\\(.*\\)$" nil t)
+              (member charging-state '("unknown" nil))
+              ;; On most multi-battery systems, most of the time only one
+              ;; battery is "charging"/"discharging", the others are
+              ;; "unknown".
+              (setq charging-state (match-string 1)))
+         (when (re-search-forward "present rate: +\\([0-9]+\\) \\(m[AW]\\)$"
+                                  nil t)
+           (setq rate (+ (or rate 0) (string-to-number (match-string 1)))
+                 rate-type (or (and rate-type
+                                    (if (string= rate-type (match-string 2))
+                                        rate-type
+                                      (error
+                                       "Inconsistent rate types (%s vs. %s)"
+                                       rate-type (match-string 2))))
+                               (match-string 2))))
+         (when (re-search-forward "remaining capacity: +\\([0-9]+\\) m[AW]h$"
+                                  nil t)
+           (setq capacity
+                 (+ (or capacity 0) (string-to-number (match-string 1))))))
+       (goto-char (point-max))
+       (ignore-errors (insert-file-contents (expand-file-name "info" dir)))
+       (when (re-search-forward "present: +yes$" nil t)
+         (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
+                                  nil t)
+           (incf design-capacity (string-to-number (match-string 1))))
+         (when (re-search-forward
+                "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
+           (incf warn (string-to-number (match-string 1))))
+         (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
+                                  nil t)
+           (incf low (string-to-number (match-string 1)))))))
     (and capacity rate
         (setq minutes (if (zerop rate) 0
                         (floor (* (/ (float (if (string= charging-state
@@ -336,8 +326,8 @@ The following %-sequences are provided:
                                         rate-type)) "N/A"))
          (cons ?B (or charging-state "N/A"))
          (cons ?b (or (and (string= charging-state "charging") "+")
-                      (and low (< capacity low) "!")
-                      (and warn (< capacity warn) "-")
+                      (and (< capacity low) "!")
+                      (and (< capacity warn) "-")
                       ""))
          (cons ?h (or (and hours (number-to-string hours)) "N/A"))
          (cons ?m (or (and minutes (number-to-string minutes)) "N/A"))
@@ -355,28 +345,16 @@ The following %-sequences are provided:
 
 (defun battery-format (format alist)
   "Substitute %-sequences in FORMAT."
-  (let ((index 0)
-       (length (length format))
-       (result "")
-       char flag elem)
-    (while (< index length)
-      (setq char (aref format index))
-      (if (not flag)
-         (if (char-equal char ?%)
-             (setq flag t)
-           (setq result (concat result (char-to-string char))))
-       (cond ((char-equal char ?%)
-              (setq result (concat result "%")))
-             ((setq elem (assoc char alist))
-              (setq result (concat result (cdr elem)))))
-       (setq flag nil))
-      (setq index (1+ index)))
-    (or (null flag)
-       (setq result (concat result "%")))
-    result))
+  (replace-regexp-in-string
+   "%."
+   (lambda (str)
+     (let ((char (aref str 1)))
+       (if (eq char ?%) "%"
+        (or (cdr (assoc char alist)) ""))))
+   format t t))
 
 \f
 (provide 'battery)
 
-;;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
+;; arch-tag: 65916f50-4754-4b6b-ac21-0b510f545a37
 ;;; battery.el ends here