Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gptfdisk for openSUSE:Factory 
checked in at 2024-04-14 11:53:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gptfdisk (Old)
 and      /work/SRC/openSUSE:Factory/.gptfdisk.new.26366 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gptfdisk"

Sun Apr 14 11:53:40 2024 rev:27 rq:1166946 version:1.0.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/gptfdisk/gptfdisk.changes        2023-09-13 
20:44:20.841618355 +0200
+++ /work/SRC/openSUSE:Factory/.gptfdisk.new.26366/gptfdisk.changes     
2024-04-14 11:53:49.505699259 +0200
@@ -1,0 +2,15 @@
+Thu Apr 11 19:44:38 UTC 2024 - Jan Engelhardt <[email protected]>
+
+- Update to release 1.0.10
+  * Fix failure & crash of sgdisk when compiled with latest popt
+  * Fix NULL dereference when duplicating string argument
+  * Allow partition dynamically allocated by --largest-new to be
+    referenced by other options
+  * Truncate decimal inputs (e.g. "9.5G" becomes "9G")
+  * New partition type codes from the Discoverable Partitions
+    Specification
+- Delete 0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
+  gptfdisk-1.0.9-libuuid.patch,
+  gptfdisk-fix-null-pointer-dereference.patch (merged)
+
+-------------------------------------------------------------------

Old:
----
  0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
  gptfdisk-1.0.9-libuuid.patch
  gptfdisk-1.0.9.tar.gz
  gptfdisk-fix-null-pointer-dereference.patch

New:
----
  gptfdisk-1.0.10.tar.gz

BETA DEBUG BEGIN:
  Old:    Specification
- Delete 0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
  gptfdisk-1.0.9-libuuid.patch,
  Old:- Delete 0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
  gptfdisk-1.0.9-libuuid.patch,
  gptfdisk-fix-null-pointer-dereference.patch (merged)
  Old:  gptfdisk-1.0.9-libuuid.patch,
  gptfdisk-fix-null-pointer-dereference.patch (merged)
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gptfdisk.spec ++++++
--- /var/tmp/diff_new_pack.d1zaKG/_old  2024-04-14 11:53:50.553737579 +0200
+++ /var/tmp/diff_new_pack.d1zaKG/_new  2024-04-14 11:53:50.553737579 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gptfdisk
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           gptfdisk
-Version:        1.0.9
+Version:        1.0.10
 Release:        0
 Summary:        GPT partitioning and MBR repair software
 License:        GPL-2.0-only
@@ -26,11 +26,6 @@
 #Git-Clone:     https://git.code.sf.net/p/gptfdisk/code gptfdisk-code
 #Git-Web:       https://sourceforge.net/p/gptfdisk/code/ci/master/tree/
 Source:         https://downloads.sf.net/%name/%name-%version.tar.gz
-Patch1:         0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch
-# PATCH-FIX-UPSTREAM gptfdisk-fix-null-pointer-dereference.patch bsc#1208877 
[email protected] -- Fix NULL pointer dereference in previous patch
-Patch2:         gptfdisk-fix-null-pointer-dereference.patch
-# PATCH-FIX-UPSTREAM https://bugs.gentoo.org/844073 
https://sourceforge.net/p/gptfdisk/code/ci/6a8416cbd12d55f882bb751993b94f72d338d96f/
-Patch3:         gptfdisk-1.0.9-libuuid.patch
 BuildRequires:  gcc-c++
 BuildRequires:  ncurses-devel
 BuildRequires:  pkgconfig(popt)

++++++ gptfdisk-1.0.9.tar.gz -> gptfdisk-1.0.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/NEWS new/gptfdisk-1.0.10/NEWS
--- old/gptfdisk-1.0.9/NEWS     2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/NEWS    2024-02-20 01:55:41.000000000 +0100
@@ -1,3 +1,44 @@
+1.0.10 (2/19/2024):
+-------------------
+
+- Fixed problem that caused sgdisk to crash with errors about being unable
+  to read the disk's partition table when compiled with the latest popt
+  (commit 740, which is pre-release as I type; presumably version 1.19 and
+  later once released).
+
+- Updated guid.cc to deal with minor change in libuuid.
+
+- Fixed potential NULL derefernce bug in sgdisk. Thanks to Damian Kurek
+  for this fix.
+
+- The partition number of "0" can now be used to reference newly-created
+  partitions when the --largest-new=0 option to sgdisk is used. Thanks to
+  David JoaquĆ­n Shourabi Porcel for this improvement.
+
+- Make explicit casts in gptcurses.cc to eliminate compiler warnings about
+  mis-matched types in printw() statements.
+
+- Minor code cleanup based on valgrind analysis.
+
+- In previous versions, GPT fdisk accepted only integer values for partition
+  start points, end points, and sizes, and it interpreted decimal values
+  incorrectly. That is, if you typed "+9.5G" as the partition end point,
+  you'd end up with something just 9 sectors in size. This version now
+  truncates decimal numbers to their integral values, so you'd get a 9 GiB
+  partition instead.
+
+- Changes to optimize disk handling, particularly on Windows, courtesy of
+  Frediano Ziglio.
+
+- Added numerous new partition type codes from Discoverable Partitions
+  Specification
+  
(https://uapi-group.org/specifications/specs/discoverable_partitions_specification/).
+
+- Added new sgdisk -k/--move-backup-table and gdisk k (on the experts' menu)
+  option to relocate the backup partition table. This is the counterpart of
+  the sgdisk -j/--move-main-table and gdisk j (on the experts' menu) option
+  to move the main partition table. This code comes from Niklas Gollenstede.
+
 1.0.9 (4/14/2022):
 ------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/cgdisk.8 new/gptfdisk-1.0.10/cgdisk.8
--- old/gptfdisk-1.0.9/cgdisk.8 2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/cgdisk.8        2024-02-20 01:55:41.000000000 +0100
@@ -1,6 +1,6 @@
-.\" Copyright 2011-2022 Roderick W. Smith ([email protected])
+.\" Copyright 2011-2024 Roderick W. Smith ([email protected])
 .\" May be distributed under the GNU General Public License
-.TH "CGDISK" "8" "1.0.9" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "CGDISK" "8" "1.0.10" "Roderick W. Smith" "GPT fdisk Manual"
 .SH "NAME"
 cgdisk \- Curses-based GUID partition table (GPT) manipulator
 .SH "SYNOPSIS"
@@ -25,7 +25,7 @@
 
 For information on MBR vs. GPT, as well as GPT terminology and structure,
 see the extended GPT fdisk documentation at
-\fIhttp://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
+\fIhttps://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
 
 The \fBcgdisk\fR program employs a user interface similar to that of Linux's
 \fBcfdisk\fR, but \fBcgdisk\fR modifies GPT partitions. It also has the
@@ -389,11 +389,11 @@
 .BR sgdisk (8),
 .BR fixparts (8).
 
-\fIhttp://en.wikipedia.org/wiki/GUID_Partition_Table\fR
+\fIhttps://en.wikipedia.org/wiki/GUID_Partition_Table\fR
 
-\fIhttp://developer.apple.com/technotes/tn2006/tn2166.html\fR
+\fIhttps://developer.apple.com/technotes/tn2006/tn2166.html\fR
 
-\fIhttp://www.rodsbooks.com/gdisk/\fR
+\fIhttps://www.rodsbooks.com/gdisk/\fR
 
 .SH "AVAILABILITY"
 The \fBcgdisk\fR command is part of the \fIGPT fdisk\fR package and is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/cgdisk.html 
new/gptfdisk-1.0.10/cgdisk.html
--- old/gptfdisk-1.0.9/cgdisk.html      2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/cgdisk.html     2024-02-20 01:55:41.000000000 +0100
@@ -4,7 +4,7 @@
 <HTML><HEAD><TITLE>Man page of CGDISK</TITLE>
 </HEAD><BODY>
 <H1>CGDISK</H1>
-Section: GPT fdisk Manual (8)<BR>Updated: 1.0.9<BR><A HREF="#index">Index</A>
+Section: GPT fdisk Manual (8)<BR>Updated: 1.0.10<BR><A HREF="#index">Index</A>
 <A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
 
 <A NAME="lbAB">&nbsp;</A>
@@ -39,7 +39,7 @@
 <P>
 For information on MBR vs. GPT, as well as GPT terminology and structure,
 see the extended GPT fdisk documentation at
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I> 
or consult Wikipedia.
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 or consult Wikipedia.
 <P>
 The <B>cgdisk</B> program employs a user interface similar to that of Linux's
 <B>cfdisk</B>, but <B>cgdisk</B> modifies GPT partitions. It also has the
@@ -467,11 +467,11 @@
 <B><A HREF="/cgi-bin/man/man2html?8+fixparts">fixparts</A></B>(8).
 
 <P>
-<I><A 
HREF="http://en.wikipedia.org/wiki/GUID_Partition_Table";>http://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
+<I><A 
HREF="https://en.wikipedia.org/wiki/GUID_Partition_Table";>https://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
 <P>
-<I><A 
HREF="http://developer.apple.com/technotes/tn2006/tn2166.html";>http://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
+<I><A 
HREF="https://developer.apple.com/technotes/tn2006/tn2166.html";>https://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
 <P>
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I>
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 <P>
 <A NAME="lbAI">&nbsp;</A>
 <H2>AVAILABILITY</H2>
@@ -496,6 +496,6 @@
 This document was created by
 <A HREF="/cgi-bin/man/man2html">man2html</A>,
 using the manual pages.<BR>
-Time: 23:17:12 GMT, April 14, 2022
+Time: 00:55:41 GMT, February 20, 2024
 </BODY>
 </HTML>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/current.spec 
new/gptfdisk-1.0.10/current.spec
--- old/gptfdisk-1.0.9/current.spec     2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/current.spec    2024-02-20 01:55:41.000000000 +0100
@@ -1,12 +1,12 @@
 Summary: GPT partitioning and MBR repair software
 Name: gptfdisk
-Version: 1.0.9
+Version: 1.0.10
 
 Release: 1%{?dist}
 License: GPLv2
 URL: http://www.rodsbooks.com/gdisk
 Group: Applications/System
-Source: http://www.rodsbooks.com/gdisk/gptfdisk-1.0.9.tar.gz
+Source: http://www.rodsbooks.com/gdisk/gptfdisk-1.0.10.tar.gz
 BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
 %description
@@ -81,5 +81,5 @@
 
 
 %changelog
-* Thu Apr 14 2022 R Smith <[email protected]> - 1.0.9
-- Created spec file for 1.0.9 release
+* Mon Feb 19 2024 R Smith <[email protected]> - 1.0.10
+- Created spec file for 1.0.10 release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/diskio-unix.cc 
new/gptfdisk-1.0.10/diskio-unix.cc
--- old/gptfdisk-1.0.9/diskio-unix.cc   2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/diskio-unix.cc  2024-02-20 01:55:41.000000000 +0100
@@ -37,8 +37,12 @@
 
 using namespace std;
 
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__linux__)
 #define off64_t off_t
+#define stat64 stat
+#define fstat64 fstat
+#define lstat64 lstat
+#define lseek64 lseek
 #endif
 
 // Returns the official "real" name for a shortened version of same.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/diskio-windows.cc 
new/gptfdisk-1.0.10/diskio-windows.cc
--- old/gptfdisk-1.0.9/diskio-windows.cc        2022-04-15 01:17:12.000000000 
+0200
+++ new/gptfdisk-1.0.10/diskio-windows.cc       2024-02-20 01:55:41.000000000 
+0100
@@ -63,7 +63,6 @@
       fd = CreateFile(realFilename.c_str(),GENERIC_READ, FILE_SHARE_READ | 
FILE_SHARE_WRITE,
                       NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
       if (fd == INVALID_HANDLE_VALUE) {
-         CloseHandle(fd);
          cerr << "Problem opening " << realFilename << " for reading!\n";
          realFilename = "";
          userFilename = "";
@@ -94,13 +93,11 @@
    // Preceding call can fail when creating backup files; if so, try
    // again with different option...
    if (fd == INVALID_HANDLE_VALUE) {
-      CloseHandle(fd);
       fd = CreateFile(realFilename.c_str(), GENERIC_READ | GENERIC_WRITE,
                       FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
                       FILE_ATTRIBUTE_NORMAL, NULL);
    } // if
    if (fd == INVALID_HANDLE_VALUE) {
-      CloseHandle(fd);
       isOpen = 0;
       openForWrite = 0;
       errno = GetLastError();
@@ -114,8 +111,10 @@
 // Close the disk device. Note that this does NOT erase the stored filenames,
 // so the file can be re-opened without specifying the filename.
 void DiskIO::Close(void) {
-   if (isOpen)
+   if (isOpen) {
       CloseHandle(fd);
+      fd = INVALID_HANDLE_VALUE;
+   }
    isOpen = 0;
    openForWrite = 0;
 } // DiskIO::Close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/fixparts.8 
new/gptfdisk-1.0.10/fixparts.8
--- old/gptfdisk-1.0.9/fixparts.8       2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/fixparts.8      2024-02-20 01:55:41.000000000 +0100
@@ -1,6 +1,6 @@
-.\" Copyright 2011-2022 Roderick W. Smith ([email protected])
+.\" Copyright 2011-2024 Roderick W. Smith ([email protected])
 .\" May be distributed under the GNU General Public License
-.TH "FIXPARTS" "8" "1.0.9" "Roderick W. Smith" "FixParts Manual"
+.TH "FIXPARTS" "8" "1.0.10" "Roderick W. Smith" "FixParts Manual"
 .SH "NAME"
 fixparts \- MBR partition table repair utility
 .SH "SYNOPSIS"
@@ -273,9 +273,9 @@
 .BR gdisk (8),
 .BR sgdisk (8).
 
-\fIhttp://en.wikipedia.org/wiki/Master_boot_record\fR
+\fIhttps://en.wikipedia.org/wiki/Master_boot_record\fR
 
-\fIhttp://www.rodsbooks.com/fixparts/\fR
+\fIhttps://www.rodsbooks.com/fixparts/\fR
 
 .SH "AVAILABILITY"
 The \fBfixparts\fR command is part of the \fIGPT fdisk\fR package and is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/fixparts.html 
new/gptfdisk-1.0.10/fixparts.html
--- old/gptfdisk-1.0.9/fixparts.html    2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/fixparts.html   2024-02-20 01:55:41.000000000 +0100
@@ -4,7 +4,7 @@
 <HTML><HEAD><TITLE>Man page of FIXPARTS</TITLE>
 </HEAD><BODY>
 <H1>FIXPARTS</H1>
-Section: FixParts Manual (8)<BR>Updated: 1.0.9<BR><A HREF="#index">Index</A>
+Section: FixParts Manual (8)<BR>Updated: 1.0.10<BR><A HREF="#index">Index</A>
 <A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
 
 <A NAME="lbAB">&nbsp;</A>
@@ -338,9 +338,9 @@
 <B><A HREF="/cgi-bin/man/man2html?8+sgdisk">sgdisk</A></B>(8).
 
 <P>
-<I><A 
HREF="http://en.wikipedia.org/wiki/Master_boot_record";>http://en.wikipedia.org/wiki/Master_boot_record</A></I>
+<I><A 
HREF="https://en.wikipedia.org/wiki/Master_boot_record";>https://en.wikipedia.org/wiki/Master_boot_record</A></I>
 <P>
-<I><A 
HREF="http://www.rodsbooks.com/fixparts/";>http://www.rodsbooks.com/fixparts/</A></I>
+<I><A 
HREF="https://www.rodsbooks.com/fixparts/";>https://www.rodsbooks.com/fixparts/</A></I>
 <P>
 <A NAME="lbAI">&nbsp;</A>
 <H2>AVAILABILITY</H2>
@@ -365,6 +365,6 @@
 This document was created by
 <A HREF="/cgi-bin/man/man2html">man2html</A>,
 using the manual pages.<BR>
-Time: 23:17:12 GMT, April 14, 2022
+Time: 00:55:41 GMT, February 20, 2024
 </BODY>
 </HTML>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gdisk.8 new/gptfdisk-1.0.10/gdisk.8
--- old/gptfdisk-1.0.9/gdisk.8  2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gdisk.8 2024-02-20 01:55:41.000000000 +0100
@@ -1,6 +1,6 @@
-.\" Copyright 2011-2022 Roderick W. Smith ([email protected])
+.\" Copyright 2011-2024 Roderick W. Smith ([email protected])
 .\" May be distributed under the GNU General Public License
-.TH "GDISK" "8" "1.0.9" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "GDISK" "8" "1.0.10" "Roderick W. Smith" "GPT fdisk Manual"
 .SH "NAME"
 gdisk \- Interactive GUID partition table (GPT) manipulator
 .SH "SYNOPSIS"
@@ -27,7 +27,7 @@
 main and backup data, as well as between the GPT headers and the partition
 tables. For information on MBR vs. GPT, as well as GPT terminology and
 structure, see the extended \fBgdisk\fR documentation at
-\fIhttp://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
+\fIhttps://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
 
 The \fBgdisk\fR program employs a user interface similar to that of Linux's
 \fBfdisk\fR, but \fBgdisk\fR modifies GPT partitions. It also has the
@@ -486,6 +486,13 @@
 recommend against adjusting this value unless doing so is absolutely
 necessary.
 
+.TP
+.B k
+Adjust the location of the backup partition table. This partition table is
+normally located just before the backup metadata at the end of the disk, but
+it may need to be moved in some very rare cases. I recommend against
+adjusting this value unless doing so is absolutely necessary.
+
 .TP 
 .B l
 Change the sector alignment value. Disks with more logical sectors per
@@ -702,11 +709,11 @@
 .BR sgdisk (8),
 .BR fixparts (8).
 
-\fIhttp://en.wikipedia.org/wiki/GUID_Partition_Table\fR
+\fIhttps://en.wikipedia.org/wiki/GUID_Partition_Table\fR
 
-\fIhttp://developer.apple.com/technotes/tn2006/tn2166.html\fR
+\fIhttps://developer.apple.com/technotes/tn2006/tn2166.html\fR
 
-\fIhttp://www.rodsbooks.com/gdisk/\fR
+\fIhttps://www.rodsbooks.com/gdisk/\fR
 
 .SH "AVAILABILITY"
 The \fBgdisk\fR command is part of the \fIGPT fdisk\fR package and is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gdisk.html 
new/gptfdisk-1.0.10/gdisk.html
--- old/gptfdisk-1.0.9/gdisk.html       2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gdisk.html      2024-02-20 01:55:41.000000000 +0100
@@ -4,7 +4,7 @@
 <HTML><HEAD><TITLE>Man page of GDISK</TITLE>
 </HEAD><BODY>
 <H1>GDISK</H1>
-Section: GPT fdisk Manual (8)<BR>Updated: 1.0.9<BR><A HREF="#index">Index</A>
+Section: GPT fdisk Manual (8)<BR>Updated: 1.0.10<BR><A HREF="#index">Index</A>
 <A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
 
 <A NAME="lbAB">&nbsp;</A>
@@ -41,7 +41,7 @@
 main and backup data, as well as between the GPT headers and the partition
 tables. For information on MBR vs. GPT, as well as GPT terminology and
 structure, see the extended <B>gdisk</B> documentation at
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I> 
or consult Wikipedia.
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 or consult Wikipedia.
 <P>
 The <B>gdisk</B> program employs a user interface similar to that of Linux's
 <B>fdisk</B>, but <B>gdisk</B> modifies GPT partitions. It also has the
@@ -567,6 +567,14 @@
 recommend against adjusting this value unless doing so is absolutely
 necessary.
 <P>
+<DT><B>k</B>
+
+<DD>
+Adjust the location of the backup partition table. This partition table is
+normally located just before the backup metadata at the end of the disk, but
+it may need to be moved in some very rare cases. I recommend against
+adjusting this value unless doing so is absolutely necessary.
+<P>
 <DT><B>l</B>
 
 <DD>
@@ -825,11 +833,11 @@
 <B><A HREF="/cgi-bin/man/man2html?8+fixparts">fixparts</A></B>(8).
 
 <P>
-<I><A 
HREF="http://en.wikipedia.org/wiki/GUID_Partition_Table";>http://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
+<I><A 
HREF="https://en.wikipedia.org/wiki/GUID_Partition_Table";>https://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
 <P>
-<I><A 
HREF="http://developer.apple.com/technotes/tn2006/tn2166.html";>http://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
+<I><A 
HREF="https://developer.apple.com/technotes/tn2006/tn2166.html";>https://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
 <P>
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I>
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 <P>
 <A NAME="lbAI">&nbsp;</A>
 <H2>AVAILABILITY</H2>
@@ -854,6 +862,6 @@
 This document was created by
 <A HREF="/cgi-bin/man/man2html">man2html</A>,
 using the manual pages.<BR>
-Time: 23:17:12 GMT, April 14, 2022
+Time: 00:55:41 GMT, February 20, 2024
 </BODY>
 </HTML>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gpt.cc new/gptfdisk-1.0.10/gpt.cc
--- old/gptfdisk-1.0.9/gpt.cc   2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gpt.cc  2024-02-20 01:55:41.000000000 +0100
@@ -3,7 +3,7 @@
 
 /* By Rod Smith, initial coding January to February, 2009 */
 
-/* This program is copyright (c) 2009-2022 by Roderick W. Smith. It is 
distributed
+/* This program is copyright (c) 2009-2024 by Roderick W. Smith. It is 
distributed
   under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
 
 #define __STDC_LIMIT_MACROS
@@ -80,6 +80,7 @@
    beQuiet = 0;
    whichWasUsed = use_new;
    mainHeader.numParts = 0;
+   mainHeader.firstUsableLBA = 0;
    mainHeader.lastUsableLBA = 0;
    numParts = 0;
    SetGPTSize(NUM_GPT_ENTRIES);
@@ -344,6 +345,13 @@
             << "but is generally ill-advised. Using 'j' on the experts' menu 
can adjust this\n"
             << "gap.\n";
    } // if
+   if (secondHeader.partitionEntriesLBA != diskSize - GetTableSizeInSectors() 
- 1) {
+       cout << "\nWarning: There is a gap between the secondary partition 
table (ending at sector\n"
+            << secondHeader.partitionEntriesLBA + GetTableSizeInSectors() - 1
+            << ") and the secondary metadata (sector " << mainHeader.backupLBA 
<< ").\n"
+            << "This is helpful in some exotic configurations, but is 
generally ill-advised.\n"
+            << "Using 'k' on the experts' menu can adjust this gap.\n";
+   } // if
    if (mainHeader.partitionEntriesLBA + GetTableSizeInSectors() != 
mainHeader.firstUsableLBA) {
        cout << "\nWarning: There is a gap between the main partition table 
(ending sector "
             << mainHeader.partitionEntriesLBA + GetTableSizeInSectors() - 1 << 
")\n"
@@ -833,25 +841,27 @@
    int err, allOK = 1;
    MBRValidity mbrState;
 
-   if (myDisk.OpenForRead(deviceFilename)) {
-      err = myDisk.OpenForWrite(deviceFilename);
-      if ((err == 0) && (!justLooking)) {
-         cout << "\aNOTE: Write test failed with error number " << errno
-              << ". It will be impossible to save\nchanges to this disk's 
partition table!\n";
+   if (!justLooking) {
+      if (myDisk.OpenForRead(deviceFilename)) {
+         err = myDisk.OpenForWrite(deviceFilename);
+         if (err == 0) {
+            cout << "\aNOTE: Write test failed with error number " << errno
+                 << ". It will be impossible to save\nchanges to this disk's 
partition table!\n";
 #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
-         cout << "You may be able to enable writes by exiting this program, 
typing\n"
-              << "'sysctl kern.geom.debugflags=16' at a shell prompt, and 
re-running this\n"
-              << "program.\n";
+            cout << "You may be able to enable writes by exiting this program, 
typing\n"
+                 << "'sysctl kern.geom.debugflags=16' at a shell prompt, and 
re-running this\n"
+                 << "program.\n";
 #endif
 #if defined (__APPLE__)
-         cout << "You may need to deactivate System Integrity Protection to 
use this program. See\n"
-              << 
"https://www.quora.com/How-do-I-turn-off-the-rootless-in-OS-X-El-Capitan-10-11\n";
-              << "for more information.\n";
+            cout << "You may need to deactivate System Integrity Protection to 
use this program. See\n"
+                 << 
"https://www.quora.com/How-do-I-turn-off-the-rootless-in-OS-X-El-Capitan-10-11\n";
+                 << "for more information.\n";
 #endif
-              cout << "\n";
-      } // if
-      myDisk.Close(); // Close and re-open read-only in case of bugs
-   } else allOK = 0; // if
+                 cout << "\n";
+         } // if
+         myDisk.Close(); // Close and re-open read-only in case of bugs
+      } else allOK = 0; // if
+   }
 
    if (allOK && myDisk.OpenForRead(deviceFilename)) {
       // store disk information....
@@ -1500,7 +1510,7 @@
             cerr << "Warning! GPT main partition table not overwritten! Error 
is " << errno << "\n";
             allOK = 0;
          } // if write failed
-      } // if 
+      } // if
       if (!myDisk.Seek(secondHeader.partitionEntriesLBA))
          allOK = 0;
       if (allOK) {
@@ -1911,6 +1921,23 @@
     return retval;
 } // GPTData::MoveMainTable()
 
+// Change the start sector for the secondary partition table.
+// Returns 1 on success, 0 on failure
+int GPTData::MoveSecondTable(uint64_t pteSector) {
+   uint64_t pteSize = GetTableSizeInSectors();
+   int retval = 1;
+
+   if ((pteSector > FindLastUsedLBA()) && ((pteSector + pteSize) < diskSize)) {
+      secondHeader.partitionEntriesLBA = pteSector; // (RebuildSecondHeader 
actually replaces this with lastUsableLBA+1)
+      mainHeader.lastUsableLBA = secondHeader.partitionEntriesLBA - 
UINT64_C(1);
+      RebuildSecondHeader();
+   } else {
+      cerr << "Unable to set the secondary partition table's location to " << 
pteSector << "!\n";
+      retval = 0;
+   } // if/else
+   return retval;
+} // GPTData::MoveSecondTable()
+
 // Blank the partition array
 void GPTData::BlankPartitions(void) {
    uint32_t i;
@@ -2066,6 +2093,7 @@
    } // if
    mainHeader.lastUsableLBA = secondHeader.lastUsableLBA = diskSize - 
mainHeader.firstUsableLBA;
    secondHeader.partitionEntriesLBA = secondHeader.lastUsableLBA + UINT64_C(1);
+   // TODO: Whenever this gets called, it moves the backup table to be the 
same distance from the backup header as the primary one it from its header. 
This seems highly problematic, since MoveMainTable does not call this, but then 
further actions may or may not do so. Moving the primary table may thus imply 
moving the backup table, or it may leave it where it was. There is also no 
guarantee that the space where the backup table is moved to is actually 
available.
 } // GPTData::FixSecondHeaderLocation()
 
 // Sets the partition's name to the specified UnicodeString without
@@ -2285,7 +2313,7 @@
 } // GPTData::FindFirstAvailable()
 
 // Returns the LBA of the start of the first partition on the disk (by
-// sector number), or 0 if there are no partitions defined.
+// sector number), or UINT64_MAX if there are no partitions defined.
 uint64_t GPTData::FindFirstUsedLBA(void) {
     uint32_t i;
     uint64_t firstFound = UINT64_MAX;
@@ -2298,6 +2326,20 @@
     return firstFound;
 } // GPTData::FindFirstUsedLBA()
 
+// Returns the LBA of the end of the last partition on the disk (by
+// sector number), or 0 if there are no partitions defined.
+uint64_t GPTData::FindLastUsedLBA(void) {
+   uint32_t i;
+   uint64_t lastFound = 0;
+
+   for (i = 0; i < numParts; i++) {
+      if ((partitions[i].IsUsed()) && (partitions[i].GetFirstLBA() > 
lastFound)) {
+         lastFound = partitions[i].GetLastLBA();
+      } // if
+   } // for
+   return lastFound;
+} // GPTData::FindLastUsedLBA()
+
 // Finds the first available sector in the largest block of unallocated
 // space on the disk. Returns 0 if there are no available blocks left
 uint64_t GPTData::FindFirstInLargest(void) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gpt.h new/gptfdisk-1.0.10/gpt.h
--- old/gptfdisk-1.0.9/gpt.h    2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gpt.h   2024-02-20 01:55:41.000000000 +0100
@@ -142,6 +142,7 @@
    // Adjust GPT structures WITHOUT user interaction...
    int SetGPTSize(uint32_t numEntries, int fillGPTSectors = 1);
    int MoveMainTable(uint64_t pteSector);
+   int MoveSecondTable(uint64_t pteSector);
    void BlankPartitions(void);
    int DeletePartition(uint32_t partNum);
    uint32_t CreatePartition(uint32_t partNum, uint64_t startSector, uint64_t 
endSector);
@@ -158,7 +159,7 @@
    void RecomputeCHS(void);
    int Align(uint64_t* sector);
    void SetProtectiveMBR(BasicMBRData & newMBR) {protectiveMBR = newMBR;}
-   
+
    // Return data about the GPT structures....
    WhichToUse GetState(void) {return whichWasUsed;}
    int GetPartRange(uint32_t* low, uint32_t* high);
@@ -181,6 +182,7 @@
    // Find information about free space
    uint64_t FindFirstAvailable(uint64_t start = 0);
    uint64_t FindFirstUsedLBA(void);
+   uint64_t FindLastUsedLBA(void);
    uint64_t FindFirstInLargest(void);
    uint64_t FindLastAvailable();
    uint64_t FindLastInFree(uint64_t start, bool align = false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gptcl.cc new/gptfdisk-1.0.10/gptcl.cc
--- old/gptfdisk-1.0.9/gptcl.cc 2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gptcl.cc        2024-02-20 01:55:41.000000000 +0100
@@ -1,7 +1,7 @@
 /*
     Implementation of GPTData class derivative with popt-based command
     line processing
-    Copyright (C) 2010-2022 Roderick W. Smith
+    Copyright (C) 2010-2024 Roderick W. Smith
 
     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
@@ -68,7 +68,7 @@
    int opt, numOptions = 0, saveData = 0, neverSaveData = 0;
    int partNum = 0, newPartNum = -1, saveNonGPT = 1, retval = 0, pretend = 0;
    int byteSwapPartNum = 0;
-   uint64_t low, high, startSector, endSector, sSize, mainTableLBA;
+   uint64_t low, high, startSector, endSector, sSize, mainTableLBA, 
secondTableLBA;
    uint64_t temp; // temporary variable; free to use in any case
    char *device;
    string cmd, typeGUID, name;
@@ -85,7 +85,7 @@
       {"recompute-chs", 'C', POPT_ARG_NONE, NULL, 'C', "recompute CHS values 
in protective/hybrid MBR", ""},
       {"delete", 'd', POPT_ARG_INT, &deletePartNum, 'd', "delete a partition", 
"partnum"},
       {"display-alignment", 'D', POPT_ARG_NONE, NULL, 'D', "show number of 
sectors per allocation block", ""},
-      {"move-second-header", 'e', POPT_ARG_NONE, NULL, 'e', "move second 
header to end of disk", ""},
+      {"move-second-header", 'e', POPT_ARG_NONE, NULL, 'e', "move 
second/backup header to end of disk", ""},
       {"end-of-largest", 'E', POPT_ARG_NONE, NULL, 'E', "show end of largest 
free block", ""},
       {"first-in-largest", 'f', POPT_ARG_NONE, NULL, 'f', "show start of the 
largest free block", ""},
       {"first-aligned-in-largest", 'F', POPT_ARG_NONE, NULL, 'F', "show start 
of the largest free block, aligned", ""},
@@ -94,7 +94,8 @@
       {"hybrid", 'h', POPT_ARG_STRING, &hybrids, 'h', "create hybrid MBR", 
"partnum[:partnum...][:EE]"},
       {"info", 'i', POPT_ARG_INT, &infoPartNum, 'i', "show detailed 
information on partition", "partnum"},
       {"align-end", 'I', POPT_ARG_NONE, NULL, 'I', "align partition end 
points", ""},
-      {"move-main-table", 'j', POPT_ARG_INT, &mainTableLBA, 'j', "adjust the 
location of the main partition table", "sector"},
+      {"move-main-table", 'j', POPT_ARG_INT, &mainTableLBA, 'j', "change the 
start sector of the main partition table", "sector"},
+      {"move-backup-table", 'k', POPT_ARG_INT, &secondTableLBA, 'k', "change 
the start sector of the second/backup partition table", "sector"},
       {"load-backup", 'l', POPT_ARG_STRING, &backupFile, 'l', "load GPT backup 
from file", "file"},
       {"list-types", 'L', POPT_ARG_NONE, NULL, 'L', "list known partition 
types", ""},
       {"gpttombr", 'm', POPT_ARG_STRING, &mbrParts, 'm', "convert GPT to MBR", 
"partnum[:partnum...]"},
@@ -117,6 +118,7 @@
       {"zap", 'z', POPT_ARG_NONE, NULL, 'z', "zap (destroy) GPT (but not MBR) 
data structures", ""},
       {"zap-all", 'Z', POPT_ARG_NONE, NULL, 'Z', "zap (destroy) GPT and MBR 
data structures", ""},
       POPT_AUTOHELP { NULL, 0, 0, NULL, 0 }
+      // TODO: Incorrect(ly documented) (long) arguments are silently 
swallowed and seem to take the next argument with them!
    };
 
    // Create popt context...
@@ -156,9 +158,10 @@
 
    // Assume first non-option argument is the device filename....
    device = (char*) poptGetArg(poptCon);
-   poptResetContext(poptCon);
 
    if (device != NULL) {
+      device = strdup(device);
+      poptResetContext(poptCon);
       JustLooking(); // reset as necessary
       BeQuiet(); // Tell called functions to be less verbose & interactive
       if (LoadPartitions((string) device)) {
@@ -280,13 +283,21 @@
                   alignEnd = true;
                   break;
                case 'j':
-                   if (MoveMainTable(mainTableLBA)) {
-                       JustLooking(0);
-                       saveData = 1;
-                   } else {
-                       neverSaveData = 1;
-                   } // if/else
-                   break;
+                  if (MoveMainTable(mainTableLBA)) {
+                     JustLooking(0);
+                     saveData = 1;
+                  } else {
+                     neverSaveData = 1;
+                  } // if/else
+                  break;
+               case 'k':
+                  if (MoveSecondTable(secondTableLBA)) {
+                     JustLooking(0);
+                     saveData = 1;
+                  } else {
+                     neverSaveData = 1;
+                  } // if/else
+                  break;
                case 'l':
                   LoadBackupFile(backupFile, saveData, neverSaveData);
                   free(backupFile);
@@ -331,8 +342,10 @@
                   startSector = FindFirstInLargest();
                   Align(&startSector);
                   endSector = FindLastInFree(startSector, alignEnd);
-                  if (largestPartNum <= 0)
+                  if (largestPartNum <= 0) {
                      largestPartNum = FindFirstFreePart() + 1;
+                     newPartNum = largestPartNum - 1;
+                  }
                   if (CreatePartition(largestPartNum - 1, startSector, 
endSector)) {
                      saveData = 1;
                   } else {
@@ -498,6 +511,7 @@
          cerr << "Error encountered; not saving changes.\n";
          retval = 4;
       } // if
+      free(device);
    } // if (device != NULL)
    poptFreeContext(poptCon);
    return retval;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gptcurses.cc 
new/gptfdisk-1.0.10/gptcurses.cc
--- old/gptfdisk-1.0.9/gptcurses.cc     2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gptcurses.cc    2024-02-20 01:55:41.000000000 +0100
@@ -1,7 +1,7 @@
 /*
  *    Implementation of GPTData class derivative with curses-based text-mode
  *    interaction
- *    Copyright (C) 2011-2022 Roderick W. Smith
+ *    Copyright (C) 2011-2024 Roderick W. Smith
  *
  *    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
@@ -333,13 +333,13 @@
    printw("Partition GUID code: %s (%s)\n", 
partitions[partNum].GetType().AsString().c_str(),
           partitions[partNum].GetTypeName().c_str());
    printw("Partition unique GUID: %s\n", 
partitions[partNum].GetUniqueGUID().AsString().c_str());
-   printw("First sector: %lld (at %s)\n", partitions[partNum].GetFirstLBA(),
+   printw("First sector: %llu (at %s)\n", (long long unsigned int) 
partitions[partNum].GetFirstLBA(),
           BytesToIeee(partitions[partNum].GetFirstLBA(), blockSize).c_str());
-   printw("Last sector: %lld (at %s)\n", partitions[partNum].GetLastLBA(),
+   printw("Last sector: %llu (at %s)\n", (long long unsigned int) 
partitions[partNum].GetLastLBA(),
           BytesToIeee(partitions[partNum].GetLastLBA(), blockSize).c_str());
    size = partitions[partNum].GetLastLBA() - partitions[partNum].GetFirstLBA() 
+ 1;
-   printw("Partition size: %lld sectors (%s)\n", size, BytesToIeee(size, 
blockSize).c_str());
-   printw("Attribute flags: %016llx\n", 
partitions[partNum].GetAttributes().GetAttributes());
+   printw("Partition size: %llu sectors (%s)\n", (long long unsigned int) 
size, BytesToIeee(size, blockSize).c_str());
+   printw("Attribute flags: %016llx\n", (long long unsigned int) 
partitions[partNum].GetAttributes().GetAttributes());
    #ifdef USE_UTF16
    partitions[partNum].GetDescription().extract(0, NAME_SIZE , temp, NAME_SIZE 
);
    printw("Partition name: '%s'\n", temp);
@@ -447,7 +447,8 @@
       clrtoeol();
       newFirstLBA = currentSpace->firstLBA;
       Align(&newFirstLBA);
-      printw("First sector (%lld-%lld, default = %lld): ", newFirstLBA, 
currentSpace->lastLBA, newFirstLBA);
+      printw("First sector (%llu-%llu, default = %llu): ", (long long unsigned 
int) newFirstLBA,
+             (long long unsigned int) currentSpace->lastLBA, (long long 
unsigned int) newFirstLBA);
       echo();
       getnstr(inLine, 79);
       noecho();
@@ -461,7 +462,7 @@
    while ((newLastLBA > currentSpace->lastLBA) || (newLastLBA < newFirstLBA)) {
       move(LINES - 3, 0);
       clrtoeol();
-      printw("Size in sectors or {KMGTP} (default = %lld): ", size);
+      printw("Size in sectors or {KMGTP} (default = %llu): ", (long long 
unsigned int) size);
       echo();
       getnstr(inLine, 79);
       noecho();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gpttext.cc 
new/gptfdisk-1.0.10/gpttext.cc
--- old/gptfdisk-1.0.9/gpttext.cc       2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gpttext.cc      2024-02-20 01:55:41.000000000 +0100
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2010-2022  <Roderick W. Smith>
+    Copyright (C) 2010-2024  <Roderick W. Smith>
 
     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
@@ -186,6 +186,8 @@
     uint64_t maxValue = FindFirstUsedLBA() - pteSize;
     ostringstream prompt;
 
+    if (maxValue == UINT64_MAX - pteSize)
+       maxValue = FindLastAvailable() - pteSize;
     cout << "Currently, main partition table begins at sector " << 
mainHeader.partitionEntriesLBA
          << " and ends at sector " << mainHeader.partitionEntriesLBA + pteSize 
- 1 << "\n";
     prompt << "Enter new starting location (2 to " << maxValue << "; default 
is 2; 1 to abort): ";
@@ -197,6 +199,26 @@
     } // if
 } // GPTDataTextUI::MoveMainTable()
 
+// Move the backup partition table.
+void GPTDataTextUI::MoveSecondTable(void) {
+    uint64_t newStart, pteSize = GetTableSizeInSectors();
+    uint64_t minValue = FindLastUsedLBA() + 1;
+    uint64_t maxValue = diskSize - 1 - pteSize;
+    ostringstream prompt;
+
+    cout << "Currently, backup partition table begins at sector " << 
secondHeader.partitionEntriesLBA
+         << " and ends at\n"
+         << "sector " << secondHeader.partitionEntriesLBA + pteSize - 1 << 
"\n";
+    prompt << "Enter new starting location (" << minValue << " to " << 
maxValue <<
+              "; default is " << maxValue << "; 1 to abort): ";
+    newStart = GetNumber(minValue, maxValue, maxValue, prompt.str());
+    if (newStart != secondHeader.partitionEntriesLBA) {
+        GPTData::MoveSecondTable(newStart);
+    } else {
+        cout << "Aborting change!\n";
+    } // if
+} // GPTDataTextUI::MoveSecondTable()
+
 // Interactively create a partition
 void GPTDataTextUI::CreatePartition(void) {
    uint64_t firstBlock, firstInLargest, lastBlock, sector, origSector, 
lastAligned;
@@ -698,7 +720,7 @@
 void GPTDataTextUI::RecoveryMenu(string filename) {
    uint32_t numParts;
    int goOn = 1, temp1;
-   
+
    do {
       cout << "\nRecovery/transformation command (? for help): ";
       switch (ReadString()[0]) {
@@ -824,7 +846,7 @@
    string guidStr, device;
    GUIDData aGUID;
    ostringstream prompt;
-   
+
    do {
       cout << "\nExpert command (? for help): ";
       switch (ReadString()[0]) {
@@ -873,6 +895,9 @@
          case 'j': case 'J':
              MoveMainTable();
              break;
+         case 'k': case 'K':
+             MoveSecondTable();
+             break;
          case 'l': case 'L':
             prompt.seekp(0);
             prompt << "Enter the sector alignment value (1-" << MAX_ALIGNMENT 
<< ", default = "
@@ -946,6 +971,7 @@
    cout << "h\trecompute CHS values in protective/hybrid MBR\n";
    cout << "i\tshow detailed information on a partition\n";
    cout << "j\tmove the main partition table\n";
+   cout << "k\tmove the backup partition table\n";
    cout << "l\tset the sector alignment value\n";
    cout << "m\treturn to main menu\n";
    cout << "n\tcreate a new protective MBR\n";
@@ -1007,4 +1033,3 @@
    return ReadString().c_str();
 } // ReadUString()
 #endif
-   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/gpttext.h 
new/gptfdisk-1.0.10/gpttext.h
--- old/gptfdisk-1.0.9/gpttext.h        2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/gpttext.h       2024-02-20 01:55:41.000000000 +0100
@@ -41,6 +41,7 @@
       uint32_t GetPartNum(void);
       void ResizePartitionTable(void);
       void MoveMainTable(void);
+      void MoveSecondTable(void);
       void CreatePartition(void);
       void DeletePartition(void);
       void ChangePartType(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/guid.cc new/gptfdisk-1.0.10/guid.cc
--- old/gptfdisk-1.0.9/guid.cc  2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/guid.cc 2024-02-20 01:55:41.000000000 +0100
@@ -141,7 +141,7 @@
 void GUIDData::Randomize(void) {
    int i, uuidGenerated = 0;
 
-#ifdef _UUID_UUID_H
+#if defined (_UUID_UUID_H) || defined (_UL_LIBUUID_UUID_H)
    uuid_generate(uuidData);
    ReverseBytes(&uuidData[0], 4);
    ReverseBytes(&uuidData[4], 2);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/parttypes.cc 
new/gptfdisk-1.0.10/parttypes.cc
--- old/gptfdisk-1.0.9/parttypes.cc     2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/parttypes.cc    2024-02-20 01:55:41.000000000 +0100
@@ -165,6 +165,112 @@
    AddType(0x831A, "C215D751-7BCD-4649-BE90-6627490A4C05", "Linux ARM32 /usr 
verity");
    AddType(0x831B, "6E11A4E7-FBCA-4DED-B9E9-E1A512BB664E", "Linux ARM64 /usr 
verity");
    AddType(0x831C, "6A491E03-3BE7-4545-8E38-83320E0EA880", "Linux IA-64 /usr 
verity");
+   AddType(0x831D, "6523F8AE-3EB1-4E2A-A05A-18B695AE656F", "Linux Alpha root 
(/)");
+   AddType(0x831E, "D27F46ED-2919-4CB8-BD25-9531F3C16534", "Linux ARC root 
(/)");
+   AddType(0x831F, "77055800-792C-4F94-B39A-98C91B762BB6", "Linux LoongArch 
root (/)");
+   AddType(0x8320, "E9434544-6E2C-47CC-BAE2-12D6DEAFB44C", "Linux MIPS-32 BE 
root (/)");
+   AddType(0x8321, "D113AF76-80EF-41B4-BDB6-0CFF4D3D4A25", "Linux MIPS-64 BE 
root (/)");
+   AddType(0x8322, "37C58C8A-D913-4156-A25F-48B1B64E07F0", "Linux MIPS-32 LE 
root (/)");
+   AddType(0x8323, "700BDA43-7A34-4507-B179-EEB93D7A7CA3", "Linux MIPS-64 LE 
root (/)");
+   AddType(0x8324, "1AACDB3B-5444-4138-BD9E-E5C2239B2346", "Linux PA-RISC root 
(/)");
+   AddType(0x8325, "1DE3F1EF-FA98-47B5-8DCD-4A860A654D78", "Linux PowerPC-32 
root (/)");
+   AddType(0x8326, "912ADE1D-A839-4913-8964-A10EEE08FBD2", "Linux PowerPC-64 
BE root (/)");
+   AddType(0x8327, "C31C45E6-3F39-412E-80FB-4809C4980599", "Linux PowerPC-64 
LE root (/)");
+   AddType(0x8328, "60D5A7FE-8E7D-435C-B714-3DD8162144E1", "Linux RISC-V-32 
root (/)");
+   AddType(0x8329, "72EC70A6-CF74-40E6-BD49-4BDA08E8F224", "Linux RISC-V-64 
root (/)");
+   AddType(0x832A, "08A7ACEA-624C-4A20-91E8-6E0FA67D23F9", "Linux s390 root 
(/)");
+   AddType(0x832B, "5EEAD9A9-FE09-4A1E-A1D7-520D00531306", "Linux s390x root 
(/)");
+   AddType(0x832C, "C50CDD70-3862-4CC3-90E1-809A8C93EE2C", "Linux TILE-Gx root 
(/)");
+   AddType(0x832D, "E18CF08C-33EC-4C0D-8246-C6C6FB3DA024", "Linux Alpha /usr");
+   AddType(0x832E, "7978A683-6316-4922-BBEE-38BFF5A2FECC", "Linux ARC /usr");
+   AddType(0x832F, "E611C702-575C-4CBE-9A46-434FA0BF7E3F", "Linux LoongArch 
/usr");
+   AddType(0x8330, "773B2ABC-2A99-4398-8BF5-03BAAC40D02B", "Linux MIPS-32 BE 
/usr");
+   AddType(0x8331, "57E13958-7331-4365-8E6E-35EEEE17C61B", "Linux MIPS-64 BE 
/usr");
+   AddType(0x8332, "0F4868E9-9952-4706-979F-3ED3A473E947", "Linux MIPS-32 LE 
/usr");
+   AddType(0x8333, "C97C1F32-BA06-40B4-9F22-236061B08AA8", "Linux MIPS-64 LE 
/usr");
+   AddType(0x8334, "DC4A4480-6917-4262-A4EC-DB9384949F25", "Linux PA-RISC 
/usr");
+   AddType(0x8335, "7D14FEC5-CC71-415D-9D6C-06BF0B3C3EAF", "Linux PowerPC-32 
/usr");
+   AddType(0x8336, "2C9739E2-F068-46B3-9FD0-01C5A9AFBCCA", "Linux PowerPC-64 
BE /usr");
+   AddType(0x8337, "15BB03AF-77E7-4D4A-B12B-C0D084F7491C", "Linux PowerPC-64 
LE /usr");
+   AddType(0x8338, "B933FB22-5C3F-4F91-AF90-E2BB0FA50702", "Linux RISC-V-32 
/usr");
+   AddType(0x8339, "BEAEC34B-8442-439B-A40B-984381ED097D", "Linux RISC-V-64 
/usr");
+   AddType(0x833A, "CD0F869B-D0FB-4CA0-B141-9EA87CC78D66", "Linux s390 /usr");
+   AddType(0x833B, "8A4F5770-50AA-4ED3-874A-99B710DB6FEA", "Linux s390x /usr");
+   AddType(0x833C, "55497029-C7C1-44CC-AA39-815ED1558630", "Linux TILE-Gx 
/usr");
+   AddType(0x833D, "FC56D9E9-E6E5-4C06-BE32-E74407CE09A5", "Linux Alpha root 
verity");
+   AddType(0x833E, "24B2D975-0F97-4521-AFA1-CD531E421B8D", "Linux ARC root 
verity");
+   AddType(0x833F, "F3393B22-E9AF-4613-A948-9D3BFBD0C535", "Linux LoongArch 
root verity");
+   AddType(0x8340, "7A430799-F711-4C7E-8E5B-1D685BD48607", "Linux MIPS-32 BE 
root verity");
+   AddType(0x8341, "579536F8-6A33-4055-A95A-DF2D5E2C42A8", "Linux MIPS-64 BE 
root verity");
+   AddType(0x8342, "D7D150D2-2A04-4A33-8F12-16651205FF7B", "Linux MIPS-32 LE 
root verity");
+   AddType(0x8343, "16B417F8-3E06-4F57-8DD2-9B5232F41AA6", "Linux MIPS-64 LE 
root verity");
+   AddType(0x8344, "D212A430-FBC5-49F9-A983-A7FEEF2B8D0E", "Linux PA-RISC root 
verity");
+   AddType(0x8345, "906BD944-4589-4AAE-A4E4-DD983917446A", "Linux PowerPC-64 
LE root verity");
+   AddType(0x8346, "9225A9A3-3C19-4D89-B4F6-EEFF88F17631", "Linux PowerPC-64 
BE root verity");
+   AddType(0x8347, "98CFE649-1588-46DC-B2F0-ADD147424925", "Linux PowerPC-32 
root verity");
+   AddType(0x8348, "AE0253BE-1167-4007-AC68-43926C14C5DE", "Linux RISC-V-32 
root verity");
+   AddType(0x8349, "B6ED5582-440B-4209-B8DA-5FF7C419EA3D", "Linux RISC-V-64 
root verity");
+   AddType(0x834A, "7AC63B47-B25C-463B-8DF8-B4A94E6C90E1", "Linux s390 root 
verity");
+   AddType(0x834B, "B325BFBE-C7BE-4AB8-8357-139E652D2F6B", "Linux s390x root 
verity");
+   AddType(0x834C, "966061EC-28E4-4B2E-B4A5-1F0A825A1D84", "Linux TILE-Gx root 
verity");
+   AddType(0x834D, "8CCE0D25-C0D0-4A44-BD87-46331BF1DF67", "Linux Alpha /usr 
verity");
+   AddType(0x834E, "FCA0598C-D880-4591-8C16-4EDA05C7347C", "Linux ARC /usr 
verity");
+   AddType(0x834F, "F46B2C26-59AE-48F0-9106-C50ED47F673D", "Linux LoongArch 
/usr verity");
+   AddType(0x8350, "6E5A1BC8-D223-49B7-BCA8-37A5FCCEB996", "Linux MIPS-32 BE 
/usr verity");
+   AddType(0x8351, "81CF9D90-7458-4DF4-8DCF-C8A3A404F09B", "Linux MIPS-64 BE 
/usr verity");
+   AddType(0x8352, "46B98D8D-B55C-4E8F-AAB3-37FCA7F80752", "Linux MIPS-32 LE 
/usr verity");
+   AddType(0x8353, "3C3D61FE-B5F3-414D-BB71-8739A694A4EF", "Linux MIPS-64 LE 
/usr verity");
+   AddType(0x8354, "5843D618-EC37-48D7-9F12-CEA8E08768B2", "Linux PA-RISC /usr 
verity");
+   AddType(0x8355, "EE2B9983-21E8-4153-86D9-B6901A54D1CE", "Linux PowerPC-64 
LE /usr verity");
+   AddType(0x8356, "BDB528A5-A259-475F-A87D-DA53FA736A07", "Linux PowerPC-64 
BE /usr verity");
+   AddType(0x8357, "DF765D00-270E-49E5-BC75-F47BB2118B09", "Linux PowerPC-32 
/usr verity");
+   AddType(0x8358, "CB1EE4E3-8CD0-4136-A0A4-AA61A32E8730", "Linux RISC-V-32 
/usr verity");
+   AddType(0x8359, "8F1056BE-9B05-47C4-81D6-BE53128E5B54", "Linux RISC-V-64 
/usr verity");
+   AddType(0x835A, "B663C618-E7BC-4D6D-90AA-11B756BB1797", "Linux s390 /usr 
verity");
+   AddType(0x835B, "31741CC4-1A2A-4111-A581-E00B447D2D06", "Linux s390x /usr 
verity");
+   AddType(0x835C, "2FB4BF56-07FA-42DA-8132-6B139F2026AE", "Linux TILE-Gx /usr 
verity");
+   AddType(0x835D, "D46495B7-A053-414F-80F7-700C99921EF8", "Linux Alpha root 
verity signature");
+   AddType(0x835E, "143A70BA-CBD3-4F06-919F-6C05683A78BC", "Linux ARC root 
verity signature");
+   AddType(0x835F, "42B0455F-EB11-491D-98D3-56145BA9D037", "Linux ARM32 root 
verity signature");
+   AddType(0x8360, "6DB69DE6-29F4-4758-A7A5-962190F00CE3", "Linux ARM64 root 
verity signature");
+   AddType(0x8361, "E98B36EE-32BA-4882-9B12-0CE14655F46A", "Linux IA-64 root 
verity signature");
+   AddType(0x8362, "5AFB67EB-ECC8-4F85-AE8E-AC1E7C50E7D0", "Linux LoongArch 
root verity signature");
+   AddType(0x8363, "BBA210A2-9C5D-45EE-9E87-FF2CCBD002D0", "Linux MIPS-32 BE 
root verity signature");
+   AddType(0x8364, "43CE94D4-0F3D-4999-8250-B9DEAFD98E6E", "Linux MIPS-64 BE 
root verity signature");
+   AddType(0x8365, "C919CC1F-4456-4EFF-918C-F75E94525CA5", "Linux MIPS-32 LE 
root verity signature");
+   AddType(0x8366, "904E58EF-5C65-4A31-9C57-6AF5FC7C5DE7", "Linux MIPS-64 LE 
root verity signature");
+   AddType(0x8367, "15DE6170-65D3-431C-916E-B0DCD8393F25", "Linux PA-RISC root 
verity signature");
+   AddType(0x8368, "D4A236E7-E873-4C07-BF1D-BF6CF7F1C3C6", "Linux PowerPC-64 
LE root verity signature");
+   AddType(0x8369, "F5E2C20C-45B2-4FFA-BCE9-2A60737E1AAF", "Linux PowerPC-64 
BE root verity signature");
+   AddType(0x836A, "1B31B5AA-ADD9-463A-B2ED-BD467FC857E7", "Linux PowerPC-32 
root verity signature");
+   AddType(0x836B, "3A112A75-8729-4380-B4CF-764D79934448", "Linux RISC-V-32 
root verity signature");
+   AddType(0x836C, "EFE0F087-EA8D-4469-821A-4C2A96A8386A", "Linux RISC-V-64 
root verity signature");
+   AddType(0x836D, "3482388E-4254-435A-A241-766A065F9960", "Linux s390 root 
verity signature");
+   AddType(0x836E, "C80187A5-73A3-491A-901A-017C3FA953E9", "Linux s390x root 
verity signature");
+   AddType(0x836F, "B3671439-97B0-4A53-90F7-2D5A8F3AD47B", "Linux TILE-Gx root 
verity signature");
+   AddType(0x8370, "41092B05-9FC8-4523-994F-2DEF0408B176", "Linux x86-64 root 
verity signature");
+   AddType(0x8371, "5996FC05-109C-48DE-808B-23FA0830B676", "Linux x86 root 
verity signature");
+   AddType(0x8372, "5C6E1C76-076A-457A-A0FE-F3B4CD21CE6E", "Linux Alpha /usr 
verity signature");
+   AddType(0x8373, "94F9A9A1-9971-427A-A400-50CB297F0F35", "Linux ARC /usr 
verity signature");
+   AddType(0x8374, "D7FF812F-37D1-4902-A810-D76BA57B975A", "Linux ARM32 /usr 
verity signature");
+   AddType(0x8375, "C23CE4FF-44BD-4B00-B2D4-B41B3419E02A", "Linux ARM64 /usr 
verity signature");
+   AddType(0x8376, "8DE58BC2-2A43-460D-B14E-A76E4A17B47F", "Linux IA-64 /usr 
verity signature");
+   AddType(0x8377, "B024F315-D330-444C-8461-44BBDE524E99", "Linux LoongArch 
/usr verity signature");
+   AddType(0x8378, "97AE158D-F216-497B-8057-F7F905770F54", "Linux MIPS-32 BE 
/usr verity signature");
+   AddType(0x8379, "05816CE2-DD40-4AC6-A61D-37D32DC1BA7D", "Linux MIPS-64 BE 
/usr verity signature");
+   AddType(0x837A, "3E23CA0B-A4BC-4B4E-8087-5AB6A26AA8A9", "Linux MIPS-32 LE 
/usr verity signature");
+   AddType(0x837B, "F2C2C7EE-ADCC-4351-B5C6-EE9816B66E16", "Linux MIPS-64 LE 
/usr verity signature");
+   AddType(0x837C, "450DD7D1-3224-45EC-9CF2-A43A346D71EE", "Linux PA-RISC /usr 
verity signature");
+   AddType(0x837D, "C8BFBD1E-268E-4521-8BBA-BF314C399557", "Linux PowerPC-64 
LE /usr verity signature");
+   AddType(0x837E, "0B888863-D7F8-4D9E-9766-239FCE4D58AF", "Linux PowerPC-64 
BE /usr verity signature");
+   AddType(0x837F, "7007891D-D371-4A80-86A4-5CB875B9302E", "Linux PowerPC-32 
/usr verity signature");
+   AddType(0x8380, "C3836A13-3137-45BA-B583-B16C50FE5EB4", "Linux RISC-V-32 
/usr verity signature");
+   AddType(0x8381, "D2F9000A-7A18-453F-B5CD-4D32F77A7B32", "Linux RISC-V-64 
/usr verity signature");
+   AddType(0x8382, "17440E4F-A8D0-467F-A46E-3912AE6EF2C5", "Linux s390 /usr 
verity signature");
+   AddType(0x8383, "3F324816-667B-46AE-86EE-9B0C0C6C11B4", "Linux s390x /usr 
verity signature");
+   AddType(0x8384, "4EDE75E2-6CCC-4CC8-B9C7-70334B087510", "Linux TILE-Gx /usr 
verity signature");
+   AddType(0x8385, "E7BB33FB-06CF-4E81-8273-E543B413E2E2", "Linux x86-64 /usr 
verity signature");
+   AddType(0x8386, "974A71C0-DE41-43C3-BE5D-5C5CCD1AD2C0", "Linux x86 /usr 
verity signature");
 
    // Used by Intel Rapid Start technology
    AddType(0x8400, "D3BFE2DE-3DAF-11DF-BA40-E3A556D89593", "Intel Rapid 
Start");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/sgdisk.8 new/gptfdisk-1.0.10/sgdisk.8
--- old/gptfdisk-1.0.9/sgdisk.8 2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/sgdisk.8        2024-02-20 01:55:41.000000000 +0100
@@ -1,6 +1,6 @@
-.\" Copyright 2011-2022 Roderick W. Smith ([email protected])
+.\" Copyright 2011-2024 Roderick W. Smith ([email protected])
 .\" May be distributed under the GNU General Public License
-.TH "SGDISK" "8" "1.0.9" "Roderick W. Smith" "GPT fdisk Manual"
+.TH "SGDISK" "8" "1.0.10" "Roderick W. Smith" "GPT fdisk Manual"
 .SH "NAME"
 sgdisk \- Command\-line GUID partition table (GPT) manipulator for Linux and 
Unix
 .SH "SYNOPSIS"
@@ -23,7 +23,7 @@
 main and backup data, as well as between the GPT headers and the partition
 tables. For information on MBR vs. GPT, as well as GPT terminology and
 structure, see the extended \fBgdisk\fR documentation at
-\fIhttp://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
+\fIhttps://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.
 
 The \fBsgdisk\fR program employs a user interface that's based entirely on
 the command line, making it suitable for use in scripts or by experts who
@@ -304,13 +304,23 @@
 to create a partition in that space, then it will \fBnot\fR be end\-aligned.
 
 .TP
-.B \-j, \-\-adjust\-main\-table=sector
-Adjust the location of the main partition table. This value is normally 2,
+.B \-j, \-\-move\-main\-table=sector
+Sets the start sector of the main partition table. This value is normally 2,
 but it may need to be increased in some cases, such as when a
 system\-on\-chip (SoC) is hard\-coded to read boot code from sector 2. I
 recommend against adjusting this value unless doing so is absolutely
 necessary.
 
+.TP
+.B \-k, \-\-move\-backup\-table=sector
+Sets the start sector of the second/backup partition table. The backup table
+is usually placed just before the last sector, which holds the backup header.
+The default value is thus the size of the disk, minus one, minus the total
+size of the partition table (in sectors, usually 32).
+There are probably very few reasons to ever change this, and while the EFI
+standard does not mandate it, most tooling assumes the backup table to be at
+the very end of the disk.
+
 .TP 
 .B \-l, \-\-load\-backup=file
 Load partition data from a backup file. This option is the reverse of the
@@ -370,8 +380,11 @@
 .B \-N, \-\-largest\-new=num
 Create a new partition that fills the largest available block of space on
 the disk. You can use the \fI\-a\fR (\fI\-\-set\-alignment\fR) option to
-adjust the alignment, if desired. A num value of 0 causes the program to
-use the first available partition number.
+adjust the alignment, if desired. A num value of 0 causes the program to use
+the first available partition number. Subsequent uses of the \fI\-A\fR
+(\fI\-\-attributes\fR), \fI\-c\fR (\fI\-\-change\-name\fR), \fI\-t\fR
+(\fI\-\-typecode\fR), and \fI\-u\fR (\fI\-\-partition\-guid\fR) options may
+also use \fI0\fR to refer to the same partition.
 
 .TP 
 .B \-o, \-\-clear
@@ -632,11 +645,11 @@
 .BR sfdisk (8),
 .BR fixparts (8).
 
-\fIhttp://en.wikipedia.org/wiki/GUID_Partition_Table\fR
+\fIhttps://en.wikipedia.org/wiki/GUID_Partition_Table\fR
 
-\fIhttp://developer.apple.com/technotes/tn2006/tn2166.html\fR
+\fIhttps://developer.apple.com/technotes/tn2006/tn2166.html\fR
 
-\fIhttp://www.rodsbooks.com/gdisk/\fR
+\fIhttps://www.rodsbooks.com/gdisk/\fR
 
 .SH "AVAILABILITY"
 The \fBsgdisk\fR command is part of the \fIGPT fdisk\fR package and is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/sgdisk.html 
new/gptfdisk-1.0.10/sgdisk.html
--- old/gptfdisk-1.0.9/sgdisk.html      2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/sgdisk.html     2024-02-20 01:55:41.000000000 +0100
@@ -4,7 +4,7 @@
 <HTML><HEAD><TITLE>Man page of SGDISK</TITLE>
 </HEAD><BODY>
 <H1>SGDISK</H1>
-Section: GPT fdisk Manual (8)<BR>Updated: 1.0.9<BR><A HREF="#index">Index</A>
+Section: GPT fdisk Manual (8)<BR>Updated: 1.0.10<BR><A HREF="#index">Index</A>
 <A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
 
 <A NAME="lbAB">&nbsp;</A>
@@ -37,7 +37,7 @@
 main and backup data, as well as between the GPT headers and the partition
 tables. For information on MBR vs. GPT, as well as GPT terminology and
 structure, see the extended <B>gdisk</B> documentation at
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I> 
or consult Wikipedia.
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 or consult Wikipedia.
 <P>
 The <B>sgdisk</B> program employs a user interface that's based entirely on
 the command line, making it suitable for use in scripts or by experts who
@@ -344,15 +344,26 @@
 with the current final partition being aligned, and if <B>sgdisk</B> is asked
 to create a partition in that space, then it will <B>not</B> be end-aligned.
 <P>
-<DT><B>-j, --adjust-main-table=sector</B>
+<DT><B>-j, --move-main-table=sector</B>
 
 <DD>
-Adjust the location of the main partition table. This value is normally 2,
+Sets the start sector of the main partition table. This value is normally 2,
 but it may need to be increased in some cases, such as when a
 system-on-chip (SoC) is hard-coded to read boot code from sector 2. I
 recommend against adjusting this value unless doing so is absolutely
 necessary.
 <P>
+<DT><B>-k, --move-backup-table=sector</B>
+
+<DD>
+Sets the start sector of the second/backup partition table. The backup table
+is usually placed just before the last sector, which holds the backup header.
+The default value is thus the size of the disk, minus one, minus the total
+size of the partition table (in sectors, usually 32).
+There are probably very few reasons to ever change this, and while the EFI
+standard does not mandate it, most tooling assumes the backup table to be at
+the very end of the disk.
+<P>
 <DT><B>-l, --load-backup=file</B>
 
 <DD>
@@ -417,8 +428,11 @@
 <DD>
 Create a new partition that fills the largest available block of space on
 the disk. You can use the <I>-a</I> (<I>--set-alignment</I>) option to
-adjust the alignment, if desired. A num value of 0 causes the program to
-use the first available partition number.
+adjust the alignment, if desired. A num value of 0 causes the program to use
+the first available partition number. Subsequent uses of the <I>-A</I>
+(<I>--attributes</I>), <I>-c</I> (<I>--change-name</I>), <I>-t</I>
+(<I>--typecode</I>), and <I>-u</I> (<I>--partition-guid</I>) options may
+also use <I>0</I> to refer to the same partition.
 <P>
 <DT><B>-o, --clear</B>
 
@@ -734,11 +748,11 @@
 <B><A HREF="/cgi-bin/man/man2html?8+fixparts">fixparts</A></B>(8).
 
 <P>
-<I><A 
HREF="http://en.wikipedia.org/wiki/GUID_Partition_Table";>http://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
+<I><A 
HREF="https://en.wikipedia.org/wiki/GUID_Partition_Table";>https://en.wikipedia.org/wiki/GUID_Partition_Table</A></I>
 <P>
-<I><A 
HREF="http://developer.apple.com/technotes/tn2006/tn2166.html";>http://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
+<I><A 
HREF="https://developer.apple.com/technotes/tn2006/tn2166.html";>https://developer.apple.com/technotes/tn2006/tn2166.html</A></I>
 <P>
-<I><A 
HREF="http://www.rodsbooks.com/gdisk/";>http://www.rodsbooks.com/gdisk/</A></I>
+<I><A 
HREF="https://www.rodsbooks.com/gdisk/";>https://www.rodsbooks.com/gdisk/</A></I>
 <P>
 <A NAME="lbAJ">&nbsp;</A>
 <H2>AVAILABILITY</H2>
@@ -764,6 +778,6 @@
 This document was created by
 <A HREF="/cgi-bin/man/man2html">man2html</A>,
 using the manual pages.<BR>
-Time: 23:17:12 GMT, April 14, 2022
+Time: 00:55:41 GMT, February 20, 2024
 </BODY>
 </HTML>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/support.cc 
new/gptfdisk-1.0.10/support.cc
--- old/gptfdisk-1.0.9/support.cc       2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/support.cc      2024-02-20 01:55:41.000000000 +0100
@@ -3,7 +3,7 @@
 // Primarily by Rod Smith, February 2009, but with a few functions
 // copied from other sources (see attributions below).
 
-/* This program is copyright (c) 2009-2022 by Roderick W. Smith. It is 
distributed
+/* This program is copyright (c) 2009-2024 by Roderick W. Smith. It is 
distributed
   under the terms of the GNU GPL version 2, as detailed in the COPYING file. */
 
 #define __STDC_LIMIT_MACROS
@@ -124,6 +124,8 @@
 // inValue works out to something outside the range low-high, returns the
 // computed value; the calling function is responsible for checking the
 // validity of this value.
+// If inValue contains a decimal number (e.g., "9.5G"), quietly truncate it
+// (to "9G" in this example).
 // NOTE: There's a difference in how GCC and VC++ treat oversized values
 // (say, "999999999999999999999") read via the ">>" operator; GCC turns
 // them into the maximum value for the type, whereas VC++ turns them into
@@ -158,6 +160,15 @@
       badInput = 1;
    inString >> response >> suffix;
    suffix = toupper(suffix);
+   foundAt = suffixes.find(suffix);
+   // If suffix is invalid, try to find a valid one. Done because users
+   // sometimes enter decimal numbers; when they do, suffix becomes
+   // '.', and we need to truncate the number and find the real suffix.
+   while (foundAt > (suffixes.length() - 1) && inString.peek() != -1) {
+      inString >> suffix;
+      foundAt = suffixes.find(suffix);
+      suffix = toupper(suffix);
+   }
 
    // If no response, or if response == 0, use default (def)
    if ((inValue.length() == 0) || (response == 0)) {
@@ -167,7 +178,6 @@
    } // if
 
    // Find multiplication and division factors for the suffix
-   foundAt = suffixes.find(suffix);
    if (foundAt != string::npos) {
       bytesPerUnit = UINT64_C(1) << (10 * (foundAt + 1));
       mult = bytesPerUnit / sSize;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gptfdisk-1.0.9/support.h 
new/gptfdisk-1.0.10/support.h
--- old/gptfdisk-1.0.9/support.h        2022-04-15 01:17:12.000000000 +0200
+++ new/gptfdisk-1.0.10/support.h       2024-02-20 01:55:41.000000000 +0100
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <string>
 
-#define GPTFDISK_VERSION "1.0.9"
+#define GPTFDISK_VERSION "1.0.10"
 
 #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined 
(__APPLE__)
 // Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no 
lseek64

Reply via email to