Patch set from Bin Meng to clean up some code & support building sgdisk for Windows
diff --git a/Makefile b/Makefile
index 0d7309c..7ecab54 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
-CFLAGS+=-D_FILE_OFFSET_BITS=64
-#CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16
-CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64
+#CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16
+CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64
 LDFLAGS+=
+LDLIBS+=-luuid #-licuio -licuuc
 LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
 MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
 LIB_OBJS=$(LIB_NAMES:=.o)
@@ -12,19 +12,16 @@
 all:	cgdisk gdisk sgdisk fixparts
 
 gdisk:	$(LIB_OBJS) gdisk.o gpttext.o
-	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -luuid $(LDLIBS) -o gdisk
-#	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -licuio -licuuc -luuid -o gdisk
+	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) $(LDLIBS) -o gdisk
 
 cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
-	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -luuid -lncursesw $(LDLIBS) -o cgdisk
-#	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -licuio -licuuc -luuid -lncurses -o cgdisk
+	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) $(LDLIBS) -lncursesw -o cgdisk
 
 sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
-	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -luuid -lpopt $(LDLIBS) -o sgdisk
-#	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -licuio -licuuc -luuid -lpopt -o sgdisk
+	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) $(LDLIBS) -lpopt -o sgdisk
 
 fixparts: $(MBR_LIB_OBJS) fixparts.o
-	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) $(LDLIBS) -o fixparts
+	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts
 
 test:
 	./gdisk_test.sh
diff --git a/Makefile.freebsd b/Makefile.freebsd
index 4b4b616..7223f2d 100644
--- a/Makefile.freebsd
+++ b/Makefile.freebsd
@@ -1,9 +1,8 @@
-CC=clang
 CXX=clang++
-CFLAGS+=-D_FILE_OFFSET_BITS=64
-#CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16 -I/usr/local/include
-CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include 
-LDFLAGS+=
+#CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16 -I/usr/local/include
+CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include 
+LDFLAGS+=-L/usr/local/lib
+LDLIBS+=-luuid #-licuio
 LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
 MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
 LIB_OBJS=$(LIB_NAMES:=.o)
@@ -14,25 +13,22 @@
 all:	gdisk cgdisk sgdisk fixparts
 
 gdisk:	$(LIB_OBJS) gdisk.o gpttext.o
-#	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o -L/usr/local/lib $(LDFLAGS) -licuio -luuid -o gdisk
-	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o -L/usr/local/lib $(LDFLAGS) -luuid -o gdisk
+	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) $(LDLIBS) -o gdisk
 
 cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
-#	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o -L/usr/local/lib $(LDFLAGS) -licuio -luuid -lncurses -o cgdisk
-	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o -L/usr/local/lib $(LDFLAGS) -luuid -lncurses -o cgdisk
+	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) $(LDLIBS) -lncurses -o cgdisk
 
 sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
-#	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o -L/usr/local/lib $(LDFLAGS) -luuid -licuio -lpopt -o sgdisk
-	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o -L/usr/local/lib $(LDFLAGS) -luuid -lpopt -o sgdisk
+	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) $(LDLIBS) -lpopt -o sgdisk
 
 fixparts: $(MBR_LIB_OBJS) fixparts.o
-	$(CXX) $(MBR_LIB_OBJS) fixparts.o -L/usr/local/lib $(LDFLAGS) -o fixparts
+	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts
 
 lint:	#no pre-reqs
 	lint $(SRCS)
 
 clean:	#no pre-reqs
-	rm -f core *.o *~ gdisk sgdisk
+	rm -f core *.o *~ gdisk cgdisk sgdisk fixparts
 
 # what are the source dependencies
 depend: $(SRCS)
diff --git a/Makefile.mac b/Makefile.mac
index ea21fa6..91a281c 100644
--- a/Makefile.mac
+++ b/Makefile.mac
@@ -1,11 +1,11 @@
-CC=gcc
 CXX=c++
 # FATBINFLAGS=-arch x86_64 -arch i386 -mmacosx-version-min=10.9
 FATBINFLAGS=-arch x86_64 -arch arm64 -mmacosx-version-min=10.9
 THINBINFLAGS=-arch x86_64 -mmacosx-version-min=10.9
-CFLAGS=$(FATBINFLAGS) -O2 -D_FILE_OFFSET_BITS=64 -g
-#CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16 -I/opt/local/include -I/usr/local/include -I/opt/local/include -g
-CXXFLAGS=$(FATBINFLAGS) -O2 -Wall -D_FILE_OFFSET_BITS=64 -stdlib=libc++ -I/opt/local/include -I /usr/local/include -I/opt/local/include -g
+#CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16 -I/opt/local/include -I/usr/local/include -I/opt/local/include
+CXXFLAGS=$(FATBINFLAGS) -O2 -Wall -D_FILE_OFFSET_BITS=64 -stdlib=libc++ -I/opt/local/include -I /usr/local/include -I/opt/local/include
+LDFLAGS+=
+LDLIBS+= #-licucore
 LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
 MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
 #LIB_SRCS=$(NAMES:=.cc)
@@ -17,25 +17,17 @@
 all:	gdisk sgdisk cgdisk fixparts
 
 gdisk:	$(LIB_OBJS) gpttext.o gdisk.o
-	$(CXX) $(LIB_OBJS) gpttext.o gdisk.o $(FATBINFLAGS) -o gdisk
-#	$(CXX) $(LIB_OBJS) -L/usr/lib -licucore gpttext.o gdisk.o -o gdisk
+	$(CXX) $(LIB_OBJS) gpttext.o gdisk.o $(FATBINFLAGS) $(LDFLAGS) $(LDLIBS) -o gdisk
 
 cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
-	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o /usr/local/Cellar/ncurses/6.2/lib/libncurses.dylib $(LDFLAGS) -o cgdisk
-#	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o /usr/lib/libncurses.dylib $(LDFLAGS) -o cgdisk
-#	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -licucore -lncurses -o cgdisk
+	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) $(LDLIBS) /usr/local/Cellar/ncurses/6.2/lib/libncurses.dylib -o cgdisk
 
 sgdisk: $(LIB_OBJS) gptcl.o sgdisk.o
-#	$(CXX) $(LIB_OBJS) gptcl.o sgdisk.o /opt/local/lib/libiconv.a /opt/local/lib/libintl.a /opt/local/lib/libpopt.a $(FATBINFLAGS) -o sgdisk
-	$(CXX) $(LIB_OBJS) gptcl.o sgdisk.o -L/usr/local/lib -lpopt $(THINBINFLAGS) -o sgdisk
-#	$(CXX) $(LIB_OBJS) gptcl.o sgdisk.o -L/sw/lib -licucore -lpopt -o sgdisk
+	$(CXX) $(LIB_OBJS) gptcl.o sgdisk.o $(LDFLAGS) -L/usr/local/lib $(LDLIBS) -lpopt $(THINBINFLAGS) -o sgdisk
 
 fixparts: $(MBR_LIB_OBJS) fixparts.o
 	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) $(FATBINFLAGS) -o fixparts
 
-testguid:	$(LIB_OBJS) testguid.o
-	$(CXX) $(LIB_OBJS) testguid.o -o testguid
-
 lint:	#no pre-reqs
 	lint $(SRCS)
 
diff --git a/Makefile.mingw b/Makefile.mingw
index acfff64..2ed228a 100644
--- a/Makefile.mingw
+++ b/Makefile.mingw
@@ -1,9 +1,9 @@
-CC=/usr/bin/i686-w64-mingw32-gcc
-CXX=/usr/bin/i686-w64-mingw32-g++
-STRIP=/usr/bin/i686-w64-mingw32-strip
-CFLAGS=-O2 -Wall -static -static-libgcc -static-libstdc++  -D_FILE_OFFSET_BITS=64 -g
-CXXFLAGS=-O2 -Wall -static -static-libgcc -static-libstdc++ -D_FILE_OFFSET_BITS=64 -g
-#CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
+CXX=i686-w64-mingw32-g++
+STRIP=i686-w64-mingw32-strip
+CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -static -static-libgcc -static-libstdc++
+#CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include
+LDFLAGS+=-static -static-libgcc -static-libstdc++
+LDLIBS+=-lrpcrt4
 LIB_NAMES=guid gptpart bsd parttypes attributes crc32 mbrpart basicmbr mbr gpt support diskio diskio-windows
 MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
 LIB_SRCS=$(NAMES:=.cc)
@@ -12,25 +12,28 @@
 LIB_HEADERS=$(LIB_NAMES:=.h)
 DEPEND= makedepend $(CFLAGS)
 
-all:	gdisk fixparts
+all:	gdisk sgdisk fixparts
 
 gdisk:	$(LIB_OBJS) gdisk.o gpttext.o
-	$(CXX) $(CXXFLAGS) $(LIB_OBJS) gdisk.o gpttext.o -lrpcrt4 -static-libgcc -o gdisk32.exe
+	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) $(LDLIBS) -o gdisk32.exe
 
-sgdisk: $(LIB_OBJS) sgdisk.o
-	$(CXX) $(CXXFLAGS) $(LIB_OBJS) sgdisk.o -lpopt -static-libgcc -o sgdisk32.exe
+cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
+	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) $(LDLIBS) -lncursesw -o cgdisk32.exe
+
+sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
+	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) $(LDLIBS) -lpopt -lintl -liconv -o sgdisk32.exe
 
 fixparts: $(MBR_LIB_OBJS) fixparts.o
-	$(CXX) $(CXXFLAGS) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -static-libgcc -o fixparts32.exe
+	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts32.exe
 
 lint:	#no pre-reqs
 	lint $(SRCS)
 
 clean:	#no pre-reqs
-	rm -f core *.o *~ gdisk.exe sgdisk.exe
+	rm -f core *.o *~ gdisk32.exe cgdisk32.exe sgdisk32.exe fixparts32.exe
 
 strip:	#no pre-reqs
-	$(STRIP) gdisk32.exe fixparts32.exe
+	$(STRIP) gdisk32.exe cgdisk32.exe sgdisk32.exe fixparts32.exe
 
 # what are the source dependencies
 depend: $(SRCS)
diff --git a/Makefile.mingw64 b/Makefile.mingw64
index 7e4b32b..3070a42 100644
--- a/Makefile.mingw64
+++ b/Makefile.mingw64
@@ -1,9 +1,9 @@
-CC=/usr/bin/x86_64-w64-mingw32-gcc
-CXX=/usr/bin/x86_64-w64-mingw32-g++
-STRIP=/usr/bin/x86_64-w64-mingw32-strip
-CFLAGS=-O2 -Wall -static -static-libgcc -static-libstdc++  -D_FILE_OFFSET_BITS=64 -g
-CXXFLAGS=-O2 -Wall -static -static-libgcc -static-libstdc++ -D_FILE_OFFSET_BITS=64 -g
+CXX=x86_64-w64-mingw32-g++
+STRIP=x86_64-w64-mingw32-strip
+CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -g
 #CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
+LDFLAGS+=-static -static-libgcc -static-libstdc++
+LDLIBS+=-lrpcrt4
 LIB_NAMES=guid gptpart bsd parttypes attributes crc32 mbrpart basicmbr mbr gpt support diskio diskio-windows
 MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
 LIB_SRCS=$(NAMES:=.cc)
@@ -12,25 +12,29 @@
 LIB_HEADERS=$(LIB_NAMES:=.h)
 DEPEND= makedepend $(CFLAGS)
 
-all:	gdisk fixparts
+# Note: cgdisk is buildable in Windows, but not in Ubuntu 20.04 or 22.04
+all:	gdisk sgdisk fixparts
 
 gdisk:	$(LIB_OBJS) gdisk.o gpttext.o
-	$(CXX) $(CXXFLAGS) $(LIB_OBJS) gdisk.o gpttext.o -lrpcrt4 -static-libgcc -o gdisk64.exe
+	$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) $(LDLIBS) -o gdisk64.exe
 
-sgdisk: $(LIB_OBJS) sgdisk.o
-	$(CXX) $(CXXFLAGS) $(LIB_OBJS) sgdisk.o -lpopt -static-libgcc -o sgdisk64.exe
+cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
+	$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) $(LDLIBS) -lncursesw -o cgdisk64.exe
+
+sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
+	$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) $(LDLIBS) -lpopt -lintl -liconv -o sgdisk64.exe
 
 fixparts: $(MBR_LIB_OBJS) fixparts.o
-	$(CXX) $(CXXFLAGS) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -static-libgcc -o fixparts64.exe
+	$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts64.exe
 
 lint:	#no pre-reqs
 	lint $(SRCS)
 
 clean:	#no pre-reqs
-	rm -f core *.o *~ gdisk64.exe sgdisk64.exe
+	rm -f core *.o *~ gdisk64.exe cgdisk64.exe sgdisk64.exe fixparts64.exe
 
 strip:	#no pre-reqs
-	$(STRIP) gdisk64.exe fixparts64.exe
+	$(STRIP) gdisk64.exe cgdisk64.exe sgdisk64.exe fixparts64.exe
 
 # what are the source dependencies
 depend: $(SRCS)
diff --git a/README.Windows b/README.Windows
index 3f49023..275b56d 100644
--- a/README.Windows
+++ b/README.Windows
@@ -28,12 +28,8 @@
 

 The Windows version of GPT fdisk was added with version 0.6.2 of the

 package. The Windows binary package includes the gdisk.exe interactive

-text-mode program file but no equivalent to the sgdisk program that's

-available with Linux, FreeBSD, and OS X builds. In theory, an sgdisk.exe

-for Windows could be built if the popt library were installed. I've not

-attempted to do this myself, though. If you care to try, check

-http://gnuwin32.sourceforge.net/packages/popt.htm for information on popt

-for Windows.

+text-mode program file as well as the sgdisk program that's available

+with Linux, FreeBSD, and OS X builds.

 

 Beginning with version 0.8.10, I'm distributing both 32-bit and 64-bit

 binaries, which include the strings "32" or "64" in their names. The 32-bit

@@ -47,10 +43,11 @@
 software. Windows seems to be unfazed by most such problems, but I've not

 done an extensive survey of Windows partitioning tools on this score.

 

-To install the programs, copy the gdisk32.exe and fixparts32.exe (or

-gdisk64.exe and fixparts64.exe) program files to any directory on your

-path, such as C:\Windows. Alternatively, you can change to the program's

-directory or type its complete path whenever you use it.

+To install the programs, copy the gdisk32.exe, cgdisk32.exe, sgdisk32.exe

+and fixparts32.exe (or gdisk64.exe, cgdisk64.exe, sgdisk64.exe and

+fixparts64.exe) program files to any directory on your path, such as

+C:\Windows. Alternatively, you can change to the program's directory or type

+its complete path whenever you use it.

 

 To use the programs, first launch a Command Prompt as the Administrator. To

 do this, locate the Command Prompt program icon, right-click it, and select

@@ -74,17 +71,18 @@
 table on the first physical disk. Change the number at the end of the

 device name to change the disk edited.

 

-If you pass the "-l" option to gdisk.exe in addition to the disk

-identifier, the program displays the current partition table information

-and then exits. This use entails no risk to MBR disks, since the program

-never writes data back to the disk when used in this way.

+If you pass the "-l" option to gdisk64.exe in addition to the disk

+identifier, the program displays the current partition table information and

+then exits. (Alternatively, you can pass "-p" to sgdisk64.exe.) This use

+entails no risk to MBR disks, since the program never writes data back to

+the disk when used in this way.

 

-As noted above, editing the first disk with GPT fdisk is usually a Bad

-Idea. An exception would be if your system uses an Extensible Firmware

-Interface (EFI) and already boots from a GPT disk. It's safer to edit

-non-boot disks, which usually have numbers of 1 and above, but only if you

-run a version of Windows with GPT support. For more information on Windows'

-support of GPT, see Microsoft's Web page on the topic:

+As noted above, editing the first disk with GPT fdisk is a Bad Idea on older

+BIOS-based computers. Newer computers typically use an Extensible Firmware

+Interface (EFI) and boot from GPT disks. It's safer to edit non-boot disks,

+which usually have numbers of 1 and above, but only if you run a version of

+Windows with GPT support. For more information on Windows' support of GPT,

+see Microsoft's Web page on the topic:

 

 http://www.microsoft.com/whdc/device/storage/GPT_FAQ.mspx

 

@@ -103,34 +101,91 @@
 I have successfully compiled GPT fdisk using three different Windows

 compilers:

 

-- MinGW (http://www.mingw.org), and in particular its Linux-hosted

-  cross-compiler -- Under Ubuntu Linux, the Makefile.mingw and

-  Makefile.mingw64 files enable compilation of the software via MinGW.

-  (Type "make -f Makefile.mingw" to compile 32-bit binaries, and "make -f

-  Makefile.mingw64" to compile 64-bit binaries.) If you try to compile

-  using another compiler or even using MinGW under Windows or another Linux

-  variety, you may need to adjust the Makefile.mingw options.

+- MinGW (https://www.mingw-w64.org/), using either a Linux-hosted

+  cross-compiler or under Windows using the original MinGW or MSYS2

+  (https://www.msys2.org). This is my only GPT fdisk development environment

+  for Windows in 2022.

 

 - Microsoft Visual C++ 2008 Express

   (http://www.microsoft.com/express/Windows/) -- This compiler requires a

   third-party stdint.h file (I used the one from

-  http://msinttypes.googlecode.com/svn/trunk/stdint.h), but it otherwise

-  works fine. A project is easily created by adding all the *.h files and

-  all the *.cc files except diskio-unix.cc, sgdisk.cc, and whichever

-  program file you intend to NOT build (gdisk.cc or fixparts.cc).

+  http://web.archive.org/web/20130317001712/http://msinttypes.googlecode.com/svn/trunk/stdint.h),

+  but it otherwise worked fine the last time I tried it. A project is easily

+  created by adding all the *.h files and all the *.cc files except

+  diskio-unix.cc, sgdisk.cc, and whichever program file you intend to NOT

+  build (gdisk.cc or fixparts.cc).

 

 - Microsoft Visual C++ 2010 Express -- This compiler works much like the

   2008 version, although I didn't need to add a third-party stdint.h file.

 

-The MinGW compiler produces much larger executables than do the MS

-compilers. The resulting binaries seem to work equally well, but my testing

-has been minimal.

-

-I've also attempted to compile the code with OpenWatcom 1.8, but this

-attempt failed, mostly because the compiler can't yet handle iostream

-output on standard C++ strings. OpenWatcom also seems to have incorrectly

-set the value of UINT32_MAX as if uint32_t values were 64-bit integers.

-This alone won't cause the compile to fail, but it would create bugs.

+Although I used Microsoft Visual C++ in the past, I haven't tried using

+these compilers recently and so I can't promise they would work today (in

+2022).

 

 If you modify GPT fdisk to get it to compile under another compiler, I

 welcome submission of patches.

+

+The following instructions focus on use of MinGW to compile GPT fdisk for

+Windows.

+

+My primary development environment is Ubuntu Linux, using the MinGW

+cross-compiler. This system can compile the gdisk and fixparts binaries with

+no need for additional libraries; after installing MinGW (via the

+g++-mingw-w64 package in Ubuntu, or the equivalent in another distribution),

+you can type "make -f Makefile.mingw" to compile 32-bit binaries, and "make

+-f Makefile.mingw64" to compile 64-bit binaries.

+

+If you use Windows, your best bet is likely to be to install the MSYS2

+package (https://www.msys2.org). This package provides MinGW and a package

+management system based on pacman (used by Arch Linux) for installing

+additional libraries. To install the libraries needed to compile sgdisk and

+cgdisk, type "pacman -S mingw-w64-x86_64-popt mingw-w64-x86_64-gettext

+mingw-w64-x86_64-ncurses" if you want to compile 64-bit binaries; change

+'x86_64' to 'i686' for 32-bit packages. This command will install the popt

+library needed by sgdisk and the ncurses library needed by cgdisk, along

+with gettext, which is needed by popt. With these libraries installed, you

+should be able to compile all four Linux programs -- gdisk, cgdisk, sgdisk,

+and fixparts.

+

+If you want to compile sgdisk for Windows under Linux, you can do so;

+however, you must copy the relevant header and library files from a Windows

+installation to Linux. Specifically, you must copy:

+

+    Windows File                   Linux Directory

+    ------------                   ---------------

+    /mingw64/include/popt.h        /usr/x86_64-w64-mingw32/include/

+    /mingw64/lib/libpopt.a         /usr/x86_64-w64-mingw32/lib/

+    /mingw64/lib/libintl.a         /usr/x86_64-w64-mingw32/lib/

+    /mingw64/lib/libiconv.a        /usr/x86_64-w64-mingw32/lib/

+

+For 32-bit binaries, change /mingw64 to /mingw32 on the Windows source and

+x86_64-w64-mingw32 to i686-w64-mingw32 on the Linux destination.

+

+In theory, you should be able to do something similar to compile cgdisk. The

+relevant files are:

+

+    Windows File                            Linux Directory

+    ------------                            ---------------

+    /mingw64/include/ncursesw/curses.h      /usr/x86_64-w64-mingw32/include/ncursesw/

+    /mingw64/include/ncursesw/ncurses.h     /usr/x86_64-w64-mingw32/include/ncursesw/

+    /mingw64/include/ncursesw/ncurses_dll.h /usr/x86_64-w64-mingw32/include/ncursesw/

+    /mingw64/include/ncursesw/unctrl.h      /usr/x86_64-w64-mingw32/include/ncursesw/

+    /mingw64/lib/libncurses.a               /usr/x86_64-w64-mingw32/lib/

+

+In practice, this has not worked for me; the compilation fails with a

+complaint about an undefined reference to 'nanosleep'. My guess is that the

+ncurses version installed in Windows is too new to work with the MinGW

+libraries in Ubuntu (20.04 or 22.04). It's conceivable it would work with

+another distribution, though.

+

+In any event, the Makefile.mingw and Makefile.mingw64 files contain targets

+for all four programs; however, because of the problem building cgdisk in

+Linux, that program is omitted from the "all" target. It can still be built

+explicitly, though, as in:

+

+make -f Makefile.mingw64 cgdisk

+

+The Makefiles are configured to create statically-linked binaries so as to

+simplify installation of the binaries. If you want smaller binaries, you can

+remove the various static options from the relevant Makefile. You can also

+strip the binaries ("make -f Makefile.mingw64 strip") to remove unused code.

diff --git a/attributes.h b/attributes.h
index 6a61b8c..5eb57e3 100644
--- a/attributes.h
+++ b/attributes.h
@@ -10,11 +10,9 @@
 #define NUM_ATR 64 /* # of attributes -- 64, since it's a 64-bit field */
 #define ATR_NAME_SIZE 25 /* maximum size of attribute names */
 
-using namespace std;
-
 class Attributes {
 protected:
-   static string atNames[NUM_ATR];
+   static std::string atNames[NUM_ATR];
    static int numAttrs;
    void Setup(void);
    uint64_t attributes;
@@ -30,12 +28,12 @@
    void ShowAttributes(const uint32_t partNum);
 
    void ChangeAttributes(void);
-   bool OperateOnAttributes(const uint32_t partNum, const string& attributeOperator, const string& attributeBits);
+   bool OperateOnAttributes(const uint32_t partNum, const std::string& attributeOperator, const std::string& attributeBits);
 
-   static const string& GetAttributeName(const uint32_t bitNum) {return atNames [bitNum];}
+   static const std::string& GetAttributeName(const uint32_t bitNum) {return atNames [bitNum];}
    static void ListAttributes(void);
 }; // class Attributes
 
-ostream & operator<<(ostream & os, const Attributes & data);
+std::ostream & operator<<(std::ostream & os, const Attributes & data);
 
 #endif
diff --git a/basicmbr.h b/basicmbr.h
index f4b0e45..696f826 100644
--- a/basicmbr.h
+++ b/basicmbr.h
@@ -16,8 +16,6 @@
 // Maximum number of MBR partitions
 #define MAX_MBR_PARTS 128
 
-using namespace std;
-
 /****************************************
  *                                      *
  * MBRData class and related structures *
@@ -57,23 +55,23 @@
    uint32_t numSecspTrack; // number of sectors per track, in CHS scheme
    DiskIO* myDisk;
    int canDeleteMyDisk;
-   string device;
+   std::string device;
    MBRValidity state;
    MBRPart* GetPartition(int i); // Return primary or logical partition
 public:
    BasicMBRData(void);
-   BasicMBRData(string deviceFilename);
+   BasicMBRData(std::string deviceFilename);
    BasicMBRData(const BasicMBRData &);
    ~BasicMBRData(void);
    BasicMBRData & operator=(const BasicMBRData & orig);
 
    // File I/O functions...
-   int ReadMBRData(const string & deviceFilename);
+   int ReadMBRData(const std::string & deviceFilename);
    int ReadMBRData(DiskIO * theDisk, int checkBlockSize = 1);
    int ReadLogicalParts(uint64_t extendedStart, int partNum);
    int WriteMBRData(void);
    int WriteMBRData(DiskIO *theDisk);
-   int WriteMBRData(const string & deviceFilename);
+   int WriteMBRData(const std::string & deviceFilename);
    int WriteMBRData(struct TempMBR & mbr, DiskIO *theDisk, uint64_t sector);
    void DiskSync(void) {myDisk->DiskSync();}
    void SetDisk(DiskIO *theDisk);
@@ -147,7 +145,7 @@
    uint64_t GetLength(int i);
 
    // User interaction functions....
-   int DoMenu(const string& prompt = "\nMBR command (? for help): ");
+   int DoMenu(const std::string& prompt = "\nMBR command (? for help): ");
    void ShowCommands(void);
 }; // class BasicMBRData
 
diff --git a/bsd.h b/bsd.h
index c4b74a4..e042b7b 100644
--- a/bsd.h
+++ b/bsd.h
@@ -30,9 +30,6 @@
 // memory errors will occur.
 #define MAX_BSD_PARTS 64
 
-
-using namespace std;
-
 /****************************************
  *                                      *
  * BSDData class and related structures *
@@ -75,7 +72,7 @@
    public:
       BSDData(void);
       ~BSDData(void);
-      int ReadBSDData(const string & deviceFilename, uint64_t startSector, uint64_t endSector);
+      int ReadBSDData(const std::string & deviceFilename, uint64_t startSector, uint64_t endSector);
       int ReadBSDData(DiskIO *myDisk, uint64_t startSector, uint64_t endSector);
       void ReverseMetaBytes(void);
       void DisplayBSDData(void);
diff --git a/crc32.cc b/crc32.cc
index d253dd9..5eca100 100644
--- a/crc32.cc
+++ b/crc32.cc
@@ -31,7 +31,7 @@
  */

 uint32_t chksum_crc32 (unsigned char *block, unsigned int length)

 {

-   register unsigned long crc;

+   unsigned long crc;

    unsigned long i;

 

    crc = 0xFFFFFFFF;

diff --git a/diskio.h b/diskio.h
index 0bdaba4..b5c2ecc 100644
--- a/diskio.h
+++ b/diskio.h
@@ -37,8 +37,6 @@
 #include "support.h"
 //#include "parttypes.h"
 
-using namespace std;
-
 /***************************************
  *                                     *
  * DiskIO class and related structures *
@@ -47,9 +45,9 @@
 
 class DiskIO {
    protected:
-      string userFilename;
-      string realFilename;
-      string modelName;
+      std::string userFilename;
+      std::string realFilename;
+      std::string modelName;
       int isOpen;
       int openForWrite;
 #ifdef _WIN32
@@ -62,9 +60,9 @@
       ~DiskIO(void);
 
       void MakeRealName(void);
-      int OpenForRead(const string & filename);
+      int OpenForRead(const std::string & filename);
       int OpenForRead(void);
-      int OpenForWrite(const string & filename);
+      int OpenForWrite(const std::string & filename);
       int OpenForWrite(void);
       void Close();
       int Seek(uint64_t sector);
@@ -73,12 +71,12 @@
       int DiskSync(void); // resync disk caches to use new partitions
       int GetBlockSize(void);
       int GetPhysBlockSize(void);
-      string GetModel(void) {return modelName;}
+      std::string GetModel(void) {return modelName;}
       uint32_t GetNumHeads(void);
       uint32_t GetNumSecsPerTrack(void);
       int IsOpen(void) {return isOpen;}
       int IsOpenForWrite(void) {return openForWrite;}
-      string GetName(void) const {return realFilename;}
+      std::string GetName(void) const {return realFilename;}
 
       uint64_t DiskSize(int* err);
 }; // class DiskIO
diff --git a/gdisk.cc b/gdisk.cc
index 5f85498..c9443bd 100644
--- a/gdisk.cc
+++ b/gdisk.cc
@@ -11,6 +11,8 @@
 #include <iostream>
 #include "gpttext.h"
 
+using namespace std;
+
 int main(int argc, char* argv[]) {
    GPTDataTextUI theGPT;
    string device = "";
diff --git a/gpt.h b/gpt.h
index cf05f59..5d19372 100644
--- a/gpt.h
+++ b/gpt.h
@@ -24,8 +24,6 @@
 // smallest Advanced Format drive I know of is 320GB in size
 #define SMALLEST_ADVANCED_FORMAT UINT64_C(585937500)
 
-using namespace std;
-
 /****************************************
  *                                      *
  * GPTData class and related structures *
@@ -67,7 +65,7 @@
    uint32_t numParts; // # of partitions the table can hold
    struct GPTHeader secondHeader;
    MBRData protectiveMBR;
-   string device; // device filename
+   std::string device; // device filename
    DiskIO myDisk;
    uint32_t blockSize; // device logical block size
    uint32_t physBlockSize; // device physical block size (or 0 if it can't be determined)
@@ -93,7 +91,7 @@
    // Basic necessary functions....
    GPTData(void);
    GPTData(const GPTData &);
-   GPTData(string deviceFilename);
+   GPTData(std::string deviceFilename);
    virtual ~GPTData(void);
    GPTData & operator=(const GPTData & orig);
 
@@ -111,18 +109,18 @@
    int FindInsanePartitions(void);
 
    // Load or save data from/to disk
-   int SetDisk(const string & deviceFilename);
+   int SetDisk(const std::string & deviceFilename);
    DiskIO* GetDisk(void) {return &myDisk;}
-   int LoadMBR(const string & f) {return protectiveMBR.ReadMBRData(f);}
+   int LoadMBR(const std::string & f) {return protectiveMBR.ReadMBRData(f);}
    int WriteProtectiveMBR(void) {return protectiveMBR.WriteMBRData(&myDisk);}
    void PartitionScan(void);
-   int LoadPartitions(const string & deviceFilename);
+   int LoadPartitions(const std::string & deviceFilename);
    int ForceLoadGPTData(void);
    int LoadMainTable(void);
    int LoadSecondTableAsMain(void);
    int SaveGPTData(int quiet = 0);
-   int SaveGPTBackup(const string & filename);
-   int LoadGPTBackup(const string & filename);
+   int SaveGPTBackup(const std::string & filename);
+   int LoadGPTBackup(const std::string & filename);
    int SaveMBR(void);
    int DestroyGPT(void);
    int DestroyMBR(void);
@@ -204,9 +202,9 @@
    void ReversePartitionBytes(); // for endianness
 
    // Attributes functions
-   int ManageAttributes(int partNum, const string & command, const string & bits);
+   int ManageAttributes(int partNum, const std::string & command, const std::string & bits);
    void ShowAttributes(const uint32_t partNum);
-   void GetAttribute(const uint32_t partNum, const string& attributeBits);
+   void GetAttribute(const uint32_t partNum, const std::string& attributeBits);
 
 }; // class GPTData
 
diff --git a/gptcl.cc b/gptcl.cc
index 3995093..34c9421 100644
--- a/gptcl.cc
+++ b/gptcl.cc
@@ -26,6 +26,8 @@
 #include <popt.h>
 #include "gptcl.h"
 
+using namespace std;
+
 GPTDataCL::GPTDataCL(void) {
    attributeOperation = backupFile = partName = hybrids = newPartInfo = NULL;
    mbrParts = twoParts = outDevice = typeCode = partGUID = diskGUID = NULL;
@@ -504,7 +506,7 @@
 // Create a hybrid or regular MBR from GPT data structures
 int GPTDataCL::BuildMBR(char* argument, int isHybrid) {
    int numParts, allOK = 1, i, origPartNum;
-   int eeLast, mbrNum = 0;
+   int eeLast = 0, mbrNum = 0;
    MBRPart newPart;
    BasicMBRData newMBR;
 
diff --git a/gptcl.h b/gptcl.h
index 183b846..57d3f5d 100644
--- a/gptcl.h
+++ b/gptcl.h
@@ -25,8 +25,6 @@
 #include "gpt.h"
 #include <popt.h>
 
-using namespace std;
-
 class GPTDataCL : public GPTData {
    protected:
       // Following are variables associated with popt parameters....
@@ -41,14 +39,14 @@
       int BuildMBR(char* argument, int isHybrid);
    public:
       GPTDataCL(void);
-      GPTDataCL(string filename);
+      GPTDataCL(std::string filename);
       ~GPTDataCL(void);
-      void LoadBackupFile(string backupFile, int &saveData, int &neverSaveData);
+      void LoadBackupFile(std::string backupFile, int &saveData, int &neverSaveData);
       int DoOptions(int argc, char* argv[]);
 }; // class GPTDataCL
 
 int CountColons(char* argument);
-uint64_t GetInt(const string & argument, int itemNum);
-string GetString(string argument, int itemNum);
+uint64_t GetInt(const std::string & argument, int itemNum);
+std::string GetString(std::string argument, int itemNum);
 
 #endif
diff --git a/gptcurses.cc b/gptcurses.cc
index 2ffcf4f..08b4257 100644
--- a/gptcurses.cc
+++ b/gptcurses.cc
@@ -90,7 +90,7 @@
 // unpartitioned space on the disk.
 // Returns the number of Spaces created.
 int GPTDataCurses::MakeSpacesFromParts(void) {
-   uint i;
+   uint32_t i;
    Space *tempSpace;
 
    EmptySpaces();
@@ -608,7 +608,7 @@
 // Show user's options. Refers to currentSpace to determine which options to show.
 // Highlights the option with the key selectedKey; or a default if that's invalid.
 void GPTDataCurses::DisplayOptions(char selectedKey) {
-   uint i, j = 0, firstLine, numPerLine;
+   uint64_t i, j = 0, firstLine, numPerLine;
    string optionName, optionDesc = "";
 
    if (currentSpace != NULL) {
diff --git a/gptcurses.h b/gptcurses.h
index a080987..8d2ecaf 100644
--- a/gptcurses.h
+++ b/gptcurses.h
@@ -27,12 +27,10 @@
 #include "gptpart.h"
 #include "gpt.h"
 
-using namespace std;
-
 struct MenuItem {
    int key; // Keyboard shortcut
-   string name; // Item name; 8 characters
-   string desc; // Description
+   std::string name; // Item name; 8 characters
+   std::string desc; // Description
 };
 
 static struct MenuItem menuMain[] = {
@@ -81,7 +79,7 @@
    Space *lastSpace;
    Space *currentSpace;
    int currentSpaceNum;
-   string whichOptions;
+   std::string whichOptions;
    char currentKey;
    int numSpaces;
    int displayType;
@@ -130,7 +128,7 @@
 void ClearLine(int lineNum);
 void ClearBottom(void);
 void PromptToContinue(void);
-void Report(string theText);
+void Report(std::string theText);
 void ShowTypes(void);
 
 #endif
diff --git a/gptpart.cc b/gptpart.cc
index b83254d..5fe7b5a 100644
--- a/gptpart.cc
+++ b/gptpart.cc
@@ -15,17 +15,16 @@
 #define __STDC_LIMIT_MACROS
 #define __STDC_CONSTANT_MACROS
 
-#ifdef USE_UTF16
-#include <unicode/ustdio.h>
-#else
-#define UnicodeString string
-#endif
-
 #include <string.h>
 #include <stdio.h>
 #include <iostream>
 #include "gptpart.h"
 #include "attributes.h"
+#ifdef USE_UTF16
+#include <unicode/ustdio.h>
+#else
+#define UnicodeString std::string
+#endif
 
 using namespace std;
 
diff --git a/gptpart.h b/gptpart.h
index 51bfb38..ede8139 100644
--- a/gptpart.h
+++ b/gptpart.h
@@ -23,8 +23,6 @@
 #include "guid.h"
 #include "attributes.h"
 
-using namespace std;
-
 // Values returned by GPTPart::IsSizedForMBR()
 #define MBR_SIZED_GOOD 0 /* Whole partition under 2^32 sectors */
 #define MBR_SIZED_IFFY 1 /* Partition starts under 2^32 & is less than 2^32, but ends over 2^32 */
@@ -59,7 +57,7 @@
       // Simple data retrieval:
       PartType & GetType(void) {return partitionType;}
       uint16_t GetHexType(void) const;
-      string GetTypeName(void);
+      std::string GetTypeName(void);
       UnicodeString GetUTypeName(void);
       const GUIDData GetUniqueGUID(void) const {return uniqueGUID;}
       uint64_t GetFirstLBA(void) const {return firstLBA;}
@@ -80,7 +78,7 @@
       void SetLastLBA(uint64_t l) {lastLBA = l;}
       void SetAttributes(uint64_t a) {attributes = a;}
       void SetAttributes(void) {attributes.ChangeAttributes();}
-      void SetName(const string & theName);
+      void SetName(const std::string & theName);
 #ifdef USE_UTF16
       void SetName(const UnicodeString & theName);
 #endif
diff --git a/gpttext.h b/gpttext.h
index 36a17f9..32e2f88 100644
--- a/gpttext.h
+++ b/gpttext.h
@@ -23,13 +23,11 @@
 
 #include "gpt.h"
 
-using namespace std;
-
 class GPTDataTextUI : public GPTData {
    protected:
    public:
       GPTDataTextUI(void);
-      GPTDataTextUI(string filename);
+      GPTDataTextUI(std::string filename);
       ~GPTDataTextUI(void);
 
       // This one needs to be explicitly defined, even though it does nothing new....
@@ -55,17 +53,17 @@
       void ShowDetails(void);
       void MakeHybrid(void);
       int XFormToMBR(void); // convert GPT to MBR, wiping GPT afterwards. Returns 1 if successful
-      uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, const string & prompt);
+      uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, const std::string & prompt);
 
       // An informational function....
       void WarnAboutIffyMBRPart(int partNum);
 
       // Main menu functions
-      void MainMenu(string filename);
+      void MainMenu(std::string filename);
       void ShowCommands(void);
-      void ExpertsMenu(string filename);
+      void ExpertsMenu(std::string filename);
       void ShowExpertCommands(void);
-      void RecoveryMenu(string filename);
+      void RecoveryMenu(std::string filename);
       void ShowRecoveryCommands(void);
 }; // class GPTDataTextUI
 
diff --git a/guid.h b/guid.h
index 229d5bd..515a75d 100644
--- a/guid.h
+++ b/guid.h
@@ -30,8 +30,6 @@
 typedef uuid_t my_uuid_t;
 #endif
 
-using namespace std;
-
 // Note: This class's data size is critical. If data elements must be added,
 // it will be necessary to modify various GPT classes to compensate.
 class GUIDData {
@@ -39,17 +37,17 @@
       static bool firstInstance;
    protected:
       my_uuid_t uuidData;
-      string DeleteSpaces(string s);
+      std::string DeleteSpaces(std::string s);
    public:
       GUIDData(void);
       GUIDData(const GUIDData & orig);
-      GUIDData(const string & orig);
+      GUIDData(const std::string & orig);
       GUIDData(const char * orig);
       ~GUIDData(void);
 
       // Data assignment operators....
       GUIDData & operator=(const GUIDData & orig);
-      GUIDData & operator=(const string & orig);
+      GUIDData & operator=(const std::string & orig);
       GUIDData & operator=(const char * orig);
       void Zero(void);
       void Randomize(void);
@@ -59,9 +57,9 @@
       int operator!=(const GUIDData & orig) const;
 
       // Data retrieval....
-      string AsString(void) const;
+      std::string AsString(void) const;
 }; // class GUIDData
 
-ostream & operator<<(ostream & os, const GUIDData & data);
+std::ostream & operator<<(std::ostream & os, const GUIDData & data);
 
 #endif
diff --git a/mbr.h b/mbr.h
index 21c1d7b..3eea775 100644
--- a/mbr.h
+++ b/mbr.h
@@ -13,8 +13,6 @@
 #include "diskio.h"
 #include "basicmbr.h"
 
-using namespace std;
-
 /****************************************
  *                                      *
  * MBRData class and related structures *
@@ -26,7 +24,7 @@
 protected:
 public:
    MBRData(void) {}
-   MBRData(string deviceFilename) : BasicMBRData(deviceFilename) {}
+   MBRData(std::string deviceFilename) : BasicMBRData(deviceFilename) {}
    MBRData & operator=(const BasicMBRData & orig);
    ~MBRData(void);
 
diff --git a/mbrpart.h b/mbrpart.h
index 0de365f..6c7b21a 100644
--- a/mbrpart.h
+++ b/mbrpart.h
@@ -32,8 +32,6 @@
 #define EBR 4     /* sector is used as an EBR or MBR */
 #define INVALID 8 /* sector number is too large for disk */
 
-using namespace std;
-
 // Data for a single MBR partition record
 // Note that firstSector and lastSector are in CHS addressing, which
 // splits the bits up in a weird way.
diff --git a/parttypes.h b/parttypes.h
index 92f3d64..4e1d968 100644
--- a/parttypes.h
+++ b/parttypes.h
@@ -6,16 +6,14 @@
 
 #include <stdint.h>
 #include <stdlib.h>
-#ifdef USE_UTF16
-#include <unicode/ustream.h>
-#else
-#define UnicodeString string
-#endif
 #include <string>
 #include "support.h"
 #include "guid.h"
-
-using namespace std;
+#ifdef USE_UTF16
+#include <unicode/ustream.h>
+#else
+#define UnicodeString std::string
+#endif
 
 // A partition type
 struct AType {
@@ -24,7 +22,7 @@
    // codes required by GPT
    uint16_t MBRType;
    GUIDData GUIDType;
-   string name;
+   std::string name;
    int display; // 1 to show to users as available type, 0 not to
    AType* next;
 }; // struct AType
@@ -48,7 +46,7 @@
    int AddType(uint16_t mbrType, const char * guidData, const char * name, int toDisplay = 1);
 
    // New assignment operators....
-   PartType & operator=(const string & orig);
+   PartType & operator=(const std::string & orig);
    PartType & operator=(const char * orig);
 
    // Assignment operators based on base class....
@@ -58,7 +56,7 @@
    PartType & operator=(uint16_t ID); // Use MBR type code times 0x0100 to assign GUID
 
    // Retrieve transformed GUID data based on type code matches
-   string TypeName(void) const;
+   std::string TypeName(void) const;
    UnicodeString UTypeName(void) const;
    uint16_t GetHexType() const;
 
diff --git a/support.h b/support.h
index a61ddf4..3930ee4 100644
--- a/support.h
+++ b/support.h
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <string>
 
-#define GPTFDISK_VERSION "1.0.8.2"
+#define GPTFDISK_VERSION "1.0.8.3"
 
 #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
 // Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64
@@ -69,18 +69,16 @@
 #define GPT_RESERVED 420
 #define NAME_SIZE 36 // GPT allows 36 UTF-16LE code units for a name in a 128 byte partition entry
 
-using namespace std;
-
-string ReadString(void);
-uint64_t GetNumber(uint64_t low, uint64_t high, uint64_t def, const string & prompt);
+std::string ReadString(void);
+uint64_t GetNumber(uint64_t low, uint64_t high, uint64_t def, const std::string & prompt);
 char GetYN(void);
-uint64_t IeeeToInt(string IeeeValue, uint64_t sSize, uint64_t low, uint64_t high, uint32_t sectorAlignment, uint64_t def = 0);
-string BytesToIeee(uint64_t size, uint32_t sectorSize);
-unsigned char StrToHex(const string & input, unsigned int position);
-int IsHex(string input); // Returns 1 if input can be hexadecimal number....
+uint64_t IeeeToInt(std::string IeeeValue, uint64_t sSize, uint64_t low, uint64_t high, uint32_t sectorAlignment, uint64_t def = 0);
+std::string BytesToIeee(uint64_t size, uint32_t sectorSize);
+unsigned char StrToHex(const std::string & input, unsigned int position);
+int IsHex(std::string input); // Returns 1 if input can be hexadecimal number....
 int IsLittleEndian(void); // Returns 1 if CPU is little-endian, 0 if it's big-endian
 void ReverseBytes(void* theValue, int numBytes); // Reverses byte-order of theValue
 void WinWarning(void);
-string ToLower(const string& input);
+std::string ToLower(const std::string& input);
 
 #endif