From 3fc1f9f1e44ad97b37291a5a986cd444e288c4b2 Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Mon, 12 Dec 2022 18:47:01 +0000 Subject: [PATCH] hddtemp: update to 0.4.3 --- .../system-tools-depends/hddtemp/package.mk | 7 +- ...ing-default-Language-PO-header-field.patch | 80 ++++ ...002-Allow-building-with-gettext-0-20.patch | 38 ++ .../hddtemp/patches/hddtemp-nvme.patch | 410 ------------------ 4 files changed, 122 insertions(+), 413 deletions(-) create mode 100644 packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0001-add-missing-default-Language-PO-header-field.patch create mode 100644 packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0002-Allow-building-with-gettext-0-20.patch delete mode 100644 packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-nvme.patch diff --git a/packages/addons/addon-depends/system-tools-depends/hddtemp/package.mk b/packages/addons/addon-depends/system-tools-depends/hddtemp/package.mk index 5057d18bd1..447d325f31 100644 --- a/packages/addons/addon-depends/system-tools-depends/hddtemp/package.mk +++ b/packages/addons/addon-depends/system-tools-depends/hddtemp/package.mk @@ -2,14 +2,15 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="hddtemp" -PKG_VERSION="e16aed6d0145d7ad8b3308dd0b9199fc701c0417" # Jul 6, 2010 -PKG_SHA256="5d5af74ba7449b6e56a8f872a0e10d654a512ed65d62beaef1575b0c1826d9f3" +PKG_VERSION="0.4.3" +PKG_SHA256="592322c64f0d5f035132249e3d051b752f5d24867514522a17285d5e72d21075" PKG_LICENSE="GPL" PKG_SITE="https://savannah.nongnu.org/projects/hddtemp" -PKG_URL="https://github.com/guzu/hddtemp/archive/${PKG_VERSION}.tar.gz" +PKG_URL="https://github.com/vitlav/hddtemp/archive/v${PKG_VERSION}.tar.gz" PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="A utility that gives you the temperature of your hard drive by reading S.M.A.R.T.." PKG_BUILD_FLAGS="-sysroot" +PKG_TOOLCHAIN="autotools" PKG_CONFIGURE_OPTS_TARGET="--with-db-path=/storage/.kodi/addons/virtual.system-tools/data/hddtemp.db" diff --git a/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0001-add-missing-default-Language-PO-header-field.patch b/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0001-add-missing-default-Language-PO-header-field.patch new file mode 100644 index 0000000000..7027ab124a --- /dev/null +++ b/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0001-add-missing-default-Language-PO-header-field.patch @@ -0,0 +1,80 @@ +commit ba91ffb6d96528fa2d449586f0757d1028cdaa6d +Author: Rudi Heitbaum +Date: Mon Dec 12 11:03:18 2022 +0000 + + add missing default Language PO header field + +diff --git a/po/de.po b/po/de.po +index 31d02c7..b0d8b7e 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -13,7 +13,7 @@ msgstr "" + "PO-Revision-Date: 2011-08-30 16:40+0200\n" + "Last-Translator: Vinzenz Vietzke \n" + "Language-Team: \n" +-"Language: \n" ++"Language: de_DE\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +diff --git a/po/fr.po b/po/fr.po +index 2af6500..433ced0 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -12,7 +12,7 @@ msgstr "" + "PO-Revision-Date: 2011-08-30 16:38+0200\n" + "Last-Translator: Aurelien Jarno \n" + "Language-Team: FRANCAIS \n" +-"Language: \n" ++"Language: fr_FR\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" +diff --git a/po/hddtemp.pot b/po/hddtemp.pot +index 40936d9..a3d9af8 100644 +--- a/po/hddtemp.pot ++++ b/po/hddtemp.pot +@@ -12,6 +12,7 @@ msgstr "" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" ++"Language: \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=CHARSET\n" + "Content-Transfer-Encoding: 8bit\n" +diff --git a/po/pt.po b/po/pt.po +index 8583dd6..23c0e49 100644 +--- a/po/pt.po ++++ b/po/pt.po +@@ -11,6 +11,7 @@ msgstr "" + "PO-Revision-Date: 2006-03-29 23:22+0000\n" + "Last-Translator: Miguel Figueiredo \n" + "Language-Team: Portuguese \n" ++"Language: pt_PT\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +diff --git a/po/ru.po b/po/ru.po +index 3d06da3..7ebceb0 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -11,6 +11,7 @@ msgstr "" + "PO-Revision-Date: 2003-03-08 16:42+0300\n" + "Last-Translator: Michael Shigorin \n" + "Language-Team: Russian \n" ++"Language: ru_RU\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=koi8-r\n" + "Content-Transfer-Encoding: 8bit\n" +diff --git a/po/sv.po b/po/sv.po +index d235e52..2729e59 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -11,6 +11,7 @@ msgstr "" + "PO-Revision-Date: 2005-11-02 19:03+0100\n" + "Last-Translator: Daniel Nylander \n" + "Language-Team: Swedish \n" ++"Language: sv_SV\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=iso-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" diff --git a/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0002-Allow-building-with-gettext-0-20.patch b/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0002-Allow-building-with-gettext-0-20.patch new file mode 100644 index 0000000000..d4fa3835db --- /dev/null +++ b/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-0002-Allow-building-with-gettext-0-20.patch @@ -0,0 +1,38 @@ +commit 12eb958f85084485a4c9768e595c64993996f4a6 +Author: Rudi Heitbaum +Date: Mon Dec 12 11:16:29 2022 +0000 + + Allow building with gettext ≥ 0.20 + + The use of AM_GNU_GETTEXT_VERSION in configure.ac instructs autopoint to + copy po/Makefile.in.in from the exact gettext version. It is fine if the + version of gettext installed on the system has the same minor version + number with the requested version, but it fails if you have a newer + version of gettext because of the mismatch between autoconf macros and + Makefile.in.in. + + *** error: gettext infrastructure mismatch: using a Makefile.in.in + from gettext version 0.19 but the autoconf macros are from gettext + version 0.20 + + Instead of specifying the exact version with AM_GNU_GETTEXT_VERSION, we + can use AM_GNU_GETTEXT_REQUIRE_VERSION to ask autopoint to simply use + the gettext version installed on the system to prevent the mismatch. + + This also bumps the version requirement on gettext to 0.19.6 because + AM_GNU_GETTEXT_REQUIRE_VERSION was added in this version. + +diff --git a/configure.ac b/configure.ac +index 6729c9f..d9c4128 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -26,7 +26,8 @@ AC_C_CONST + AC_STRUCT_TM + + dnl internationalization macros +-AM_GNU_GETTEXT_VERSION([0.18.1]) ++AM_GNU_GETTEXT_VERSION([0.19.6]) ++AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6]) + AM_GNU_GETTEXT([external]) + + dnl reasonable guesses for where stuff is installed diff --git a/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-nvme.patch b/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-nvme.patch deleted file mode 100644 index c5b542c797..0000000000 --- a/packages/addons/addon-depends/system-tools-depends/hddtemp/patches/hddtemp-nvme.patch +++ /dev/null @@ -1,410 +0,0 @@ -https://bugzilla.redhat.com/show_bug.cgi?id=1801116 - -Description Constantine Gavrilov 2020-02-10 10:09:18 UTC -Created attachment 1662111 [details] -Patch that adds NVMe Drives Support - -Description of problem: HDDTEMP cannot read temperature of MVME drives. - -All versions are affected. - -How reproducible: always (missing support) - -Steps to Reproduce: -1. Try to read temperature of NVME drive - -Actual results: -1. Error is reported (only SATA or SCSI drives supported). - -Expected results: -1. A temperature report would be appreciated, many GUI sensor frontends depend on HDDTEMP. - - -Additional info: -I have crated a patch that adds NVME drives support to HDDTEMP. - -diff -uNr hddtemp-0.3-beta15.old/src/hddtemp.c hddtemp-0.3-beta15/src/hddtemp.c ---- hddtemp-0.3-beta15.old/src/hddtemp.c 2020-02-03 14:23:19.781566750 +0200 -+++ hddtemp-0.3-beta15/src/hddtemp.c 2020-02-03 14:31:03.526209746 +0200 -@@ -61,6 +61,7 @@ - #include "utf8.h" - #include "sata.h" - #include "scsi.h" -+#include "nvme.h" - #include "db.h" - #include "hddtemp.h" - #include "backtrace.h" -@@ -87,6 +88,7 @@ - bus[BUS_SATA] = &sata_bus; - bus[BUS_ATA] = &ata_bus; - bus[BUS_SCSI] = &scsi_bus; -+ bus[BUS_NVME] = &nvme_bus; - } - - /******************************************************* -@@ -130,6 +132,8 @@ - return BUS_ATA; - else if(bus[BUS_SCSI]->probe(dsk->fd)) - return BUS_SCSI; -+ else if (bus[BUS_NVME]->probe(dsk->fd)) -+ return BUS_NVME; - else - return BUS_UNKNOWN; - } -diff -uNr hddtemp-0.3-beta15.old/src/hddtemp.h hddtemp-0.3-beta15/src/hddtemp.h ---- hddtemp-0.3-beta15.old/src/hddtemp.h 2020-02-03 14:23:19.781566750 +0200 -+++ hddtemp-0.3-beta15/src/hddtemp.h 2020-02-03 08:50:34.755411875 +0200 -@@ -35,7 +35,7 @@ - #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) - --enum e_bustype { ERROR = 0, BUS_UNKNOWN, BUS_SATA, BUS_ATA, BUS_SCSI, BUS_TYPE_MAX }; -+enum e_bustype { ERROR = 0, BUS_UNKNOWN, BUS_SATA, BUS_ATA, BUS_SCSI, BUS_NVME, BUS_TYPE_MAX }; - enum e_gettemp { - GETTEMP_ERROR, /* Error */ - GETTEMP_NOT_APPLICABLE, /* */ -diff -uNr hddtemp-0.3-beta15.old/src/Makefile.am hddtemp-0.3-beta15/src/Makefile.am ---- hddtemp-0.3-beta15.old/src/Makefile.am 2005-03-15 02:23:13.000000000 +0200 -+++ hddtemp-0.3-beta15/src/Makefile.am 2020-02-03 08:50:34.737411657 +0200 -@@ -13,7 +13,7 @@ - scsi.c scsi.h \ - scsicmds.c scsicmds.h \ - backtrace.c backtrace.h \ -- utf8.c utf8.h -+ utf8.c utf8.h nvme.o - - hddtemp_CFLAGS = -Wall -W -rdynamic - #hddtemp_CFLAGS = -Wall -fomit-frame-pointer -rdynamic -diff -uNr hddtemp-0.3-beta15.old/src/Makefile.in hddtemp-0.3-beta15/src/Makefile.in ---- hddtemp-0.3-beta15.old/src/Makefile.in 2005-10-17 21:20:28.000000000 +0200 -+++ hddtemp-0.3-beta15/src/Makefile.in 2020-02-03 08:50:34.790412300 +0200 -@@ -157,7 +157,7 @@ - scsi.c scsi.h \ - scsicmds.c scsicmds.h \ - backtrace.c backtrace.h \ -- utf8.c utf8.h -+ utf8.c utf8.h nvme.c - - - hddtemp_CFLAGS = -Wall -W -rdynamic -@@ -180,7 +180,7 @@ - hddtemp-hddtemp.$(OBJEXT) hddtemp-sata.$(OBJEXT) \ - hddtemp-satacmds.$(OBJEXT) hddtemp-scsi.$(OBJEXT) \ - hddtemp-scsicmds.$(OBJEXT) hddtemp-backtrace.$(OBJEXT) \ -- hddtemp-utf8.$(OBJEXT) -+ hddtemp-utf8.$(OBJEXT) hddtemp-nvme.$(OBJEXT) - hddtemp_OBJECTS = $(am_hddtemp_OBJECTS) - hddtemp_DEPENDENCIES = - hddtemp_LDFLAGS = -@@ -195,6 +195,7 @@ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-db.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-hddtemp.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-sata.Po \ -+@AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-nvme.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-satacmds.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-scsi.Po \ - @AMDEP_TRUE@ ./$(DEPDIR)/hddtemp-scsicmds.Po \ -@@ -257,6 +258,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-db.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-hddtemp.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-sata.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-nvme.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-satacmds.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-scsi.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hddtemp-scsicmds.Po@am__quote@ -@@ -416,6 +418,28 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -c -o hddtemp-sata.obj `if test -f 'sata.c'; then $(CYGPATH_W) 'sata.c'; else $(CYGPATH_W) '$(srcdir)/sata.c'; fi` - -+hddtemp-nvme.o: nvme.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -MT hddtemp-nvme.o -MD -MP -MF "$(DEPDIR)/hddtemp-nvme.Tpo" \ -+@am__fastdepCC_TRUE@ -c -o hddtemp-nvme.o `test -f 'nvme.c' || echo '$(srcdir)/'`nvme.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/hddtemp-nvme.Tpo" "$(DEPDIR)/hddtemp-nvme.Po"; \ -+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/hddtemp-nvme.Tpo"; exit 1; \ -+@am__fastdepCC_TRUE@ fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nvme.c' object='hddtemp-nvme.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/hddtemp-nvme.Po' tmpdepfile='$(DEPDIR)/hddtemp-nvme.TPo' @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -c -o hddtemp-nvme.o `test -f 'nvme.c' || echo '$(srcdir)/'`nvme.c -+ -+hddtemp-nvme.obj: nvme.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -MT hddtemp-nvme.obj -MD -MP -MF "$(DEPDIR)/hddtemp-nvme.Tpo" \ -+@am__fastdepCC_TRUE@ -c -o hddtemp-nvme.obj `if test -f 'nvme.c'; then $(CYGPATH_W) 'nvme.c'; else $(CYGPATH_W) '$(srcdir)/nvme.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/hddtemp-nvme.Tpo" "$(DEPDIR)/hddtemp-nvme.Po"; \ -+@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/hddtemp-nvme.Tpo"; exit 1; \ -+@am__fastdepCC_TRUE@ fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nvme.c' object='hddtemp-nvme.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/hddtemp-nvme.Po' tmpdepfile='$(DEPDIR)/hddtemp-nvme.TPo' @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -c -o hddtemp-nvme.obj `if test -f 'nvme.c'; then $(CYGPATH_W) 'nvme.c'; else $(CYGPATH_W) '$(srcdir)/nvme.c'; fi` -+ - hddtemp-satacmds.o: satacmds.c - @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(hddtemp_CFLAGS) $(CFLAGS) -MT hddtemp-satacmds.o -MD -MP -MF "$(DEPDIR)/hddtemp-satacmds.Tpo" \ - @am__fastdepCC_TRUE@ -c -o hddtemp-satacmds.o `test -f 'satacmds.c' || echo '$(srcdir)/'`satacmds.c; \ -diff -uNr hddtemp-0.3-beta15.old/src/nvme.c hddtemp-0.3-beta15/src/nvme.c ---- hddtemp-0.3-beta15.old/src/nvme.c 1970-01-01 02:00:00.000000000 +0200 -+++ hddtemp-0.3-beta15/src/nvme.c 2020-02-03 15:36:20.217181895 +0200 -@@ -0,0 +1,234 @@ -+/* -+ * Copyright (C) 2020 Constantine Gavrilov -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include "hddtemp.h" -+#include -+#include -+#include -+#include -+#include -+ -+struct nvme_smart_log { -+ unsigned char critical_warning; -+ unsigned char temperature[2]; -+ unsigned char avail_spare; -+ unsigned char spare_thresh; -+ unsigned char percent_used; -+ unsigned char rsvd6[26]; -+ unsigned char data_units_read[16]; -+ unsigned char data_units_written[16]; -+ unsigned char host_reads[16]; -+ unsigned char host_writes[16]; -+ unsigned char ctrl_busy_time[16]; -+ unsigned char power_cycles[16]; -+ unsigned char power_on_hours[16]; -+ unsigned char unsafe_shutdowns[16]; -+ unsigned char media_errors[16]; -+ unsigned char num_err_log_entries[16]; -+ unsigned int warning_temp_time; -+ unsigned int critical_comp_time; -+ unsigned short temp_sensor[8]; -+ unsigned int thm_temp1_trans_count; -+ unsigned int thm_temp2_trans_count; -+ unsigned int thm_temp1_total_time; -+ unsigned int thm_temp2_total_time; -+ unsigned char rsvd232[280]; -+}; -+ -+struct nvme_id_power_state { -+ unsigned short max_power; // centiwatts -+ unsigned char rsvd2; -+ unsigned char flags; -+ unsigned int entry_lat; // microseconds -+ unsigned int exit_lat; // microseconds -+ unsigned char read_tput; -+ unsigned char read_lat; -+ unsigned char write_tput; -+ unsigned char write_lat; -+ unsigned short idle_power; -+ unsigned char idle_scale; -+ unsigned char rsvd19; -+ unsigned short active_power; -+ unsigned char active_work_scale; -+ unsigned char rsvd23[9]; -+}; -+ -+struct nvme_id_ctrl { -+ unsigned short vid; -+ unsigned short ssvid; -+ char sn[20]; -+ char mn[40]; -+ char fr[8]; -+ unsigned char rab; -+ unsigned char ieee[3]; -+ unsigned char cmic; -+ unsigned char mdts; -+ unsigned short cntlid; -+ unsigned int ver; -+ unsigned int rtd3r; -+ unsigned int rtd3e; -+ unsigned int oaes; -+ unsigned int ctratt; -+ unsigned char rsvd100[156]; -+ unsigned short oacs; -+ unsigned char acl; -+ unsigned char aerl; -+ unsigned char frmw; -+ unsigned char lpa; -+ unsigned char elpe; -+ unsigned char npss; -+ unsigned char avscc; -+ unsigned char apsta; -+ unsigned short wctemp; -+ unsigned short cctemp; -+ unsigned short mtfa; -+ unsigned int hmpre; -+ unsigned int hmmin; -+ unsigned char tnvmcap[16]; -+ unsigned char unvmcap[16]; -+ unsigned int rpmbs; -+ unsigned short edstt; -+ unsigned char dsto; -+ unsigned char fwug; -+ unsigned short kas; -+ unsigned short hctma; -+ unsigned short mntmt; -+ unsigned short mxtmt; -+ unsigned int sanicap; -+ unsigned char rsvd332[180]; -+ unsigned char sqes; -+ unsigned char cqes; -+ unsigned short maxcmd; -+ unsigned int nn; -+ unsigned short oncs; -+ unsigned short fuses; -+ unsigned char fna; -+ unsigned char vwc; -+ unsigned short awun; -+ unsigned short awupf; -+ unsigned char nvscc; -+ unsigned char rsvd531; -+ unsigned short acwu; -+ unsigned char rsvd534[2]; -+ unsigned int sgls; -+ unsigned char rsvd540[228]; -+ char subnqn[256]; -+ unsigned char rsvd1024[768]; -+ unsigned int ioccsz; -+ unsigned int iorcsz; -+ unsigned short icdoff; -+ unsigned char ctrattr; -+ unsigned char msdbd; -+ unsigned char rsvd1804[244]; -+ struct nvme_id_power_state psd[32]; -+ unsigned char vs[1024]; -+}; -+ -+#include -+ -+static int nvme_probe(int fd) -+{ -+ return (ioctl(fd, NVME_IOCTL_ID, NULL) > 0); -+} -+ -+static bool nvme_read_smart_log(int fd, struct nvme_smart_log *smart_log) -+{ -+ unsigned int size = sizeof(*smart_log); -+ struct nvme_passthru_cmd pt = { 0 }; -+ -+ memset(smart_log, 0, size); -+ pt.opcode = 0x02; -+ pt.nsid = 0xffffffff; -+ pt.addr = (uint64_t)smart_log; -+ pt.data_len = size; -+ pt.cdw10 = 0x02 | (((size / 4) - 1) << 16); -+ if (ioctl(fd, NVME_IOCTL_ADMIN_CMD, &pt) < 0) -+ return false; -+ return true; -+} -+ -+static bool nvme_read_id_ctrl(int fd, struct nvme_id_ctrl *id) -+{ -+ memset(id, 0, sizeof(*id)); -+ struct nvme_passthru_cmd pt = { 0 }; -+ pt.opcode = 0x06; -+ pt.nsid = 0; -+ pt.addr = (uint64_t)id; -+ pt.data_len = sizeof(*id); -+ pt.cdw10 = 0x01; -+ if (ioctl(fd, NVME_IOCTL_ADMIN_CMD, &pt) < 0) -+ return false; -+ return true; -+} -+ -+ -+const char *nvme_model(int fd) -+{ -+ struct nvme_id_ctrl id; -+ unsigned int i; -+ char *p; -+ const unsigned int name_len = sizeof(id.mn); -+ -+ if (nvme_read_id_ctrl(fd, &id) == false) -+ return "NVME Disk"; -+ id.mn[name_len-1] = '\0'; -+ for (i = name_len - 2; i > 0; i--) { -+ if (id.mn[i] == ' ') -+ id.mn[i] = '\0'; -+ else -+ break; -+ } -+ p = id.mn; -+ for (i = 0; i < name_len; i++) { -+ if (id.mn[i] == ' ') -+ id.mn[i] = '\0'; -+ else -+ break; -+ } -+ p = strdup(p); -+ if (!p || strlen(p) == 0) -+ return "NVME Disk"; -+ for (i = 0; p[i]; i++) { -+ if (p[i] < 0x20 || p[i] > 0x7e) -+ p[i] = '?'; -+ } -+ return p; -+} -+ -+enum e_gettemp nvme_get_temperature(struct disk *disk) -+{ -+ struct nvme_smart_log smart_log; -+ if (nvme_read_smart_log(disk->fd, &smart_log) == false) -+ return GETTEMP_UNKNOWN; -+ disk->value = smart_log.temperature[0] + (smart_log.temperature[1] << 8) - 273; -+ return GETTEMP_KNOWN; -+} -+ -+struct bustype nvme_bus = { -+ "NVME", -+ nvme_probe, -+ nvme_model, -+ nvme_get_temperature -+}; -+ -+ -diff -uNr hddtemp-0.3-beta15.old/src/nvme.h hddtemp-0.3-beta15/src/nvme.h ---- hddtemp-0.3-beta15.old/src/nvme.h 1970-01-01 02:00:00.000000000 +0200 -+++ hddtemp-0.3-beta15/src/nvme.h 2020-02-03 08:08:03.708300652 +0200 -@@ -0,0 +1,25 @@ -+/* -+ * Copyright (C) 2020 Constnatine Gavrilov -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef _HDDTEMP_NVME_H_ -+#define _HDDTEMP_NVME_H_ -+ -+extern struct bustype nvme_bus; -+ -+#endif -+