summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRomain Francoise <romain@orebokech.com>2006-11-05 13:22:30 +0000
committerRomain Francoise <romain@orebokech.com>2006-11-05 13:22:30 +0000
commit785428c709c8c0c292909785aa84ea469e50bdb3 (patch)
tree8ca72d596bbfbe9e84406fc9c31b4d0fad0bedd8 /lisp
parent107709d449c2488ccb802f59449391b25aab6dc6 (diff)
2006-11-05 Micha�Cadilhac <michael.cadilhac@lrde.org>
* battery.el (battery-linux-proc-acpi): Search an ac_adapter in `/proc/acpi/ac_adapter/*'. Ditto for the thermometers in `/proc/acpi/thermal_zone/*'. (battery-search-for-one-match-in-files): New. Search a regexp in the content of some files.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/battery.el65
2 files changed, 33 insertions, 40 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 5d1136a945f..b699521bf4b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2006-11-05 Micha,Ak(Bl Cadilhac <michael.cadilhac@lrde.org>
+
+ * battery.el (battery-linux-proc-acpi): Search an ac_adapter in
+ `/proc/acpi/ac_adapter/*'. Ditto for the thermometers in
+ `/proc/acpi/thermal_zone/*'.
+ (battery-search-for-one-match-in-files): New. Search a regexp in
+ the content of some files.
+
2006-11-05 Martin Rudalics <rudalics@gmx.at>
* window.el (mouse-autoselect-window-now): Remove variable.
diff --git a/lisp/battery.el b/lisp/battery.el
index ec35e04e1ab..a4c72df0bbb 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -49,8 +49,8 @@
(file-directory-p "/proc/acpi/battery"))
'battery-linux-proc-acpi)
((and (eq system-type 'darwin)
- (condition-case nil
- (with-temp-buffer
+ (condition-case nil
+ (with-temp-buffer
(and (eq (call-process "pmset" nil t nil "-g" "ps") 0)
(> (buffer-size) 0)))
(error nil)))
@@ -355,45 +355,19 @@ The following %-sequences are provided:
60)))
hours (/ minutes 60)))
(list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
- (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
- (with-temp-buffer
- (insert-file-contents
- "/proc/acpi/ac_adapter/AC/state")
- (when (re-search-forward "state: +\\(.*\\)$" nil t)
- (match-string 1))))
+ (cons ?L (or (battery-search-for-one-match-in-files
+ (mapcar (lambda (e) (concat e "/state"))
+ (directory-files "/proc/acpi/ac_adapter/"
+ t "\\`[^.]"))
+ "state: +\\(.*\\)$" 1)
+
"N/A"))
- (cons ?d (or (when (file-exists-p
- "/proc/acpi/thermal_zone/THRM/temperature")
- (with-temp-buffer
- (insert-file-contents
- "/proc/acpi/thermal_zone/THRM/temperature")
- (when (re-search-forward
- "temperature: +\\([0-9]+\\) C$" nil t)
- (match-string 1))))
- (when (file-exists-p
- "/proc/acpi/thermal_zone/THM/temperature")
- (with-temp-buffer
- (insert-file-contents
- "/proc/acpi/thermal_zone/THM/temperature")
- (when (re-search-forward
- "temperature: +\\([0-9]+\\) C$" nil t)
- (match-string 1))))
- (when (file-exists-p
- "/proc/acpi/thermal_zone/THM0/temperature")
- (with-temp-buffer
- (insert-file-contents
- "/proc/acpi/thermal_zone/THM0/temperature")
- (when (re-search-forward
- "temperature: +\\([0-9]+\\) C$" nil t)
- (match-string 1))))
- (when (file-exists-p
- "/proc/acpi/thermal_zone/THR2/temperature")
- (with-temp-buffer
- (insert-file-contents
- "/proc/acpi/thermal_zone/THR2/temperature")
- (when (re-search-forward
- "temperature: +\\([0-9]+\\) C$" nil t)
- (match-string 1))))
+ (cons ?d (or (battery-search-for-one-match-in-files
+ (mapcar (lambda (e) (concat e "/temperature"))
+ (directory-files "/proc/acpi/thermal_zone/"
+ t "\\`[^.]"))
+ "temperature: +\\([0-9]+\\) C$" 1)
+
"N/A"))
(cons ?r (or (and rate (concat (number-to-string rate) " "
rate-type)) "N/A"))
@@ -479,6 +453,17 @@ The following %-sequences are provided:
(or (cdr (assoc char alist)) ""))))
format t t))
+(defun battery-search-for-one-match-in-files (files regexp match-num)
+ "Search REGEXP in the content of the files listed in FILES.
+If a match occured, return the parenthesized expression numbered by
+MATCH-NUM in the match. Otherwise, return nil."
+ (with-temp-buffer
+ (catch 'found
+ (dolist (file files)
+ (and (ignore-errors (insert-file-contents file nil nil nil 'replace))
+ (re-search-forward regexp nil t)
+ (throw 'found (match-string match-num)))))))
+
(provide 'battery)