# HG changeset patch # User Eli Zaretskii # Date 1095508083 0 # Node ID fd1a6df8927e0c3ee6683da34e43ff4ebed68ba5 # Parent eeda7e730a4df07039e5089393f935e1eb95e539 Delete superfluous empty lines. (battery-linux-proc-acpi): Attempt to gather information from all battery subdirectories regardless of their file name. (battery-linux-proc-apm): Replace all occurrences of battery-hex-to-int-2 with string-to-int (base 16). (battery-hex-to-int-2, battery-hex-to-int): Delete functions. (battery-hex-map): Delete variable. diff -r eeda7e730a4d -r fd1a6df8927e lisp/battery.el --- a/lisp/battery.el Sat Sep 18 10:21:24 2004 +0000 +++ b/lisp/battery.el Sat Sep 18 11:48:03 2004 +0000 @@ -33,7 +33,6 @@ (require 'timer) - (defgroup battery nil "Display battery status information." :prefix "battery-" @@ -182,20 +181,20 @@ (re-search-forward battery-linux-proc-apm-regexp) (setq driver-version (match-string 1)) (setq bios-version (match-string 2)) - (setq tem (battery-hex-to-int-2 (match-string 3))) + (setq tem (string-to-int (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 (battery-hex-to-int-2 (match-string 4))) + (setq tem (string-to-int (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 (battery-hex-to-int-2 (match-string 6))) + (setq tem (string-to-int (match-string 6) 16)) (if (= tem 255) (setq battery-status "N/A") - (setq tem (battery-hex-to-int-2 (match-string 5))) + (setq tem (string-to-int (match-string 5) 16)) (cond ((= tem 0) (setq battery-status "high" battery-status-symbol "")) ((= tem 1) (setq battery-status "low" @@ -245,52 +244,62 @@ %t Remaining time in the form `h:min'" (let (capacity design-capacity rate rate-type charging-state warn low minutes hours) - (when (file-directory-p "/proc/acpi/battery/") - ;; 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. - (mapc - (lambda (dir) - (with-temp-buffer - (insert-file-contents (expand-file-name "state" dir)) - (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)) - (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) - (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)))))))) - (directory-files "/proc/acpi/battery/" t "\\(BAT\\|CMB\\)"))) + ;; 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)))) (and capacity rate (setq minutes (if (zerop rate) 0 (floor (* (/ (float (if (string= charging-state @@ -366,32 +375,6 @@ (setq result (concat result "%"))) result)) -(defconst battery-hex-map '((?0 . 0) (?1 . 1) (?2 . 2) (?3 . 3) - (?4 . 4) (?5 . 5) (?6 . 6) (?7 . 7) - (?8 . 8) (?9 . 9) (?a . 10) (?b . 11) - (?c . 12) (?d . 13) (?e . 14) (?f . 15))) - -(defun battery-hex-to-int (string) - "Convert a hexadecimal number (a string) into a number." - (save-match-data - (and (string-match "^[ \t]+" string) - (setq string (substring string (match-end 0)))) - (and (string-match "^0[xX]" string) - (setq string (substring string (match-end 0))))) - (battery-hex-to-int-2 string)) - -(defun battery-hex-to-int-2 (string) - (let ((index 0) - (length (length string)) - (value 0) - (elem nil)) - (while (and (< index length) - (setq elem (assoc (downcase (aref string index)) - battery-hex-map))) - (setq value (+ (* 16 value) (cdr elem)) - index (1+ index))) - value)) - (provide 'battery)