Auto-detect disks if none specified
|
|
Refer to:
|
https://bugzilla.redhat.com/show_bug.cgi?id=717479
|
|
Index: hddtemp-0.3-beta15/doc/hddtemp.8
|
===================================================================
|
--- hddtemp-0.3-beta15.orig/doc/hddtemp.8
|
+++ hddtemp-0.3-beta15/doc/hddtemp.8
|
@@ -19,7 +19,7 @@
|
hddtemp \- Utility to monitor hard drive temperature
|
.SH SYNOPSIS
|
.B hddtemp
|
-.RI [ options ] " [type:]disk" ...
|
+.RI [ options ] " [[type:]disk]" ...
|
.SH "DESCRIPTION"
|
.PP
|
.B hddtemp
|
@@ -35,7 +35,8 @@ You can specify one or more device drive
|
with a
|
.B type
|
like PATA, SATA or SCSI to force hddtemp too use one of these type
|
-(because detection can fail).
|
+(because detection can fail). If no paths are specified, autodetection of
|
+installed drives is attempted.
|
|
|
.SH "OPTIONS"
|
Index: hddtemp-0.3-beta15/src/hddtemp.c
|
===================================================================
|
--- hddtemp-0.3-beta15.orig/src/hddtemp.c
|
+++ hddtemp-0.3-beta15/src/hddtemp.c
|
@@ -54,6 +54,7 @@
|
#include <linux/hdreg.h>
|
#include <ctype.h>
|
#include <assert.h>
|
+#include <glob.h>
|
|
// Application specific includes
|
#include "ata.h"
|
@@ -255,6 +256,7 @@ int main(int argc, char* argv[]) {
|
int ret = 0;
|
int show_db;
|
struct disk * ldisks;
|
+ glob_t diskglob;
|
|
backtrace_sigsegv();
|
backtrace_sigill();
|
@@ -423,11 +425,6 @@ int main(int argc, char* argv[]) {
|
exit(0);
|
}
|
|
- if(argc - optind <= 0) {
|
- fprintf(stderr, _("Too few arguments: you must specify one drive, at least.\n"));
|
- exit(1);
|
- }
|
-
|
if(debug) {
|
/* argc = optind + 1;*/
|
quiet = 1;
|
@@ -438,6 +435,23 @@ int main(int argc, char* argv[]) {
|
exit(1);
|
}
|
|
+ memset(&diskglob, 0, sizeof(glob_t));
|
+ if(argc - optind <= 0) {
|
+ if(glob("/dev/[hs]d[a-z]", 0, NULL, &diskglob) == 0) {
|
+ argc = diskglob.gl_pathc;
|
+ argv = diskglob.gl_pathv;
|
+ optind = 0;
|
+ } else {
|
+ argc = 0;
|
+ }
|
+ }
|
+
|
+ if(argc - optind <= 0) {
|
+ globfree(&diskglob);
|
+ fprintf(stderr, _("Too few arguments: you must specify one drive, at least.\n"));
|
+ exit(1);
|
+ }
|
+
|
init_bus_types();
|
|
/* collect disks informations */
|
@@ -531,6 +545,7 @@ int main(int argc, char* argv[]) {
|
else {
|
do_direct_mode(ldisks);
|
}
|
+ globfree(&diskglob);
|
|
return ret;
|
}
|