Index: lisp/battery.el =================================================================== RCS file: /sources/emacs/emacs/lisp/battery.el,v retrieving revision 1.36 diff -c -r1.36 battery.el *** lisp/battery.el 9 May 2006 22:43:35 -0000 1.36 --- lisp/battery.el 2 Nov 2006 21:56:48 -0000 *************** *** 355,399 **** 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)))) "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)))) "N/A")) (cons ?r (or (and rate (concat (number-to-string rate) " " rate-type)) "N/A")) --- 355,373 ---- 60))) hours (/ minutes 60))) (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A")) ! (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 (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")) *************** *** 478,483 **** --- 452,471 ---- (or (cdr (assoc char alist)) "")))) format t t)) + (defun battery-search-for-one-match-in-files (files regexp match-num) + "Search REGEXP in 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 + (while (and files + (not (or (ignore-errors + (insert-file-contents (car files)) + (re-search-forward regexp)) + (erase-buffer)))) + (setq files (cdr files))) + (when files + (match-string match-num)))) + (provide 'battery) Index: lisp/ChangeLog =================================================================== RCS file: /sources/emacs/emacs/lisp/ChangeLog,v retrieving revision 1.10237 diff -c -0 -r1.10237 ChangeLog *** lisp/ChangeLog 31 Oct 2006 11:07:10 -0000 1.10237 --- lisp/ChangeLog 2 Nov 2006 21:56:57 -0000 *************** *** 0 **** --- 1,8 ---- + 2006-11-04 Michaƫl 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 + a list of files. +