File smartmontools-update-smart-drivedb.patch of Package smartmontools

Index: smartmontools-7.5/configure.ac
===================================================================
--- smartmontools-7.5.orig/configure.ac
+++ smartmontools-7.5/configure.ac
@@ -733,12 +733,8 @@ AC_SUBST([os_nisdomainname])
 AC_SUBST([os_man_filter])
 AC_SUBST([os_win32_manifest])
 
-# Create drivedb.h update branch name from version: 5.41[.X] -> RELEASE_5_41_DRIVEDB
-DRIVEDB_BRANCH=`echo "$drivedb_version" | sed 's,^\([[0-9]]*\.[[0-9]]*\)\..*$,\1,' \
-                | sed -n 's,^\([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
-if test -z "$DRIVEDB_BRANCH"; then
-  AC_MSG_ERROR([Unable to create DRIVEDB_BRANCH for version: $drivedb_version])
-fi
+# drivedb.h update branch
+DRIVEDB_BRANCH=$smartmontools_drivedb_version
 AC_SUBST([DRIVEDB_BRANCH])
 
 # Enable platform-specific makefile sections
Index: smartmontools-7.5/configure
===================================================================
--- smartmontools-7.5.orig/configure
+++ smartmontools-7.5/configure
@@ -7813,12 +7813,8 @@ fi
 
 
 
-# Create drivedb.h update branch name from version: 5.41[.X] -> RELEASE_5_41_DRIVEDB
-DRIVEDB_BRANCH=`echo "$drivedb_version" | sed 's,^\([0-9]*\.[0-9]*\)\..*$,\1,' \
-                | sed -n 's,^\([0-9][0-9]*\)\.\([0-9][0-9]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
-if test -z "$DRIVEDB_BRANCH"; then
-  as_fn_error $? "Unable to create DRIVEDB_BRANCH for version: $drivedb_version" "$LINENO" 5
-fi
+# drivedb.h update branch
+DRIVEDB_BRANCH=$smartmontools_drivedb_version
 
 
 # Enable platform-specific makefile sections
Index: smartmontools-7.5/update-smart-drivedb.in
===================================================================
--- smartmontools-7.5.orig/update-smart-drivedb.in
+++ smartmontools-7.5/update-smart-drivedb.in
@@ -4,12 +4,10 @@
 #
 # Home page of code is: https://www.smartmontools.org
 #
-# Copyright (C) 2010-22 Christian Franke
+# Copyright (C) 2010-25 Christian Franke
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 #
-# $Id: update-smart-drivedb.in 5699 2025-04-25 14:45:35Z chrfranke $
-#
 
 set -e
 
@@ -22,6 +20,7 @@ exec_prefix="@exec_prefix@"
 sbindir="@sbindir@"
 datarootdir="@datarootdir@"
 datadir="@datadir@"
+# shellcheck disable=SC2034
 localstatedir="@localstatedir@"
 drivedbinstdir="@drivedbinstdir@"
 drivedbdir="@drivedbdir@"
@@ -64,10 +63,8 @@ Usage: $myname [OPTIONS] [DESTFILE]
                     [default: first one found in $pathinfo]
   -u, --url-of LOCATION
                     Use URL of LOCATION for download:
-                      github (GitHub mirror of SVN repository)
-                      sf (Sourceforge code browser)
-                      svn (SVN repository) [default]
-                      svni (SVN repository via HTTP instead of HTTPS)
+                      github (upstream git repository) [default]
+                      svn (previous SVN repository)
                       trac (Trac code browser)
   --url URL         Download from URL
   --file FILE       Copy from local FILE
@@ -78,8 +75,8 @@ EOF
                     '--no-verify --file $drivedbinstdir/drivedb.h'
 EOF
   cat <<EOF
-  --trunk           Download from SVN trunk (requires '--no-verify')
-  --branch X.Y      Download from branches/RELEASE_X_Y_DRIVEDB
+  --main            Download from main branch (requires '--no-verify')
+  --branch X.Y      Download from branch X.Y
   --cacert FILE     Use CA certificates from FILE to verify the peer
   --capath DIR      Use CA certificate files from DIR to verify the peer
   --insecure        Don't abort download if certificate verification fails
@@ -92,8 +89,8 @@ EOF
   -h, --help        Print this help text
 
 Updates $default_drivedb
-or DESTFILE from branches/$default_branch of smartmontools
-SVN repository.
+or DESTFILE from branch 'drivedb/$default_branch' of smartmontools git
+repository.
 EOF
 }
 
@@ -127,15 +124,12 @@ warning()
 selecturl()
 {
   case $1 in
-    github)  # https://github.com/smartmontools/smartmontools/raw/origin/$branch/smartmontools/drivedb.h
-             # https://github.com/smartmontools/smartmontools/raw/master/smartmontools/drivedb.h
-          # redirected to:
-          url='https://raw.githubusercontent.com/smartmontools/smartmontools/master/smartmontools/drivedb.h' ;;
-    sf)   url='https://sourceforge.net/p/smartmontools/code/HEAD/tree/trunk/smartmontools/drivedb.h?format=raw' ;;
-    svn)  url='https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
-    svni) url='http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
-    trac) url='https://www.smartmontools.org/export/HEAD/trunk/smartmontools/drivedb.h' ;;
-    *) error "$1: is none of 'github sf svn svni trac'"
+    github) # https://github.com/smartmontools/smartmontools/raw/refs/heads/main/src/drivedb.h
+            # redirected to:
+            url='https://raw.githubusercontent.com/smartmontools/smartmontools/refs/heads/main/src/drivedb.h' ;;
+    svn)    url='https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools/drivedb.h' ;;
+    trac)   url='https://www.smartmontools.org/browser/src/drivedb.h?format=raw&rev=main' ;;
+    *) error "$1: is none of 'github svn trac'"
   esac
 }
 
@@ -197,6 +191,17 @@ vrun2()
   return $rc
 }
 
+# rm_f FILE...
+rm_f()
+{
+  while [ $# -ne 0 ]; do
+    if [ -f "$1" ]; then
+      vrun rm -f "$1"
+    fi
+    shift
+  done
+}
+
 # download URL FILE
 download()
 {
@@ -231,15 +236,6 @@ download()
       vrun2 "$f" "$tool" -stderr -noredir -source "$u" || rc=$?
       ;;
 
-    svn*)
-      vrun "$tool" $q export \
-        --non-interactive --no-auth-cache \
-        ${cacert:+--config-option "servers:global:ssl-trust-default-ca=no"} \
-        ${cacert:+--config-option "servers:global:ssl-authority-files=$cacert"} \
-        ${insecure:+--trust-server-cert} \
-        "$u" "$f" || rc=$?
-      ;;
-
     fetch*) # FreeBSD
       vrun "$tool" $q --no-redirect \
         ${cacert:+--ca-cert "$cacert"} \
@@ -288,115 +284,11 @@ check_file()
   return 0
 }
 
-# unexpand_svn_id < INFILE > OUTFILE
-unexpand_svn_id()
-{
-  sed 's,\$''Id'': drivedb\.h [0-9][0-9]* 2[-0-9]* [012][:0-9]*Z [a-z][a-z0-9]* \$,$''Id''$,'
-}
-
 # selectkey BRANCH
 selectkey()
 {
   case $1 in
-    RELEASE_5_4[0-3]_DRIVEDB|RELEASE_6_[0-6]_DRIVEDB)
-# Smartmontools Signing Key (ext. to 2024) <smartmontools-database@listi.jpberlin.de>
-# Smartmontools Signing Key (through 2018) <smartmontools-database@listi.jpberlin.de>
-# Smartmontools Signing Key (through 2018) <smartmontools-database@lists.sourceforge.net>
-# Key ID DFD22559
-public_key="\
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-1TC5jSVOIEqOE4TwzRz1Y/dfqSU=
-=3Lcg
------END PGP PUBLIC KEY BLOCK-----
-"
-      ;;
-
-    RELEASE_7_[0235]_DRIVEDB)
+    7.[0235])
 # Smartmontools Signing Key (through 2025) <smartmontools-database@listi.jpberlin.de>
 # Smartmontools Signing Key (through 2020) <smartmontools-database@listi.jpberlin.de>
 # Key ID 721042C5
@@ -488,7 +380,7 @@ Q/qvYlwkbKOdlahjoHrFlkhADSBaO9N1OZp3OYDj
 "
       ;;
 
-    *) error "No known public key for branches/$1" ;;
+    *) error "No known public key for branch '$1'" ;;
   esac
 }
 
@@ -542,31 +434,36 @@ gpg_verify()
 # get_db_version DRIVEDB > VERSION
 get_db_version()
 {
-  local r v x
-  x=`sed -n '/^[ {]*"VERSION: *[^"]*"/{
-       s,^[ {]*"VERSION: \([1-9][./0-9]* [^"]*\)".*$,\1,p
+  local v
+  v=`sed -n '/^[ {]*"VERSION: .*"/{
+       s,^[ {]*"VERSION: \([1-9][./0-9]*\)[ "].*$,\1,p
        q
      }' "$1"` || return 1
-  v=${x%% *}
   test -n "$v" || return 0
-  if [ "${v%/*}" = "$v" ]; then # trunk: get rev from expanded SVN-Id
-    r=`echo "$x" | sed -n 's,^[^$]*\$''Id: drivedb\.h \([1-9][0-9]*\) .*$,\1,p'`
-    test -n "$r" || r="?"
-    v="$v/$r"
-  fi
+  test "${v%/*}" != "$v" || v="$v/?"
   echo "$v"
 }
 
-# mv_all PREFIX OLD NEW
-mv_all()
+# drivedb_mv OLD NEW
+drivedb_mv()
 {
-  mv -f "${1}${2}" "${1}${3}" && \
-  mv -f "${1}${2}.raw" "${1}${3}.raw" && \
-  if [ -f "${1}${2}.raw.asc" ]; then
-    mv -f "${1}${2}.raw.asc" "${1}${3}.raw.asc"
-  else
-    rm -f "${1}${3}.raw.asc"
-  fi
+  local ext nf of
+  for ext in "" ".asc" ".raw" ".raw.asc"; do
+    of="${drivedb}${1}${ext}"
+    nf="${drivedb}${2}${ext}"
+    if [ -f "$of" ]; then
+      vrun mv -f "$of" "$nf"
+    else
+      rm_f "$nf"
+    fi
+  done
+}
+
+# drivedb_error "MESSAGE"
+drivedb_error()
+{
+  drivedb_mv ".new" ".error"
+  error "${drivedb}.error${1}"
 }
 
 # Parse options
@@ -578,7 +475,7 @@ file=
 quiet=
 q="-q"
 dryrun=
-trunk=
+main=
 branch=$default_branch
 cacert=
 capath=
@@ -624,13 +521,16 @@ while true; do case $1 in
   --dryrun)
     dryrun=t ;;
 
-  --trunk)
-    trunk=t ;;
+  --main)
+    main=t ;;
 
   --branch)
     check_optarg "$@"; shift
-    branch=`echo "$1" | sed -n 's,^\([567]\)\.\([0-9][0-9]*\)$,RELEASE_\1_\2_DRIVEDB,p'`
-    test -n "$branch" || error "invalid branch version '$1'" ;;
+    branch=$1
+    case $branch in
+      5.4[0-3]|6.[0-6]|7.[0235]) ;;
+      *) error "invalid branch '$branch'" ;;
+    esac ;;
 
   --cacert)
     check_optarg "$@"; shift
@@ -680,14 +580,26 @@ esac
 # Check selected source
 case "${url_of:+url_of}${url:+url}${file:+file}" in
   ''|url_of)
-    test -n "$url_of" || url_of=svn
+    test -n "$url_of" || url_of=github
     selecturl "$url_of"
-    if [ -z "$trunk" ]; then # select branch
-      url=`echo "$url" | sed -e "s,/trunk/,/branches/$branch/," \
-                             -e "s,/master/,/origin/$branch/,"`
-    elif [ -z "$no_verify" ]; then
-      error "'--trunk' requires '--no-verify'"
-    fi ;;
+    case $url in
+      */main/*|*rev=main*)
+        if [ -z "$main" ]; then
+          url=`echo "$url" | sed -e "s,/main/,/drivedb/$branch/," \
+                                 -e "s,rev=main,rev=drivedb/$branch,"`
+          case $branch in
+            [567].*) url=`echo "$url" | sed -e 's,/src/,/smartmontools/,'` ;;
+          esac
+        elif [ -z "$no_verify" ]; then
+          error "'--main' requires '--no-verify'"
+        fi
+        ;;
+      */trunk/*)
+        test -z "$main" || error "'--main' is not supported with '-u svn'"
+        url=`echo "$url" | sed -e "s,/trunk/,/branches/RELEASE_${branch}_DRIVEDB/," \
+                               -e 's,_\([0-9]*\)\.\([0-9]*\)_,_\1_\2_,'`;;
+      *) error "$url: invalid URL (internal)" ;;
+    esac ;;
   url)
     test -z "`echo "$url" | sed -e 's,^[a-z][a-z0-9]*:[^ ][^ ]*$,,'`" \
     || error "$url: Invalid URL" ;;
@@ -697,12 +609,23 @@ esac
 
 # Determine path of signature file
 file_asc=
+file_raw_asc=
 url_asc=
-if [ -z "$no_verify" ]; then case $url in
-  '')   file_asc="$file.raw.asc" ;;
-  *\?*) url_asc=`echo "$url" | sed 's,?,.raw.asc?,'` ;;
-  *)    url_asc="$url.raw.asc" ;;
-esac; fi
+if [ -z "$no_verify" ]; then
+  if [ -n "$url" ]; then
+    case $branch in
+      [567].*) raw=".raw" ;;
+      *) raw= ;;
+    esac
+    case $url in
+      *\?*) url_asc=`echo "$url" | sed "s,?,$raw.asc?,"` ;;
+      *)    url_asc="$url$raw.asc" ;;
+    esac
+  else
+    file_asc="$file.asc"
+    file_raw_asc="$file.raw.asc"
+  fi
+fi
 
 if [ -z "$file" ]; then
   if [ -z "$tool" ]; then
@@ -727,17 +650,6 @@ if [ -z "$file" ]; then
 fi
 
 # Check option compatibility
-case "$tool:$url_of" in
-  svn:svn*) ;;
-  svn:*) error "'-t svn' requires '-u svn' or '-u svni'" ;;
-esac
-case "$tool:${capath:+set}" in
-  svn:set) warning "'--capath' is ignored if '-t svn' is used" ;;
-esac
-case "$url_of:$insecure" in
-  svni:t) insecure= ;;
-  svni:*) error "'-u svni' requires '--insecure'" ;;
-esac
 case "$tool:$insecure" in
   lynx:t) warning "'--insecure' is ignored if '-t lynx' is used" ;;
 esac
@@ -768,7 +680,7 @@ usageerr=
 tmpdir=`dirname "$drivedb"`
 
 # Remove possible garbage from last download
-test -n "$dryrun" || rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc" || exit 1
+rm_f "$drivedb.new" "$drivedb.new.asc" "$drivedb.new.raw" "$drivedb.new.raw.asc" || exit 1
 
 if [ -n "$url" ]; then
   # Download
@@ -776,17 +688,17 @@ if [ -n "$url" ]; then
   rc=0
   download "$url" "$drivedb.new" || rc=$?
   if [ $rc != 0 ]; then
-    rm -f "$drivedb.new"
+    rm_f "$drivedb.new"
     error "drivedb.h: download failed ($tool: exit $rc)"
   fi
 
   if [ -n "$url_asc" ]; then
-    vecho "Download drivedb.h.raw.asc with $tool"
+    vecho "Download drivedb.h.asc with $tool"
     rc=0
-    download "$url_asc" "$drivedb.new.raw.asc" || rc=$?
+    download "$url_asc" "$drivedb.new.asc" || rc=$?
     if [ $rc != 0 ]; then
-      rm -f "$drivedb.new" "$drivedb.new.raw.asc"
-      error "drivedb.h.raw.asc: download failed ($tool: exit $rc) ('--no-verify' to ignore)"
+      rm_f "$drivedb.new" "$drivedb.new.asc"
+      error "drivedb.h.asc: download failed ($tool: exit $rc) ('--no-verify' to ignore)"
     fi
   fi
 else
@@ -794,16 +706,20 @@ else
   if [ ! -f "$file" ]; then
     error "$file: file not found"
   fi
-  if [ -n "$file_asc" ] && [ ! -f "$file_asc" ]; then
-    error "$file_asc: file not found ('--no-verify' to ignore)"
+  if [ -n "$file_asc" ]; then
+    if [ ! -f "$file_asc" ]; then
+      test -f "$file_raw_asc" \
+      || error "$file_asc, $file_raw_asc: file not found ('--no-verify' to ignore)"
+      file_asc=$file_raw_asc
+    fi
   fi
 
   if ! vrun cp "$file" "$drivedb.new"; then
     error "$file: copy failed"
   fi
   if [ -n "$file_asc" ]; then
-    if ! vrun cp "$file_asc" "$drivedb.new.raw.asc"; then
-      rm -f "$drivedb.new"
+    if ! vrun cp "$file_asc" "$drivedb.new.asc"; then
+      rm_f "$drivedb.new"
       error "$file_asc: copy failed"
     fi
   fi
@@ -812,96 +728,65 @@ fi
 test -z "$dryrun" || exit 0
 
 # Check files, adjust timestamps and permissions
-if ! errmsg=`check_file "$drivedb.new" '/' 10000 1000000`; then
-  rm -f "$drivedb.new.raw.asc"
-  mv -f "$drivedb.new" "$drivedb.error"
-  error "$drivedb.error: $errmsg"
-fi
+errmsg=`check_file "$drivedb.new" '/' 10000 1000000` \
+|| drivedb_error ": $errmsg"
 touch "$drivedb.new"
 chmod 0644 "$drivedb.new"
 
-if [ -f "$drivedb.new.raw.asc" ]; then
-  if ! errmsg=`check_file "$drivedb.new.raw.asc" '-' 200 2000`; then
-    rm -f "$drivedb.new"
-    mv -f "$drivedb.new.raw.asc" "$drivedb.error.raw.asc"
-    error "$drivedb.error.raw.asc: $errmsg"
-  fi
-  touch "$drivedb.new.raw.asc"
-  chmod 0644 "$drivedb.new.raw.asc"
+if [ -f "$drivedb.new.asc" ]; then
+  errmsg=`check_file "$drivedb.new.asc" '-' 200 2000` \
+  || drivedb_error ".asc: $errmsg"
+  touch "$drivedb.new.asc"
+  chmod 0644 "$drivedb.new.asc"
 fi
 
-# Create raw file with unexpanded SVN Id
-# (This assumes newlines are LF and not CR/LF)
-unexpand_svn_id < "$drivedb.new" > "$drivedb.new.raw"
-chmod 0644 "$drivedb.new.raw"
-
 # Check whether installed file is identical
-equal=
-if [ -f "$drivedb" ]; then
-  if [ ! -f "$drivedb.raw" ]; then
-    # Create missing raw file
-    unexpand_svn_id < "$drivedb" > "$drivedb.raw"
-    chmod 0644 "$drivedb.raw"
-  fi
-  # Ignore missing Id keyword expansion in new file
-  if    cmp "$drivedb.raw" "$drivedb.new.raw" >/dev/null 2>&1 \
-     && {   cmp "$drivedb"     "$drivedb.new" >/dev/null 2>&1 \
-         || cmp "$drivedb.raw" "$drivedb.new" >/dev/null 2>&1; }
-  then
-    equal=t
-  fi
-fi
+equal=t
+cmp "$drivedb" "$drivedb.new" >/dev/null 2>&1 || equal=
 
 if [ -z "$no_verify" ]; then
-  # Verify raw file
-  if ! gpg_verify "$drivedb.new.raw.asc" "$drivedb.new.raw"; then
-    mv_all "$drivedb" ".new" ".error"
+  # Verify new file
+  if ! gpg_verify "$drivedb.new.asc" "$drivedb.new"; then
     test -z "$equal" \
     || warning "$drivedb: *** installed file is identical to broken new file ***"
-    error "$drivedb.error.raw: *** BAD signature or outdated key ***"
+    drivedb_error ": *** BAD signature or outdated key ***"
   fi
 fi
 
 # Get version
 newver=`get_db_version "$drivedb.new"`
 if [ -z "$newver" ]; then
-  if [ -z "$force" ]; then
-    mv_all "$drivedb" ".new" ".error"
-    error "$drivedb.error: no VERSION information found ('--force' to ignore)"
-  fi
+  test -n "$force" \
+  || drivedb_error ": no VERSION information found ('--force' to ignore)"
   newver="?/?"
 elif [ "${newver##*/}" = "?" ]; then
-  if [ -z "$trunk" ]; then
-    mv_all "$drivedb" ".new" ".error"
-    error "$drivedb.error: VERSION information is incomplete ('--trunk' to ignore)"
-  fi
+  test -n "$main" \
+  || drivedb_error ": VERSION information is incomplete ('--main' to ignore)"
 fi
 
 if [ "$smartctl" != "-" ]; then
   # Check syntax
-  if ! "$smartctl" -B "$drivedb.new" -P showall >/dev/null; then
-    mv_all "$drivedb" ".new" ".error"
-    error "$drivedb.error: rejected by $smartctl, probably no longer compatible"
-  fi
+  "$smartctl" -B "$drivedb.new" -P showall >/dev/null \
+  || drivedb_error ": rejected by $smartctl, probably no longer compatible"
   vecho "$smartctl: syntax OK"
 fi
 
 # Always install if missing
 rm -f "$drivedb.lastcheck"
 if [ ! -f "$drivedb" ]; then
-  mv_all "$drivedb" ".new" ""
+  drivedb_mv ".new" ""
   iecho "$drivedb $newver newly installed${no_verify:+ (NOT VERIFIED)}"
   exit 0
 fi
 
 # Keep old file if identical
 if [ -n "$equal" ]; then
-  if    [ -f "$drivedb.new.raw.asc" ] \
-     && ! cmp "$drivedb.new.raw.asc" "$drivedb.raw.asc" >/dev/null 2>&1; then
-    mv -f "$drivedb.new.raw.asc" "$drivedb.raw.asc"
-    iecho "$drivedb.raw.asc $newver updated"
+  if    [ -f "$drivedb.new.asc" ] \
+     && ! cmp "$drivedb.new.asc" "$drivedb.asc" >/dev/null 2>&1; then
+    vrun mv -f "$drivedb.new.asc" "$drivedb.asc"
+    iecho "$drivedb.asc $newver updated"
   fi
-  rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc"
+  rm_f "$drivedb.new" "$drivedb.new.asc" "$drivedb.raw" "$drivedb.raw.asc"
   touch "$drivedb.lastcheck"
   iecho "$drivedb $newver is already up to date${no_verify:+ (NOT VERIFIED)}"
   exit 0
@@ -913,12 +798,12 @@ test -n "$oldver" || oldver="?/?"
 if    [ "${newver##*/}" = "?" ] \
    || [ "${oldver##*/}" = "?" ] \
    || [ "${newver%/*}" != "${oldver%/*}" ]; then
-  # Always install from trunk or other branch
+  # Always install if from main or other branch
   updmsg="replaced with"
 elif [ "${newver##*/}" -lt "${oldver##*/}" ]; then
   # Install older file only if '--force' is used
   if [ -z "$force" ]; then
-    rm -f "$drivedb.new" "$drivedb.new.raw" "$drivedb.new.raw.asc"
+    rm_f "$drivedb.new" "$drivedb.new.asc"
     iecho "$drivedb $oldver not downgraded to $newver ('--force' to override)"
     exit 0
   fi
@@ -927,6 +812,6 @@ else
   updmsg="updated to"
 fi
 
-mv_all "$drivedb" "" ".old"
-mv_all "$drivedb" ".new" ""
+drivedb_mv "" ".old"
+drivedb_mv ".new" ""
 iecho "$drivedb $oldver $updmsg $newver${no_verify:+ (NOT VERIFIED)}"
Index: smartmontools-7.5/update-smart-drivedb.8.in
===================================================================
--- smartmontools-7.5.orig/update-smart-drivedb.8.in
+++ smartmontools-7.5/update-smart-drivedb.8.in
@@ -1,11 +1,9 @@
 .ig
 Copyright (C) 2013 Hannes von Haugwitz <hannes@vonhaugwitz.com>
-Copyright (C) 2014-23 Christian Franke
+Copyright (C) 2014-25 Christian Franke
 
 SPDX-License-Identifier: GPL-2.0-or-later
 
-$Id: update-smart-drivedb.8.in 5605 2024-03-29 17:12:50Z chrfranke $
-
 ..
 .\" Macros borrowed from pages generated with Pod::Man
 .de Sp \" Vertical space (when we can't use .PP)
@@ -25,7 +23,7 @@ $Id: update-smart-drivedb.8.in 5605 2024
 .\" Use groff extension \(aq (apostrophe quote, ASCII 0x27) if possible
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
-.TH UPDATE-SMART-DRIVEDB 8 "CURRENT_SVN_DATE" "CURRENT_SVN_VERSION" "SMART Monitoring Tools"
+.TH UPDATE-SMART-DRIVEDB 8 "@SMARTMONTOOLS_GIT_REV_DATE@" "smartmontools-@SMARTMONTOOLS_GIT_VER_DESC@" "SMART Monitoring Tools"
 .SH NAME
 update-smart-drivedb \- update smartmontools drive database
 .Sp
@@ -40,17 +38,20 @@ update-smart-drivedb \- update smartmont
 .\"! It does not contain info specific to other platforms.]
 .\"! .PP
 .\" %ENDIF NOT OS ALL
+.PP
+[NEW EXPERIMENTAL UPDATE-SMART-DRIVEDB 8.0 CHANGE]
+This tool has been considerably modified due to the move of smartmontools
+from SourceForge SVN to GitHub.
+.PP
 .B update-smart-drivedb
 updates
 .B /usr/local/var/lib/smartmontools/drivedb.h
 or
 .I DESTFILE
-from branches/RELEASE_6_0_DRIVEDB of smartmontools SVN repository.
-.PP
+from branch 'drivedb/7.5' of smartmontools git repository.
 The tools used for downloading are either
 .BR curl (1),
 .BR wget (1),
-.BR lynx (1),
 .\" %IF OS FreeBSD
 .BR fetch (1)
 [FreeBSD only],
@@ -60,13 +61,13 @@ The tools used for downloading are eithe
 [OpenBSD only],
 .\" %ENDIF OS OpenBSD
 or
-.BR svn (1).
+.BR lynx (1).
 .PP
 The downloaded file is verified with OpenPGP/GPG key ID 721042C5.
 The public key block is included in the script.
 .PP
-The old file is kept if the downloaded file is identical (ignoring
-the differences in Id string) otherwise it is moved to
+The old file is kept if the downloaded file is identical, otherwise it is
+moved to
 .BR drivedb.h.old .
 .PP
 The old file is also kept if the downloaded file reports an older version
@@ -87,14 +88,14 @@ The default is
 .B \-t [DIR/]TOOL, \-\-tool [DIR/]TOOL
 Use TOOL for download.
 TOOL is one of:
-.I curl wget lynx
+.I curl wget
 .\" %IF OS FreeBSD
 .I fetch
 .\" %ENDIF OS FreeBSD
 .\" %IF OS OpenBSD
 .I ftp
 .\" %ENDIF OS OpenBSD
-.IR svn .
+.IR lynx .
 The default is the first one found in PATH.
 If a DIR is also specified, the plain TOOL name must begin with any of the
 above names.
@@ -104,31 +105,25 @@ Use URL of LOCATION for download.
 LOCATION is one of:
 .br
 .I github
-(GitHub mirror of SVN repository),
-.br
-.I sf
-(Sourceforge code browser),
+(upstream git repository),
 .br
 .I svn
-(SVN repository),
-.br
-.I svni
-(SVN repository via HTTP instead of HTTPS),
+(previous SVN repository),
 .br
 .I trac
 (Trac code browser).
 .br
 The default is
-.IR svn .
+.IR github .
 .TP
 .B \-\-url URL
 Download from URL.
-A valid OpenPGP/GPG signature with \*(Aq.raw.asc\*(Aq extension must also
+A valid OpenPGP/GPG signature with \*(Aq[.raw].asc\*(Aq extension must also
 exist unless \*(Aq\-\-no\-verify\*(Aq is also specified.
 .TP
 .B \-\-file FILE
 Copy from local FILE.
-A valid OpenPGP/GPG signature \*(AqFILE.raw.asc\*(Aq must also exist
+A valid OpenPGP/GPG signature \*(AqFILE[.raw].asc\*(Aq must also exist
 unless \*(Aq\-\-no\-verify\*(Aq is also specified.
 .\" %IF ENABLE_DB_INSTALL
 .TP
@@ -139,15 +134,12 @@ This is the same as:
 \*(Aq\-\-no\-verify \-\-file /usr/local/share/smartmontools/drivedb.h\*(Aq
 .\" %ENDIF ENABLE_DB_INSTALL
 .TP
-.B \-\-trunk
-Download from SVN trunk.
-This requires \*(Aq\-\-no\-verify\*(Aq because the trunk versions are not
-signed.
+.B \-\-main
+Download from main branch.
+This requires \*(Aq\-\-no\-verify\*(Aq because these versions are not signed.
 .TP
 .B \-\-branch X.Y
-Download from branches/RELEASE_\fBX\fP_\fBY\fP_DRIVEDB.
-This also selects the OpenPGP/GPG key for older branches
-(5.40 to 6.6: Key ID DFD22559).
+Download from branch X.Y.
 .TP
 .B \-\-cacert FILE
 Use CA certificates from FILE to verify the peer.
@@ -157,8 +149,6 @@ Use CA certificate files from DIR to ver
 .TP
 .B \-\-insecure
 Don't abort download if certificate verification fails.
-This option is also required if a HTTP URL is selected with \*(Aq\-u\*(Aq
-option.
 .TP
 .B \-\-no\-verify
 Don't verify signature with GnuPG.
@@ -187,20 +177,20 @@ Print help text.
 Regular update:
 .Vb 2
 # update-smart-drivedb
-/usr/local/var/lib/smartmontools/drivedb.h 7.2/5225 updated to 7.2/5237
+/usr/local/var/lib/smartmontools/drivedb.h 7.5/5701 updated to 7.5/5706
 .Ve
 .PP
 Revert to previous version:
 .Vb 2
 # update-smart-drivedb --force \e
   --file /usr/local/var/lib/smartmontools/drivedb.h.old
-/usr/local/var/lib/smartmontools/drivedb.h 7.2/5237 downgraded to 7.2/5225
+/usr/local/var/lib/smartmontools/drivedb.h 7.5/5706 downgraded to 7.5/5701
 .Ve
 .PP
-Download the database from SVN trunk to current directory:
+Download the database from main branch to current directory:
 .Vb 2
-$ update-smart-drivedb --trunk --no-verify -s - -u trac drivedb-trunk.h
-drivedb-trunk.h 7.3/5254 newly installed (NOT VERIFIED)
+$ update-smart-drivedb --main --no-verify -s - -u trac drivedb-main.h
+drivedb-main.h 7.5/? newly installed (NOT VERIFIED)
 .Ve
 .Sp
 .SH "EXIT STATUS"
@@ -224,20 +214,20 @@ originally installed drive database.
 .B /usr/local/var/lib/smartmontools/drivedb.h
 current drive database.
 .TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.raw
-current drive database with unexpanded SVN Id string.
-.TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.raw.asc
+.B /usr/local/var/lib/smartmontools/drivedb.h.asc
 signature file.
 .TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.*old*
+.B /usr/local/var/lib/smartmontools/drivedb.h.old[.asc]
 previous files.
 .TP
-.B /usr/local/var/lib/smartmontools/drivedb.h.*error*
+.B /usr/local/var/lib/smartmontools/drivedb.h.error[.asc]
 new files if rejected due to errors.
 .TP
 .B /usr/local/var/lib/smartmontools/drivedb.h.lastcheck
 empty file created if downloaded file was identical.
+.TP
+.B /usr/local/var/lib/smartmontools/drivedb.h.raw[.asc]
+no longer used and removed if still present.
 .Sp
 .SH AUTHORS
 \fBChristian Franke\fP.
@@ -258,6 +248,4 @@ Alternatively send the info to the smart
 \fBsmartctl\fP(8), \fBsmartd\fP(8).
 .Sp
 .SH PACKAGE VERSION
-CURRENT_SVN_VERSION CURRENT_SVN_DATE CURRENT_SVN_REV
-.br
-$Id: update-smart-drivedb.8.in 5605 2024-03-29 17:12:50Z chrfranke $
+smartmontools-@SMARTMONTOOLS_GIT_VER_DESC@ @SMARTMONTOOLS_GIT_REV_DATE@ @SMARTMONTOOLS_GIT_REV@
openSUSE Build Service is sponsored by