Init hddtemp package
This commit is contained in:
parent
2ea5e8b340
commit
92423cf5e8
@ -0,0 +1,26 @@
|
||||
From e677018004a41a1895a44fca88a6ff2323093064 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
|
||||
Date: Fri, 10 Jan 2014 00:21:07 +0200
|
||||
Subject: [PATCH] Allow binding to a listen address that doesn't exist yet
|
||||
|
||||
---
|
||||
src/daemon.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/daemon.c b/src/daemon.c
|
||||
index 3e211f2..ee836e5 100644
|
||||
--- a/src/daemon.c
|
||||
+++ b/src/daemon.c
|
||||
@@ -98,6 +98,9 @@ void daemon_open_sockets(void)
|
||||
/* Allow local port reuse in TIME_WAIT */
|
||||
setsockopt(sks_serv[sks_serv_num], SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
|
||||
|
||||
+ /* Allow binding to a listen address that doesn't exist yet */
|
||||
+ setsockopt(sks_serv[sks_serv_num], SOL_IP, IP_FREEBIND, &on, sizeof(on));
|
||||
+
|
||||
/* Now we've got a socket - we need to bind it. */
|
||||
if (bind(sks_serv[sks_serv_num], resp->ai_addr, resp->ai_addrlen) < 0) {
|
||||
/* Nope, try another */
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
104
0001-Try-attribute-190-if-194-doesn-t-exist.patch
Normal file
104
0001-Try-attribute-190-if-194-doesn-t-exist.patch
Normal file
@ -0,0 +1,104 @@
|
||||
From d3c162af0ca0110ce715c1e364194475f2eee3ae Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ville=20Skytt=C3=A4?= <ville.skytta@iki.fi>
|
||||
Date: Sat, 18 Jan 2014 13:59:27 +0200
|
||||
Subject: [PATCH] Try attribute 190 if 194 doesn't exist
|
||||
|
||||
---
|
||||
src/ata.c | 2 ++
|
||||
src/db.c | 1 +
|
||||
src/db.h | 1 +
|
||||
src/hddtemp.c | 1 +
|
||||
src/hddtemp.h | 1 +
|
||||
src/sata.c | 2 ++
|
||||
src/scsi.c | 1 +
|
||||
7 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/ata.c b/src/ata.c
|
||||
index 1d908ac..742129a 100644
|
||||
--- a/src/ata.c
|
||||
+++ b/src/ata.c
|
||||
@@ -141,6 +141,8 @@ static enum e_gettemp ata_get_temperature(struct disk *dsk) {
|
||||
|
||||
/* temperature */
|
||||
field = ata_search_temperature(values, dsk->db_entry->attribute_id);
|
||||
+ if(!field && dsk->db_entry->attribute_id2 != 0)
|
||||
+ field = ata_search_temperature(values, dsk->db_entry->attribute_id2);
|
||||
|
||||
if(field)
|
||||
dsk->value = *(field+3);
|
||||
diff --git a/src/db.c b/src/db.c
|
||||
index 5aed8e8..f8a1822 100644
|
||||
--- a/src/db.c
|
||||
+++ b/src/db.c
|
||||
@@ -196,6 +196,7 @@ static int parse_db_line(char *line) {
|
||||
new_entry->regexp = strdup(regexp);
|
||||
new_entry->description = strdup(description);
|
||||
new_entry->attribute_id = value;
|
||||
+ new_entry->attribute_id2 = 0;
|
||||
new_entry->unit = unit;
|
||||
new_entry->next = NULL;
|
||||
*last_entry = new_entry;
|
||||
diff --git a/src/db.h b/src/db.h
|
||||
index 6c08e87..dccb21c 100644
|
||||
--- a/src/db.h
|
||||
+++ b/src/db.h
|
||||
@@ -26,6 +26,7 @@
|
||||
struct harddrive_entry {
|
||||
char *regexp;
|
||||
short int attribute_id;
|
||||
+ short int attribute_id2;
|
||||
char *description;
|
||||
unsigned char unit;
|
||||
struct harddrive_entry *next;
|
||||
diff --git a/src/hddtemp.c b/src/hddtemp.c
|
||||
index 300cb0e..bce5e91 100644
|
||||
--- a/src/hddtemp.c
|
||||
+++ b/src/hddtemp.c
|
||||
@@ -528,6 +528,7 @@ int main(int argc, char* argv[]) {
|
||||
dsk->db_entry->regexp = "";
|
||||
dsk->db_entry->description = "";
|
||||
dsk->db_entry->attribute_id = DEFAULT_ATTRIBUTE_ID;
|
||||
+ dsk->db_entry->attribute_id2 = DEFAULT_ATTRIBUTE_ID2;
|
||||
dsk->db_entry->unit = 'C';
|
||||
dsk->db_entry->next = NULL;
|
||||
}
|
||||
diff --git a/src/hddtemp.h b/src/hddtemp.h
|
||||
index ed4ed5d..2460639 100644
|
||||
--- a/src/hddtemp.h
|
||||
+++ b/src/hddtemp.h
|
||||
@@ -30,6 +30,7 @@ typedef __u16 u16;
|
||||
|
||||
#define MAX_ERRORMSG_SIZE 128
|
||||
#define DEFAULT_ATTRIBUTE_ID 194
|
||||
+#define DEFAULT_ATTRIBUTE_ID2 190
|
||||
|
||||
#define F_to_C(val) (int)(((double)(val)-32.0)/1.8)
|
||||
#define C_to_F(val) (int)(((double)(val)*(double)1.8) + (double)32.0)
|
||||
diff --git a/src/sata.c b/src/sata.c
|
||||
index d67621f..0afe13c 100644
|
||||
--- a/src/sata.c
|
||||
+++ b/src/sata.c
|
||||
@@ -166,6 +166,8 @@ static enum e_gettemp sata_get_temperature(struct disk *dsk) {
|
||||
|
||||
/* temperature */
|
||||
field = sata_search_temperature(values, dsk->db_entry->attribute_id);
|
||||
+ if(!field && dsk->db_entry->attribute_id2 != 0)
|
||||
+ field = sata_search_temperature(values, dsk->db_entry->attribute_id2);
|
||||
|
||||
if(field)
|
||||
dsk->value = *(field+3);
|
||||
diff --git a/src/scsi.c b/src/scsi.c
|
||||
index 71c9b82..b92b235 100644
|
||||
--- a/src/scsi.c
|
||||
+++ b/src/scsi.c
|
||||
@@ -84,6 +84,7 @@ static enum e_gettemp scsi_get_temperature(struct disk *dsk) {
|
||||
dsk->db_entry->regexp = "";
|
||||
dsk->db_entry->description = "";
|
||||
dsk->db_entry->attribute_id = 0;
|
||||
+ dsk->db_entry->attribute_id2 = 0;
|
||||
dsk->db_entry->unit = 'C';
|
||||
dsk->db_entry->next = NULL;
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
12
fix-model-length.patch
Normal file
12
fix-model-length.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff -Naur hddtemp-0.3-beta15.orig/src/sata.c hddtemp-0.3-beta15/src/sata.c
|
||||
--- hddtemp-0.3-beta15.orig/src/sata.c 2014-03-07 19:09:31.000000000 +0100
|
||||
+++ hddtemp-0.3-beta15/src/sata.c 2014-03-07 19:29:07.738284373 +0100
|
||||
@@ -88,7 +88,7 @@
|
||||
return strdup(_("unknown"));
|
||||
else
|
||||
{
|
||||
- sata_fixstring(identify + 54, 24);
|
||||
+ sata_fixstring(identify + 54, 40);
|
||||
return strdup(identify + 54);
|
||||
}
|
||||
}
|
||||
85
hddtemp-0.3-beta15-autodetect-717479.patch
Normal file
85
hddtemp-0.3-beta15-autodetect-717479.patch
Normal file
@ -0,0 +1,85 @@
|
||||
diff -up hddtemp-0.3-beta15/doc/hddtemp.8~ hddtemp-0.3-beta15/doc/hddtemp.8
|
||||
--- hddtemp-0.3-beta15/doc/hddtemp.8~ 2011-08-18 00:36:05.689001470 +0300
|
||||
+++ hddtemp-0.3-beta15/doc/hddtemp.8 2011-08-18 00:44:46.753006253 +0300
|
||||
@@ -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"
|
||||
diff -up hddtemp-0.3-beta15/src/hddtemp.c~ hddtemp-0.3-beta15/src/hddtemp.c
|
||||
--- hddtemp-0.3-beta15/src/hddtemp.c~ 2011-08-18 00:36:05.638996861 +0300
|
||||
+++ hddtemp-0.3-beta15/src/hddtemp.c 2011-08-18 00:35:55.485060798 +0300
|
||||
@@ -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();
|
||||
@@ -419,11 +421,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;
|
||||
@@ -434,6 +431,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 */
|
||||
@@ -527,6 +541,7 @@ int main(int argc, char* argv[]) {
|
||||
else {
|
||||
do_direct_mode(ldisks);
|
||||
}
|
||||
+ globfree(&diskglob);
|
||||
|
||||
return ret;
|
||||
}
|
||||
BIN
hddtemp-0.3-beta15.tar.bz2
Normal file
BIN
hddtemp-0.3-beta15.tar.bz2
Normal file
Binary file not shown.
3
hddtemp.consoleapp
Normal file
3
hddtemp.consoleapp
Normal file
@ -0,0 +1,3 @@
|
||||
USER=root
|
||||
PROGRAM=/usr/sbin/hddtemp
|
||||
GUI=no
|
||||
55
hddtemp.db
Normal file
55
hddtemp.db
Normal file
@ -0,0 +1,55 @@
|
||||
# Minimal database for drives not covered by defaults. hddtemp will first try
|
||||
# S.M.A.R.T. attribute 194. If it does not exist, it will try attribute 190.
|
||||
#
|
||||
# The four columns are:
|
||||
# 1) Regular expression matching the drive identification, which you see as
|
||||
# the Model in the output of: hddtemp --debug /dev/drive
|
||||
# 2) S.M.A.R.T. attribute number to get drive temperature. A value of zero
|
||||
# means that we know that the drive doesn't have a temperature sensor.
|
||||
# 3) Temperature units reported (C or F).
|
||||
# 4) Human readable string representing the drive model.
|
||||
|
||||
"FUJITSU MHM2100AT" 0 C "Fujitsu MHM2100AT"
|
||||
"HITACHI_DK228A-65" 0 C "Hitachi DK228A-65"
|
||||
"IBM-DARA-212000" 0 C "IBM Travelstar 12GN"
|
||||
"IBM-DHEA-(34330|36480)" 0 C "IBM Deskstar 5 serie"
|
||||
"IBM-DHEA-(34331|36481|38451)" 0 C "IBM Deskstar 8 serie"
|
||||
"IBM-DJNA-35.*" 231 C "IBM Deskstar 25 GP serie"
|
||||
"IBM-DJNA-37.*" 231 C "IBM Deskstar 22 GXP serie"
|
||||
"IBM-DPTA-35.*" 231 C "IBM Deskstar 37GP serie"
|
||||
"IBM-DPTA-37.*" 231 C "IBM Deskstar 34GXP serie"
|
||||
"IBM-DTTA-35*" 0 C "IBM Deskstar 16GP serie"
|
||||
"MK4313MAT" 220 C "Toshiba MK4313MAT"
|
||||
"Maxtor 5(1024|1369|2049|2732|3073|4098)U(2|3|4|6|8)" 0 C "Maxtor DiamondMax Plus 40"
|
||||
"Maxtor 5T0[24]0H[24]" 0 C "Maxtor DiamondMax Plus 60"
|
||||
"Maxtor 94098U8" 11 C "Maxtor DiamondMax 40 94098U8"
|
||||
"QUANTUM FIREBALL CX10.2A" 0 C "Quantum Fireball CX10.2A"
|
||||
"QUANTUM FIREBALLP AS40.0" 0 C "Quantum Fireball AS40"
|
||||
"SAMSUNG SSD PM8[01]0" 0 C "Samsung SSD PM800/810"
|
||||
"SAMSUNG SV0432A" 0 C "Samsung SV0432A"
|
||||
"SAMSUNG SV3002H" 0 C "Samsung SpinPoint V30 serie"
|
||||
"SAMSUNG SW0434A" 0 C "Samsung SW0434A"
|
||||
"ST310210A" 0 C "Seagate ST310210A"
|
||||
"ST310220A" 0 C "Seagate ST310220A"
|
||||
"ST310240A" 0 C "Seagate Medalist 10240 Ultra ATA-3"
|
||||
"ST313021A" 0 C "Seagate U8 ST313021A"
|
||||
"ST320423A" 0 C "Seagate U10 20423, Ultra ATA/66"
|
||||
"ST3412A" 0 C "Seagate ST3412A"
|
||||
"ST38641A" 0 C "Seagate ST38641A"
|
||||
"Seagate Technology 1275MB - ST31276A" 0 C "Seagate ST31276A"
|
||||
"TOSHIBA MK1517GAP" 0 C "Toshiba MK1517GAP"
|
||||
"TOSHIBA MK2018GAS" 226 F "Toshiba MK2018GAS"
|
||||
"TOSHIBA MK3017GAP" 0 C "Toshiba MK3017GAP"
|
||||
"WDC AC22000L" 0 C "Western Digital Caviar AC22000"
|
||||
"WDC AC418000D" 231 C "Western Digital AC418000D"
|
||||
"WDC AC420400D" 231 C "Western Digital Caviar AC420400D"
|
||||
"WDC WD100EB-00BHF0" 0 C "Western Digital 100EB-00BHF0"
|
||||
"WDC WD135BA" 231 C "Western Digital WD135BA"
|
||||
"WDC WD200BB-00AUA1" 0 C "Western Digital Caviar WD200BB"
|
||||
"WDC WD300BB-00CAA0" 0 C "Western Digital WD300BB"
|
||||
"WDC WD400BB-(18CA|00DE)A0" 0 C "Western Digital Caviar WD400BB"
|
||||
"WDC WD400BB-00CAA0" 0 C "Western Digital 400BB-00CAA0"
|
||||
"WDC WD400EB-00CPF0" 0 C "Western Digital 400EB-00CPF0"
|
||||
"WDC WD600BB-32BSA0" 0 C "Western Digital 600BB-32BSA0"
|
||||
"WDC WD800BB-00CAA1" 0 C "Western Digital WD800BB-00CAA1"
|
||||
"WDC WD800JB-00CRA1" 0 C "Western Digital Caviar WD800JB"
|
||||
4
hddtemp.pam
Normal file
4
hddtemp.pam
Normal file
@ -0,0 +1,4 @@
|
||||
#%PAM-1.0
|
||||
auth sufficient pam_rootok.so
|
||||
auth required pam_localuser.so
|
||||
account required pam_permit.so
|
||||
11
hddtemp.service
Normal file
11
hddtemp.service
Normal file
@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=Hard drive temperature monitor daemon
|
||||
Documentation=man:hddtemp(8)
|
||||
|
||||
[Service]
|
||||
Environment=HDDTEMP_OPTIONS=--listen=127.0.0.1
|
||||
EnvironmentFile=-/etc/sysconfig/hddtemp
|
||||
ExecStart=/usr/sbin/hddtemp -dF $HDDTEMP_OPTIONS
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
92
hddtemp.spec
Normal file
92
hddtemp.spec
Normal file
@ -0,0 +1,92 @@
|
||||
Name: hddtemp
|
||||
Version: 0.3
|
||||
Release: 1.beta15%{?dist}
|
||||
Summary: Hard disk temperature tool
|
||||
License: GPLv2+
|
||||
URL: http://savannah.nongnu.org/projects/hddtemp/
|
||||
|
||||
Source0: http://download.savannah.nongnu.org/releases/hddtemp/%{name}-%{version}-beta15.tar.bz2
|
||||
Source1: %{name}.db
|
||||
Source2: %{name}.service
|
||||
Source3: %{name}.sysconfig
|
||||
Source4: %{name}.pam
|
||||
Source5: %{name}.consoleapp
|
||||
|
||||
Patch0: 0001-Try-attribute-190-if-194-doesn-t-exist.patch
|
||||
Patch1: http://ftp.debian.org/debian/pool/main/h/hddtemp/hddtemp_0.3-beta15-53.diff.gz
|
||||
Patch2: %{name}-0.3-beta15-autodetect-717479.patch
|
||||
Patch3: 0001-Allow-binding-to-a-listen-address-that-doesn-t-exist.patch
|
||||
Patch4: fix-model-length.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gettext
|
||||
# systemd >= 186 for scriptlet macros
|
||||
BuildRequires: systemd >= 186
|
||||
Requires(post): systemd
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
Requires: %{_bindir}/consolehelper
|
||||
|
||||
|
||||
%description
|
||||
hddtemp is a tool that gives you the temperature of your hard drive by
|
||||
reading S.M.A.R.T. information.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}-beta15
|
||||
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch0 -p1
|
||||
%patch4 -p1
|
||||
|
||||
sed -i -e 's|/etc/hddtemp.db|/usr/share/misc/hddtemp.db|' doc/hddtemp.8
|
||||
chmod -x contribs/analyze/*
|
||||
rm COPYING ; cp -p GPL-2 COPYING
|
||||
cp -p debian/changelog changelog.debian
|
||||
|
||||
|
||||
%build
|
||||
%configure --disable-dependency-tracking
|
||||
make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
install -Dpm 644 %{SOURCE1} $RPM_BUILD_ROOT/usr/share/misc/hddtemp.db
|
||||
install -Dpm 644 %{SOURCE2} $RPM_BUILD_ROOT%{_unitdir}/hddtemp.service
|
||||
install -Dpm 644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/hddtemp
|
||||
install -dm 755 $RPM_BUILD_ROOT%{_bindir}
|
||||
ln -s consolehelper $RPM_BUILD_ROOT%{_bindir}/hddtemp
|
||||
install -Dpm 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/hddtemp
|
||||
install -Dpm 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/security/console.apps/hddtemp
|
||||
%find_lang %{name}
|
||||
|
||||
|
||||
%post
|
||||
%systemd_post hddtemp.service
|
||||
|
||||
%preun
|
||||
%systemd_preun hddtemp.service
|
||||
|
||||
%postun
|
||||
%systemd_postun_with_restart hddtemp.service
|
||||
|
||||
|
||||
%files -f %{name}.lang
|
||||
%doc ChangeLog changelog.debian COPYING README TODO contribs/
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/hddtemp
|
||||
%config(noreplace) %{_sysconfdir}/pam.d/hddtemp
|
||||
%config(noreplace) %{_sysconfdir}/security/console.apps/hddtemp
|
||||
%{_unitdir}/hddtemp.service
|
||||
%{_bindir}/hddtemp
|
||||
%{_sbindir}/hddtemp
|
||||
%config(noreplace) /usr/share/misc/hddtemp.db
|
||||
%{_mandir}/man8/hddtemp.8*
|
||||
|
||||
%changelog
|
||||
* Tue Jul 7 2020 Dillon Chen <dillon.chen@turbolinux.com.cn> - 0.3-1.beta15
|
||||
- package from Fedora
|
||||
- Update Debian patch set to 0.3-beta15-53
|
||||
5
hddtemp.sysconfig
Normal file
5
hddtemp.sysconfig
Normal file
@ -0,0 +1,5 @@
|
||||
#
|
||||
# hddtemp(8) daemon options. If no disks are specified here, the service
|
||||
# will try to autodetect and start monitoring all of them.
|
||||
#
|
||||
HDDTEMP_OPTIONS="-l 127.0.0.1"
|
||||
BIN
hddtemp_0.3-beta15-53.diff.gz
Normal file
BIN
hddtemp_0.3-beta15-53.diff.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user