From 785428c709c8c0c292909785aa84ea469e50bdb3 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Sun, 5 Nov 2006 13:22:30 +0000 Subject: [PATCH] =?utf8?q?2006-11-05=20=20Micha=EF=BF=BDCadilhac=20=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * 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. --- lisp/ChangeLog | 8 ++++++ lisp/battery.el | 65 +++++++++++++++++++------------------------------ 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 + + * 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 * 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) -- 2.39.2