Patch set from Bin Meng to clean up some code & support building sgdisk for Windows
This commit is contained in:
17
Makefile
17
Makefile
@@ -1,7 +1,7 @@
|
|||||||
CFLAGS+=-D_FILE_OFFSET_BITS=64
|
#CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16
|
||||||
#CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16
|
CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64
|
||||||
CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64
|
|
||||||
LDFLAGS+=
|
LDFLAGS+=
|
||||||
|
LDLIBS+=-luuid #-licuio -licuuc
|
||||||
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
||||||
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
||||||
LIB_OBJS=$(LIB_NAMES:=.o)
|
LIB_OBJS=$(LIB_NAMES:=.o)
|
||||||
@@ -12,19 +12,16 @@ DEPEND= makedepend $(CXXFLAGS)
|
|||||||
all: cgdisk gdisk sgdisk fixparts
|
all: cgdisk gdisk sgdisk fixparts
|
||||||
|
|
||||||
gdisk: $(LIB_OBJS) gdisk.o gpttext.o
|
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) $(LDLIBS) -o gdisk
|
||||||
# $(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -licuio -licuuc -luuid -o gdisk
|
|
||||||
|
|
||||||
cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
|
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) $(LDLIBS) -lncursesw -o cgdisk
|
||||||
# $(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -licuio -licuuc -luuid -lncurses -o cgdisk
|
|
||||||
|
|
||||||
sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
|
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) $(LDLIBS) -lpopt -o sgdisk
|
||||||
# $(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -licuio -licuuc -luuid -lpopt -o sgdisk
|
|
||||||
|
|
||||||
fixparts: $(MBR_LIB_OBJS) fixparts.o
|
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:
|
test:
|
||||||
./gdisk_test.sh
|
./gdisk_test.sh
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
CC=clang
|
|
||||||
CXX=clang++
|
CXX=clang++
|
||||||
CFLAGS+=-D_FILE_OFFSET_BITS=64
|
#CXXFLAGS+=-O2 -Wall -D_FILE_OFFSET_BITS=64 -D USE_UTF16 -I/usr/local/include
|
||||||
#CXXFLAGS+=-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
|
||||||
CXXFLAGS+=-Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include
|
LDFLAGS+=-L/usr/local/lib
|
||||||
LDFLAGS+=
|
LDLIBS+=-luuid #-licuio
|
||||||
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
||||||
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
||||||
LIB_OBJS=$(LIB_NAMES:=.o)
|
LIB_OBJS=$(LIB_NAMES:=.o)
|
||||||
@@ -14,25 +13,22 @@ DEPEND= makedepend $(CXXFLAGS)
|
|||||||
all: gdisk cgdisk sgdisk fixparts
|
all: gdisk cgdisk sgdisk fixparts
|
||||||
|
|
||||||
gdisk: $(LIB_OBJS) gdisk.o gpttext.o
|
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 $(LDFLAGS) $(LDLIBS) -o gdisk
|
||||||
$(CXX) $(LIB_OBJS) gdisk.o gpttext.o -L/usr/local/lib $(LDFLAGS) -luuid -o gdisk
|
|
||||||
|
|
||||||
cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
|
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 $(LDFLAGS) $(LDLIBS) -lncurses -o cgdisk
|
||||||
$(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o -L/usr/local/lib $(LDFLAGS) -luuid -lncurses -o cgdisk
|
|
||||||
|
|
||||||
sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o
|
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 $(LDFLAGS) $(LDLIBS) -lpopt -o sgdisk
|
||||||
$(CXX) $(LIB_OBJS) sgdisk.o gptcl.o -L/usr/local/lib $(LDFLAGS) -luuid -lpopt -o sgdisk
|
|
||||||
|
|
||||||
fixparts: $(MBR_LIB_OBJS) fixparts.o
|
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: #no pre-reqs
|
||||||
lint $(SRCS)
|
lint $(SRCS)
|
||||||
|
|
||||||
clean: #no pre-reqs
|
clean: #no pre-reqs
|
||||||
rm -f core *.o *~ gdisk sgdisk
|
rm -f core *.o *~ gdisk cgdisk sgdisk fixparts
|
||||||
|
|
||||||
# what are the source dependencies
|
# what are the source dependencies
|
||||||
depend: $(SRCS)
|
depend: $(SRCS)
|
||||||
|
|||||||
22
Makefile.mac
22
Makefile.mac
@@ -1,11 +1,11 @@
|
|||||||
CC=gcc
|
|
||||||
CXX=c++
|
CXX=c++
|
||||||
# FATBINFLAGS=-arch x86_64 -arch i386 -mmacosx-version-min=10.9
|
# FATBINFLAGS=-arch x86_64 -arch i386 -mmacosx-version-min=10.9
|
||||||
FATBINFLAGS=-arch x86_64 -arch arm64 -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
|
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
|
||||||
#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
|
||||||
CXXFLAGS=$(FATBINFLAGS) -O2 -Wall -D_FILE_OFFSET_BITS=64 -stdlib=libc++ -I/opt/local/include -I /usr/local/include -I/opt/local/include -g
|
LDFLAGS+=
|
||||||
|
LDLIBS+= #-licucore
|
||||||
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
LIB_NAMES=crc32 support guid gptpart mbrpart basicmbr mbr gpt bsd parttypes attributes diskio diskio-unix
|
||||||
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
MBR_LIBS=support diskio diskio-unix basicmbr mbrpart
|
||||||
#LIB_SRCS=$(NAMES:=.cc)
|
#LIB_SRCS=$(NAMES:=.cc)
|
||||||
@@ -17,25 +17,17 @@ DEPEND= makedepend $(CFLAGS)
|
|||||||
all: gdisk sgdisk cgdisk fixparts
|
all: gdisk sgdisk cgdisk fixparts
|
||||||
|
|
||||||
gdisk: $(LIB_OBJS) gpttext.o gdisk.o
|
gdisk: $(LIB_OBJS) gpttext.o gdisk.o
|
||||||
$(CXX) $(LIB_OBJS) gpttext.o gdisk.o $(FATBINFLAGS) -o gdisk
|
$(CXX) $(LIB_OBJS) gpttext.o gdisk.o $(FATBINFLAGS) $(LDFLAGS) $(LDLIBS) -o gdisk
|
||||||
# $(CXX) $(LIB_OBJS) -L/usr/lib -licucore gpttext.o gdisk.o -o gdisk
|
|
||||||
|
|
||||||
cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
|
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 $(LDFLAGS) $(LDLIBS) /usr/local/Cellar/ncurses/6.2/lib/libncurses.dylib -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
|
|
||||||
|
|
||||||
sgdisk: $(LIB_OBJS) gptcl.o sgdisk.o
|
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 $(LDFLAGS) -L/usr/local/lib $(LDLIBS) -lpopt $(THINBINFLAGS) -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
|
|
||||||
|
|
||||||
fixparts: $(MBR_LIB_OBJS) fixparts.o
|
fixparts: $(MBR_LIB_OBJS) fixparts.o
|
||||||
$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) $(FATBINFLAGS) -o fixparts
|
$(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: #no pre-reqs
|
||||||
lint $(SRCS)
|
lint $(SRCS)
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
CC=/usr/bin/i686-w64-mingw32-gcc
|
CXX=i686-w64-mingw32-g++
|
||||||
CXX=/usr/bin/i686-w64-mingw32-g++
|
STRIP=i686-w64-mingw32-strip
|
||||||
STRIP=/usr/bin/i686-w64-mingw32-strip
|
CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -static -static-libgcc -static-libstdc++
|
||||||
CFLAGS=-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
|
||||||
CXXFLAGS=-O2 -Wall -static -static-libgcc -static-libstdc++ -D_FILE_OFFSET_BITS=64 -g
|
LDFLAGS+=-static -static-libgcc -static-libstdc++
|
||||||
#CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
|
LDLIBS+=-lrpcrt4
|
||||||
LIB_NAMES=guid gptpart bsd parttypes attributes crc32 mbrpart basicmbr mbr gpt support diskio diskio-windows
|
LIB_NAMES=guid gptpart bsd parttypes attributes crc32 mbrpart basicmbr mbr gpt support diskio diskio-windows
|
||||||
MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
|
MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
|
||||||
LIB_SRCS=$(NAMES:=.cc)
|
LIB_SRCS=$(NAMES:=.cc)
|
||||||
@@ -12,25 +12,28 @@ MBR_LIB_OBJS=$(MBR_LIBS:=.o)
|
|||||||
LIB_HEADERS=$(LIB_NAMES:=.h)
|
LIB_HEADERS=$(LIB_NAMES:=.h)
|
||||||
DEPEND= makedepend $(CFLAGS)
|
DEPEND= makedepend $(CFLAGS)
|
||||||
|
|
||||||
all: gdisk fixparts
|
all: gdisk sgdisk fixparts
|
||||||
|
|
||||||
gdisk: $(LIB_OBJS) gdisk.o gpttext.o
|
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
|
cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
|
||||||
$(CXX) $(CXXFLAGS) $(LIB_OBJS) sgdisk.o -lpopt -static-libgcc -o sgdisk32.exe
|
$(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
|
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: #no pre-reqs
|
||||||
lint $(SRCS)
|
lint $(SRCS)
|
||||||
|
|
||||||
clean: #no pre-reqs
|
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: #no pre-reqs
|
||||||
$(STRIP) gdisk32.exe fixparts32.exe
|
$(STRIP) gdisk32.exe cgdisk32.exe sgdisk32.exe fixparts32.exe
|
||||||
|
|
||||||
# what are the source dependencies
|
# what are the source dependencies
|
||||||
depend: $(SRCS)
|
depend: $(SRCS)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
CC=/usr/bin/x86_64-w64-mingw32-gcc
|
CXX=x86_64-w64-mingw32-g++
|
||||||
CXX=/usr/bin/x86_64-w64-mingw32-g++
|
STRIP=x86_64-w64-mingw32-strip
|
||||||
STRIP=/usr/bin/x86_64-w64-mingw32-strip
|
CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -g
|
||||||
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
|
#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
|
LIB_NAMES=guid gptpart bsd parttypes attributes crc32 mbrpart basicmbr mbr gpt support diskio diskio-windows
|
||||||
MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
|
MBR_LIBS=support diskio diskio-windows basicmbr mbrpart
|
||||||
LIB_SRCS=$(NAMES:=.cc)
|
LIB_SRCS=$(NAMES:=.cc)
|
||||||
@@ -12,25 +12,29 @@ MBR_LIB_OBJS=$(MBR_LIBS:=.o)
|
|||||||
LIB_HEADERS=$(LIB_NAMES:=.h)
|
LIB_HEADERS=$(LIB_NAMES:=.h)
|
||||||
DEPEND= makedepend $(CFLAGS)
|
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
|
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
|
cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o
|
||||||
$(CXX) $(CXXFLAGS) $(LIB_OBJS) sgdisk.o -lpopt -static-libgcc -o sgdisk64.exe
|
$(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
|
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: #no pre-reqs
|
||||||
lint $(SRCS)
|
lint $(SRCS)
|
||||||
|
|
||||||
clean: #no pre-reqs
|
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: #no pre-reqs
|
||||||
$(STRIP) gdisk64.exe fixparts64.exe
|
$(STRIP) gdisk64.exe cgdisk64.exe sgdisk64.exe fixparts64.exe
|
||||||
|
|
||||||
# what are the source dependencies
|
# what are the source dependencies
|
||||||
depend: $(SRCS)
|
depend: $(SRCS)
|
||||||
|
|||||||
135
README.Windows
135
README.Windows
@@ -28,12 +28,8 @@ Windows Use Notes
|
|||||||
|
|
||||||
The Windows version of GPT fdisk was added with version 0.6.2 of the
|
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
|
package. The Windows binary package includes the gdisk.exe interactive
|
||||||
text-mode program file but no equivalent to the sgdisk program that's
|
text-mode program file as well as the sgdisk program that's available
|
||||||
available with Linux, FreeBSD, and OS X builds. In theory, an sgdisk.exe
|
with Linux, FreeBSD, and OS X builds.
|
||||||
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.
|
|
||||||
|
|
||||||
Beginning with version 0.8.10, I'm distributing both 32-bit and 64-bit
|
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
|
binaries, which include the strings "32" or "64" in their names. The 32-bit
|
||||||
@@ -47,10 +43,11 @@ certain partition table problems that can be created by buggy partitioning
|
|||||||
software. Windows seems to be unfazed by most such problems, but I've not
|
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.
|
done an extensive survey of Windows partitioning tools on this score.
|
||||||
|
|
||||||
To install the programs, copy the gdisk32.exe and fixparts32.exe (or
|
To install the programs, copy the gdisk32.exe, cgdisk32.exe, sgdisk32.exe
|
||||||
gdisk64.exe and fixparts64.exe) program files to any directory on your
|
and fixparts32.exe (or gdisk64.exe, cgdisk64.exe, sgdisk64.exe and
|
||||||
path, such as C:\Windows. Alternatively, you can change to the program's
|
fixparts64.exe) program files to any directory on your path, such as
|
||||||
directory or type its complete path whenever you use it.
|
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
|
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
|
do this, locate the Command Prompt program icon, right-click it, and select
|
||||||
@@ -74,17 +71,18 @@ This command is equivalent to the earlier one -- it edits the partition
|
|||||||
table on the first physical disk. Change the number at the end of the
|
table on the first physical disk. Change the number at the end of the
|
||||||
device name to change the disk edited.
|
device name to change the disk edited.
|
||||||
|
|
||||||
If you pass the "-l" option to gdisk.exe in addition to the disk
|
If you pass the "-l" option to gdisk64.exe in addition to the disk
|
||||||
identifier, the program displays the current partition table information
|
identifier, the program displays the current partition table information and
|
||||||
and then exits. This use entails no risk to MBR disks, since the program
|
then exits. (Alternatively, you can pass "-p" to sgdisk64.exe.) This use
|
||||||
never writes data back to the disk when used in this way.
|
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
|
As noted above, editing the first disk with GPT fdisk is a Bad Idea on older
|
||||||
Idea. An exception would be if your system uses an Extensible Firmware
|
BIOS-based computers. Newer computers typically use an Extensible Firmware
|
||||||
Interface (EFI) and already boots from a GPT disk. It's safer to edit
|
Interface (EFI) and boot from GPT disks. It's safer to edit non-boot disks,
|
||||||
non-boot disks, which usually have numbers of 1 and above, but only if you
|
which usually have numbers of 1 and above, but only if you run a version of
|
||||||
run a version of Windows with GPT support. For more information on Windows'
|
Windows with GPT support. For more information on Windows' support of GPT,
|
||||||
support of GPT, see Microsoft's Web page on the topic:
|
see Microsoft's Web page on the topic:
|
||||||
|
|
||||||
http://www.microsoft.com/whdc/device/storage/GPT_FAQ.mspx
|
http://www.microsoft.com/whdc/device/storage/GPT_FAQ.mspx
|
||||||
|
|
||||||
@@ -103,34 +101,91 @@ Source Code and Compilation Issues
|
|||||||
I have successfully compiled GPT fdisk using three different Windows
|
I have successfully compiled GPT fdisk using three different Windows
|
||||||
compilers:
|
compilers:
|
||||||
|
|
||||||
- MinGW (http://www.mingw.org), and in particular its Linux-hosted
|
- MinGW (https://www.mingw-w64.org/), using either a Linux-hosted
|
||||||
cross-compiler -- Under Ubuntu Linux, the Makefile.mingw and
|
cross-compiler or under Windows using the original MinGW or MSYS2
|
||||||
Makefile.mingw64 files enable compilation of the software via MinGW.
|
(https://www.msys2.org). This is my only GPT fdisk development environment
|
||||||
(Type "make -f Makefile.mingw" to compile 32-bit binaries, and "make -f
|
for Windows in 2022.
|
||||||
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.
|
|
||||||
|
|
||||||
- Microsoft Visual C++ 2008 Express
|
- Microsoft Visual C++ 2008 Express
|
||||||
(http://www.microsoft.com/express/Windows/) -- This compiler requires a
|
(http://www.microsoft.com/express/Windows/) -- This compiler requires a
|
||||||
third-party stdint.h file (I used the one from
|
third-party stdint.h file (I used the one from
|
||||||
http://msinttypes.googlecode.com/svn/trunk/stdint.h), but it otherwise
|
http://web.archive.org/web/20130317001712/http://msinttypes.googlecode.com/svn/trunk/stdint.h),
|
||||||
works fine. A project is easily created by adding all the *.h files and
|
but it otherwise worked fine the last time I tried it. A project is easily
|
||||||
all the *.cc files except diskio-unix.cc, sgdisk.cc, and whichever
|
created by adding all the *.h files and all the *.cc files except
|
||||||
program file you intend to NOT build (gdisk.cc or fixparts.cc).
|
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
|
- 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.
|
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
|
Although I used Microsoft Visual C++ in the past, I haven't tried using
|
||||||
compilers. The resulting binaries seem to work equally well, but my testing
|
these compilers recently and so I can't promise they would work today (in
|
||||||
has been minimal.
|
2022).
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
If you modify GPT fdisk to get it to compile under another compiler, I
|
If you modify GPT fdisk to get it to compile under another compiler, I
|
||||||
welcome submission of patches.
|
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.
|
||||||
|
|||||||
10
attributes.h
10
attributes.h
@@ -10,11 +10,9 @@
|
|||||||
#define NUM_ATR 64 /* # of attributes -- 64, since it's a 64-bit field */
|
#define NUM_ATR 64 /* # of attributes -- 64, since it's a 64-bit field */
|
||||||
#define ATR_NAME_SIZE 25 /* maximum size of attribute names */
|
#define ATR_NAME_SIZE 25 /* maximum size of attribute names */
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class Attributes {
|
class Attributes {
|
||||||
protected:
|
protected:
|
||||||
static string atNames[NUM_ATR];
|
static std::string atNames[NUM_ATR];
|
||||||
static int numAttrs;
|
static int numAttrs;
|
||||||
void Setup(void);
|
void Setup(void);
|
||||||
uint64_t attributes;
|
uint64_t attributes;
|
||||||
@@ -30,12 +28,12 @@ public:
|
|||||||
void ShowAttributes(const uint32_t partNum);
|
void ShowAttributes(const uint32_t partNum);
|
||||||
|
|
||||||
void ChangeAttributes(void);
|
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);
|
static void ListAttributes(void);
|
||||||
}; // class Attributes
|
}; // class Attributes
|
||||||
|
|
||||||
ostream & operator<<(ostream & os, const Attributes & data);
|
std::ostream & operator<<(std::ostream & os, const Attributes & data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
12
basicmbr.h
12
basicmbr.h
@@ -16,8 +16,6 @@
|
|||||||
// Maximum number of MBR partitions
|
// Maximum number of MBR partitions
|
||||||
#define MAX_MBR_PARTS 128
|
#define MAX_MBR_PARTS 128
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* *
|
* *
|
||||||
* MBRData class and related structures *
|
* MBRData class and related structures *
|
||||||
@@ -57,23 +55,23 @@ protected:
|
|||||||
uint32_t numSecspTrack; // number of sectors per track, in CHS scheme
|
uint32_t numSecspTrack; // number of sectors per track, in CHS scheme
|
||||||
DiskIO* myDisk;
|
DiskIO* myDisk;
|
||||||
int canDeleteMyDisk;
|
int canDeleteMyDisk;
|
||||||
string device;
|
std::string device;
|
||||||
MBRValidity state;
|
MBRValidity state;
|
||||||
MBRPart* GetPartition(int i); // Return primary or logical partition
|
MBRPart* GetPartition(int i); // Return primary or logical partition
|
||||||
public:
|
public:
|
||||||
BasicMBRData(void);
|
BasicMBRData(void);
|
||||||
BasicMBRData(string deviceFilename);
|
BasicMBRData(std::string deviceFilename);
|
||||||
BasicMBRData(const BasicMBRData &);
|
BasicMBRData(const BasicMBRData &);
|
||||||
~BasicMBRData(void);
|
~BasicMBRData(void);
|
||||||
BasicMBRData & operator=(const BasicMBRData & orig);
|
BasicMBRData & operator=(const BasicMBRData & orig);
|
||||||
|
|
||||||
// File I/O functions...
|
// File I/O functions...
|
||||||
int ReadMBRData(const string & deviceFilename);
|
int ReadMBRData(const std::string & deviceFilename);
|
||||||
int ReadMBRData(DiskIO * theDisk, int checkBlockSize = 1);
|
int ReadMBRData(DiskIO * theDisk, int checkBlockSize = 1);
|
||||||
int ReadLogicalParts(uint64_t extendedStart, int partNum);
|
int ReadLogicalParts(uint64_t extendedStart, int partNum);
|
||||||
int WriteMBRData(void);
|
int WriteMBRData(void);
|
||||||
int WriteMBRData(DiskIO *theDisk);
|
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);
|
int WriteMBRData(struct TempMBR & mbr, DiskIO *theDisk, uint64_t sector);
|
||||||
void DiskSync(void) {myDisk->DiskSync();}
|
void DiskSync(void) {myDisk->DiskSync();}
|
||||||
void SetDisk(DiskIO *theDisk);
|
void SetDisk(DiskIO *theDisk);
|
||||||
@@ -147,7 +145,7 @@ public:
|
|||||||
uint64_t GetLength(int i);
|
uint64_t GetLength(int i);
|
||||||
|
|
||||||
// User interaction functions....
|
// 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);
|
void ShowCommands(void);
|
||||||
}; // class BasicMBRData
|
}; // class BasicMBRData
|
||||||
|
|
||||||
|
|||||||
5
bsd.h
5
bsd.h
@@ -30,9 +30,6 @@
|
|||||||
// memory errors will occur.
|
// memory errors will occur.
|
||||||
#define MAX_BSD_PARTS 64
|
#define MAX_BSD_PARTS 64
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* *
|
* *
|
||||||
* BSDData class and related structures *
|
* BSDData class and related structures *
|
||||||
@@ -75,7 +72,7 @@ class BSDData {
|
|||||||
public:
|
public:
|
||||||
BSDData(void);
|
BSDData(void);
|
||||||
~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);
|
int ReadBSDData(DiskIO *myDisk, uint64_t startSector, uint64_t endSector);
|
||||||
void ReverseMetaBytes(void);
|
void ReverseMetaBytes(void);
|
||||||
void DisplayBSDData(void);
|
void DisplayBSDData(void);
|
||||||
|
|||||||
2
crc32.cc
2
crc32.cc
@@ -31,7 +31,7 @@ uint32_t crc_tab[256];
|
|||||||
*/
|
*/
|
||||||
uint32_t chksum_crc32 (unsigned char *block, unsigned int length)
|
uint32_t chksum_crc32 (unsigned char *block, unsigned int length)
|
||||||
{
|
{
|
||||||
register unsigned long crc;
|
unsigned long crc;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
|
|
||||||
crc = 0xFFFFFFFF;
|
crc = 0xFFFFFFFF;
|
||||||
|
|||||||
16
diskio.h
16
diskio.h
@@ -37,8 +37,6 @@
|
|||||||
#include "support.h"
|
#include "support.h"
|
||||||
//#include "parttypes.h"
|
//#include "parttypes.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/***************************************
|
/***************************************
|
||||||
* *
|
* *
|
||||||
* DiskIO class and related structures *
|
* DiskIO class and related structures *
|
||||||
@@ -47,9 +45,9 @@ using namespace std;
|
|||||||
|
|
||||||
class DiskIO {
|
class DiskIO {
|
||||||
protected:
|
protected:
|
||||||
string userFilename;
|
std::string userFilename;
|
||||||
string realFilename;
|
std::string realFilename;
|
||||||
string modelName;
|
std::string modelName;
|
||||||
int isOpen;
|
int isOpen;
|
||||||
int openForWrite;
|
int openForWrite;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@@ -62,9 +60,9 @@ class DiskIO {
|
|||||||
~DiskIO(void);
|
~DiskIO(void);
|
||||||
|
|
||||||
void MakeRealName(void);
|
void MakeRealName(void);
|
||||||
int OpenForRead(const string & filename);
|
int OpenForRead(const std::string & filename);
|
||||||
int OpenForRead(void);
|
int OpenForRead(void);
|
||||||
int OpenForWrite(const string & filename);
|
int OpenForWrite(const std::string & filename);
|
||||||
int OpenForWrite(void);
|
int OpenForWrite(void);
|
||||||
void Close();
|
void Close();
|
||||||
int Seek(uint64_t sector);
|
int Seek(uint64_t sector);
|
||||||
@@ -73,12 +71,12 @@ class DiskIO {
|
|||||||
int DiskSync(void); // resync disk caches to use new partitions
|
int DiskSync(void); // resync disk caches to use new partitions
|
||||||
int GetBlockSize(void);
|
int GetBlockSize(void);
|
||||||
int GetPhysBlockSize(void);
|
int GetPhysBlockSize(void);
|
||||||
string GetModel(void) {return modelName;}
|
std::string GetModel(void) {return modelName;}
|
||||||
uint32_t GetNumHeads(void);
|
uint32_t GetNumHeads(void);
|
||||||
uint32_t GetNumSecsPerTrack(void);
|
uint32_t GetNumSecsPerTrack(void);
|
||||||
int IsOpen(void) {return isOpen;}
|
int IsOpen(void) {return isOpen;}
|
||||||
int IsOpenForWrite(void) {return openForWrite;}
|
int IsOpenForWrite(void) {return openForWrite;}
|
||||||
string GetName(void) const {return realFilename;}
|
std::string GetName(void) const {return realFilename;}
|
||||||
|
|
||||||
uint64_t DiskSize(int* err);
|
uint64_t DiskSize(int* err);
|
||||||
}; // class DiskIO
|
}; // class DiskIO
|
||||||
|
|||||||
2
gdisk.cc
2
gdisk.cc
@@ -11,6 +11,8 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "gpttext.h"
|
#include "gpttext.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
GPTDataTextUI theGPT;
|
GPTDataTextUI theGPT;
|
||||||
string device = "";
|
string device = "";
|
||||||
|
|||||||
20
gpt.h
20
gpt.h
@@ -24,8 +24,6 @@
|
|||||||
// smallest Advanced Format drive I know of is 320GB in size
|
// smallest Advanced Format drive I know of is 320GB in size
|
||||||
#define SMALLEST_ADVANCED_FORMAT UINT64_C(585937500)
|
#define SMALLEST_ADVANCED_FORMAT UINT64_C(585937500)
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* *
|
* *
|
||||||
* GPTData class and related structures *
|
* GPTData class and related structures *
|
||||||
@@ -67,7 +65,7 @@ protected:
|
|||||||
uint32_t numParts; // # of partitions the table can hold
|
uint32_t numParts; // # of partitions the table can hold
|
||||||
struct GPTHeader secondHeader;
|
struct GPTHeader secondHeader;
|
||||||
MBRData protectiveMBR;
|
MBRData protectiveMBR;
|
||||||
string device; // device filename
|
std::string device; // device filename
|
||||||
DiskIO myDisk;
|
DiskIO myDisk;
|
||||||
uint32_t blockSize; // device logical block size
|
uint32_t blockSize; // device logical block size
|
||||||
uint32_t physBlockSize; // device physical block size (or 0 if it can't be determined)
|
uint32_t physBlockSize; // device physical block size (or 0 if it can't be determined)
|
||||||
@@ -93,7 +91,7 @@ public:
|
|||||||
// Basic necessary functions....
|
// Basic necessary functions....
|
||||||
GPTData(void);
|
GPTData(void);
|
||||||
GPTData(const GPTData &);
|
GPTData(const GPTData &);
|
||||||
GPTData(string deviceFilename);
|
GPTData(std::string deviceFilename);
|
||||||
virtual ~GPTData(void);
|
virtual ~GPTData(void);
|
||||||
GPTData & operator=(const GPTData & orig);
|
GPTData & operator=(const GPTData & orig);
|
||||||
|
|
||||||
@@ -111,18 +109,18 @@ public:
|
|||||||
int FindInsanePartitions(void);
|
int FindInsanePartitions(void);
|
||||||
|
|
||||||
// Load or save data from/to disk
|
// Load or save data from/to disk
|
||||||
int SetDisk(const string & deviceFilename);
|
int SetDisk(const std::string & deviceFilename);
|
||||||
DiskIO* GetDisk(void) {return &myDisk;}
|
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);}
|
int WriteProtectiveMBR(void) {return protectiveMBR.WriteMBRData(&myDisk);}
|
||||||
void PartitionScan(void);
|
void PartitionScan(void);
|
||||||
int LoadPartitions(const string & deviceFilename);
|
int LoadPartitions(const std::string & deviceFilename);
|
||||||
int ForceLoadGPTData(void);
|
int ForceLoadGPTData(void);
|
||||||
int LoadMainTable(void);
|
int LoadMainTable(void);
|
||||||
int LoadSecondTableAsMain(void);
|
int LoadSecondTableAsMain(void);
|
||||||
int SaveGPTData(int quiet = 0);
|
int SaveGPTData(int quiet = 0);
|
||||||
int SaveGPTBackup(const string & filename);
|
int SaveGPTBackup(const std::string & filename);
|
||||||
int LoadGPTBackup(const string & filename);
|
int LoadGPTBackup(const std::string & filename);
|
||||||
int SaveMBR(void);
|
int SaveMBR(void);
|
||||||
int DestroyGPT(void);
|
int DestroyGPT(void);
|
||||||
int DestroyMBR(void);
|
int DestroyMBR(void);
|
||||||
@@ -204,9 +202,9 @@ public:
|
|||||||
void ReversePartitionBytes(); // for endianness
|
void ReversePartitionBytes(); // for endianness
|
||||||
|
|
||||||
// Attributes functions
|
// 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 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
|
}; // class GPTData
|
||||||
|
|
||||||
|
|||||||
4
gptcl.cc
4
gptcl.cc
@@ -26,6 +26,8 @@
|
|||||||
#include <popt.h>
|
#include <popt.h>
|
||||||
#include "gptcl.h"
|
#include "gptcl.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
GPTDataCL::GPTDataCL(void) {
|
GPTDataCL::GPTDataCL(void) {
|
||||||
attributeOperation = backupFile = partName = hybrids = newPartInfo = NULL;
|
attributeOperation = backupFile = partName = hybrids = newPartInfo = NULL;
|
||||||
mbrParts = twoParts = outDevice = typeCode = partGUID = diskGUID = NULL;
|
mbrParts = twoParts = outDevice = typeCode = partGUID = diskGUID = NULL;
|
||||||
@@ -504,7 +506,7 @@ int GPTDataCL::DoOptions(int argc, char* argv[]) {
|
|||||||
// Create a hybrid or regular MBR from GPT data structures
|
// Create a hybrid or regular MBR from GPT data structures
|
||||||
int GPTDataCL::BuildMBR(char* argument, int isHybrid) {
|
int GPTDataCL::BuildMBR(char* argument, int isHybrid) {
|
||||||
int numParts, allOK = 1, i, origPartNum;
|
int numParts, allOK = 1, i, origPartNum;
|
||||||
int eeLast, mbrNum = 0;
|
int eeLast = 0, mbrNum = 0;
|
||||||
MBRPart newPart;
|
MBRPart newPart;
|
||||||
BasicMBRData newMBR;
|
BasicMBRData newMBR;
|
||||||
|
|
||||||
|
|||||||
10
gptcl.h
10
gptcl.h
@@ -25,8 +25,6 @@
|
|||||||
#include "gpt.h"
|
#include "gpt.h"
|
||||||
#include <popt.h>
|
#include <popt.h>
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class GPTDataCL : public GPTData {
|
class GPTDataCL : public GPTData {
|
||||||
protected:
|
protected:
|
||||||
// Following are variables associated with popt parameters....
|
// Following are variables associated with popt parameters....
|
||||||
@@ -41,14 +39,14 @@ class GPTDataCL : public GPTData {
|
|||||||
int BuildMBR(char* argument, int isHybrid);
|
int BuildMBR(char* argument, int isHybrid);
|
||||||
public:
|
public:
|
||||||
GPTDataCL(void);
|
GPTDataCL(void);
|
||||||
GPTDataCL(string filename);
|
GPTDataCL(std::string filename);
|
||||||
~GPTDataCL(void);
|
~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[]);
|
int DoOptions(int argc, char* argv[]);
|
||||||
}; // class GPTDataCL
|
}; // class GPTDataCL
|
||||||
|
|
||||||
int CountColons(char* argument);
|
int CountColons(char* argument);
|
||||||
uint64_t GetInt(const string & argument, int itemNum);
|
uint64_t GetInt(const std::string & argument, int itemNum);
|
||||||
string GetString(string argument, int itemNum);
|
std::string GetString(std::string argument, int itemNum);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ void GPTDataCurses::EmptySpaces(void) {
|
|||||||
// unpartitioned space on the disk.
|
// unpartitioned space on the disk.
|
||||||
// Returns the number of Spaces created.
|
// Returns the number of Spaces created.
|
||||||
int GPTDataCurses::MakeSpacesFromParts(void) {
|
int GPTDataCurses::MakeSpacesFromParts(void) {
|
||||||
uint i;
|
uint32_t i;
|
||||||
Space *tempSpace;
|
Space *tempSpace;
|
||||||
|
|
||||||
EmptySpaces();
|
EmptySpaces();
|
||||||
@@ -608,7 +608,7 @@ void GPTDataCurses::MoveSelection(int delta) {
|
|||||||
// Show user's options. Refers to currentSpace to determine which options to show.
|
// 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.
|
// Highlights the option with the key selectedKey; or a default if that's invalid.
|
||||||
void GPTDataCurses::DisplayOptions(char selectedKey) {
|
void GPTDataCurses::DisplayOptions(char selectedKey) {
|
||||||
uint i, j = 0, firstLine, numPerLine;
|
uint64_t i, j = 0, firstLine, numPerLine;
|
||||||
string optionName, optionDesc = "";
|
string optionName, optionDesc = "";
|
||||||
|
|
||||||
if (currentSpace != NULL) {
|
if (currentSpace != NULL) {
|
||||||
|
|||||||
10
gptcurses.h
10
gptcurses.h
@@ -27,12 +27,10 @@
|
|||||||
#include "gptpart.h"
|
#include "gptpart.h"
|
||||||
#include "gpt.h"
|
#include "gpt.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
struct MenuItem {
|
struct MenuItem {
|
||||||
int key; // Keyboard shortcut
|
int key; // Keyboard shortcut
|
||||||
string name; // Item name; 8 characters
|
std::string name; // Item name; 8 characters
|
||||||
string desc; // Description
|
std::string desc; // Description
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct MenuItem menuMain[] = {
|
static struct MenuItem menuMain[] = {
|
||||||
@@ -81,7 +79,7 @@ protected:
|
|||||||
Space *lastSpace;
|
Space *lastSpace;
|
||||||
Space *currentSpace;
|
Space *currentSpace;
|
||||||
int currentSpaceNum;
|
int currentSpaceNum;
|
||||||
string whichOptions;
|
std::string whichOptions;
|
||||||
char currentKey;
|
char currentKey;
|
||||||
int numSpaces;
|
int numSpaces;
|
||||||
int displayType;
|
int displayType;
|
||||||
@@ -130,7 +128,7 @@ public:
|
|||||||
void ClearLine(int lineNum);
|
void ClearLine(int lineNum);
|
||||||
void ClearBottom(void);
|
void ClearBottom(void);
|
||||||
void PromptToContinue(void);
|
void PromptToContinue(void);
|
||||||
void Report(string theText);
|
void Report(std::string theText);
|
||||||
void ShowTypes(void);
|
void ShowTypes(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
11
gptpart.cc
11
gptpart.cc
@@ -15,17 +15,16 @@
|
|||||||
#define __STDC_LIMIT_MACROS
|
#define __STDC_LIMIT_MACROS
|
||||||
#define __STDC_CONSTANT_MACROS
|
#define __STDC_CONSTANT_MACROS
|
||||||
|
|
||||||
#ifdef USE_UTF16
|
|
||||||
#include <unicode/ustdio.h>
|
|
||||||
#else
|
|
||||||
#define UnicodeString string
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "gptpart.h"
|
#include "gptpart.h"
|
||||||
#include "attributes.h"
|
#include "attributes.h"
|
||||||
|
#ifdef USE_UTF16
|
||||||
|
#include <unicode/ustdio.h>
|
||||||
|
#else
|
||||||
|
#define UnicodeString std::string
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,6 @@
|
|||||||
#include "guid.h"
|
#include "guid.h"
|
||||||
#include "attributes.h"
|
#include "attributes.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
// Values returned by GPTPart::IsSizedForMBR()
|
// Values returned by GPTPart::IsSizedForMBR()
|
||||||
#define MBR_SIZED_GOOD 0 /* Whole partition under 2^32 sectors */
|
#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 */
|
#define MBR_SIZED_IFFY 1 /* Partition starts under 2^32 & is less than 2^32, but ends over 2^32 */
|
||||||
@@ -59,7 +57,7 @@ class GPTPart {
|
|||||||
// Simple data retrieval:
|
// Simple data retrieval:
|
||||||
PartType & GetType(void) {return partitionType;}
|
PartType & GetType(void) {return partitionType;}
|
||||||
uint16_t GetHexType(void) const;
|
uint16_t GetHexType(void) const;
|
||||||
string GetTypeName(void);
|
std::string GetTypeName(void);
|
||||||
UnicodeString GetUTypeName(void);
|
UnicodeString GetUTypeName(void);
|
||||||
const GUIDData GetUniqueGUID(void) const {return uniqueGUID;}
|
const GUIDData GetUniqueGUID(void) const {return uniqueGUID;}
|
||||||
uint64_t GetFirstLBA(void) const {return firstLBA;}
|
uint64_t GetFirstLBA(void) const {return firstLBA;}
|
||||||
@@ -80,7 +78,7 @@ class GPTPart {
|
|||||||
void SetLastLBA(uint64_t l) {lastLBA = l;}
|
void SetLastLBA(uint64_t l) {lastLBA = l;}
|
||||||
void SetAttributes(uint64_t a) {attributes = a;}
|
void SetAttributes(uint64_t a) {attributes = a;}
|
||||||
void SetAttributes(void) {attributes.ChangeAttributes();}
|
void SetAttributes(void) {attributes.ChangeAttributes();}
|
||||||
void SetName(const string & theName);
|
void SetName(const std::string & theName);
|
||||||
#ifdef USE_UTF16
|
#ifdef USE_UTF16
|
||||||
void SetName(const UnicodeString & theName);
|
void SetName(const UnicodeString & theName);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
12
gpttext.h
12
gpttext.h
@@ -23,13 +23,11 @@
|
|||||||
|
|
||||||
#include "gpt.h"
|
#include "gpt.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
class GPTDataTextUI : public GPTData {
|
class GPTDataTextUI : public GPTData {
|
||||||
protected:
|
protected:
|
||||||
public:
|
public:
|
||||||
GPTDataTextUI(void);
|
GPTDataTextUI(void);
|
||||||
GPTDataTextUI(string filename);
|
GPTDataTextUI(std::string filename);
|
||||||
~GPTDataTextUI(void);
|
~GPTDataTextUI(void);
|
||||||
|
|
||||||
// This one needs to be explicitly defined, even though it does nothing new....
|
// This one needs to be explicitly defined, even though it does nothing new....
|
||||||
@@ -55,17 +53,17 @@ class GPTDataTextUI : public GPTData {
|
|||||||
void ShowDetails(void);
|
void ShowDetails(void);
|
||||||
void MakeHybrid(void);
|
void MakeHybrid(void);
|
||||||
int XFormToMBR(void); // convert GPT to MBR, wiping GPT afterwards. Returns 1 if successful
|
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....
|
// An informational function....
|
||||||
void WarnAboutIffyMBRPart(int partNum);
|
void WarnAboutIffyMBRPart(int partNum);
|
||||||
|
|
||||||
// Main menu functions
|
// Main menu functions
|
||||||
void MainMenu(string filename);
|
void MainMenu(std::string filename);
|
||||||
void ShowCommands(void);
|
void ShowCommands(void);
|
||||||
void ExpertsMenu(string filename);
|
void ExpertsMenu(std::string filename);
|
||||||
void ShowExpertCommands(void);
|
void ShowExpertCommands(void);
|
||||||
void RecoveryMenu(string filename);
|
void RecoveryMenu(std::string filename);
|
||||||
void ShowRecoveryCommands(void);
|
void ShowRecoveryCommands(void);
|
||||||
}; // class GPTDataTextUI
|
}; // class GPTDataTextUI
|
||||||
|
|
||||||
|
|||||||
12
guid.h
12
guid.h
@@ -30,8 +30,6 @@ typedef unsigned char my_uuid_t[16];
|
|||||||
typedef uuid_t my_uuid_t;
|
typedef uuid_t my_uuid_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
// Note: This class's data size is critical. If data elements must be added,
|
// 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.
|
// it will be necessary to modify various GPT classes to compensate.
|
||||||
class GUIDData {
|
class GUIDData {
|
||||||
@@ -39,17 +37,17 @@ class GUIDData {
|
|||||||
static bool firstInstance;
|
static bool firstInstance;
|
||||||
protected:
|
protected:
|
||||||
my_uuid_t uuidData;
|
my_uuid_t uuidData;
|
||||||
string DeleteSpaces(string s);
|
std::string DeleteSpaces(std::string s);
|
||||||
public:
|
public:
|
||||||
GUIDData(void);
|
GUIDData(void);
|
||||||
GUIDData(const GUIDData & orig);
|
GUIDData(const GUIDData & orig);
|
||||||
GUIDData(const string & orig);
|
GUIDData(const std::string & orig);
|
||||||
GUIDData(const char * orig);
|
GUIDData(const char * orig);
|
||||||
~GUIDData(void);
|
~GUIDData(void);
|
||||||
|
|
||||||
// Data assignment operators....
|
// Data assignment operators....
|
||||||
GUIDData & operator=(const GUIDData & orig);
|
GUIDData & operator=(const GUIDData & orig);
|
||||||
GUIDData & operator=(const string & orig);
|
GUIDData & operator=(const std::string & orig);
|
||||||
GUIDData & operator=(const char * orig);
|
GUIDData & operator=(const char * orig);
|
||||||
void Zero(void);
|
void Zero(void);
|
||||||
void Randomize(void);
|
void Randomize(void);
|
||||||
@@ -59,9 +57,9 @@ class GUIDData {
|
|||||||
int operator!=(const GUIDData & orig) const;
|
int operator!=(const GUIDData & orig) const;
|
||||||
|
|
||||||
// Data retrieval....
|
// Data retrieval....
|
||||||
string AsString(void) const;
|
std::string AsString(void) const;
|
||||||
}; // class GUIDData
|
}; // class GUIDData
|
||||||
|
|
||||||
ostream & operator<<(ostream & os, const GUIDData & data);
|
std::ostream & operator<<(std::ostream & os, const GUIDData & data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
4
mbr.h
4
mbr.h
@@ -13,8 +13,6 @@
|
|||||||
#include "diskio.h"
|
#include "diskio.h"
|
||||||
#include "basicmbr.h"
|
#include "basicmbr.h"
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* *
|
* *
|
||||||
* MBRData class and related structures *
|
* MBRData class and related structures *
|
||||||
@@ -26,7 +24,7 @@ class MBRData : public BasicMBRData {
|
|||||||
protected:
|
protected:
|
||||||
public:
|
public:
|
||||||
MBRData(void) {}
|
MBRData(void) {}
|
||||||
MBRData(string deviceFilename) : BasicMBRData(deviceFilename) {}
|
MBRData(std::string deviceFilename) : BasicMBRData(deviceFilename) {}
|
||||||
MBRData & operator=(const BasicMBRData & orig);
|
MBRData & operator=(const BasicMBRData & orig);
|
||||||
~MBRData(void);
|
~MBRData(void);
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,6 @@
|
|||||||
#define EBR 4 /* sector is used as an EBR or MBR */
|
#define EBR 4 /* sector is used as an EBR or MBR */
|
||||||
#define INVALID 8 /* sector number is too large for disk */
|
#define INVALID 8 /* sector number is too large for disk */
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
// Data for a single MBR partition record
|
// Data for a single MBR partition record
|
||||||
// Note that firstSector and lastSector are in CHS addressing, which
|
// Note that firstSector and lastSector are in CHS addressing, which
|
||||||
// splits the bits up in a weird way.
|
// splits the bits up in a weird way.
|
||||||
|
|||||||
18
parttypes.h
18
parttypes.h
@@ -6,16 +6,14 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#ifdef USE_UTF16
|
|
||||||
#include <unicode/ustream.h>
|
|
||||||
#else
|
|
||||||
#define UnicodeString string
|
|
||||||
#endif
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "support.h"
|
#include "support.h"
|
||||||
#include "guid.h"
|
#include "guid.h"
|
||||||
|
#ifdef USE_UTF16
|
||||||
using namespace std;
|
#include <unicode/ustream.h>
|
||||||
|
#else
|
||||||
|
#define UnicodeString std::string
|
||||||
|
#endif
|
||||||
|
|
||||||
// A partition type
|
// A partition type
|
||||||
struct AType {
|
struct AType {
|
||||||
@@ -24,7 +22,7 @@ struct AType {
|
|||||||
// codes required by GPT
|
// codes required by GPT
|
||||||
uint16_t MBRType;
|
uint16_t MBRType;
|
||||||
GUIDData GUIDType;
|
GUIDData GUIDType;
|
||||||
string name;
|
std::string name;
|
||||||
int display; // 1 to show to users as available type, 0 not to
|
int display; // 1 to show to users as available type, 0 not to
|
||||||
AType* next;
|
AType* next;
|
||||||
}; // struct AType
|
}; // struct AType
|
||||||
@@ -48,7 +46,7 @@ public:
|
|||||||
int AddType(uint16_t mbrType, const char * guidData, const char * name, int toDisplay = 1);
|
int AddType(uint16_t mbrType, const char * guidData, const char * name, int toDisplay = 1);
|
||||||
|
|
||||||
// New assignment operators....
|
// New assignment operators....
|
||||||
PartType & operator=(const string & orig);
|
PartType & operator=(const std::string & orig);
|
||||||
PartType & operator=(const char * orig);
|
PartType & operator=(const char * orig);
|
||||||
|
|
||||||
// Assignment operators based on base class....
|
// Assignment operators based on base class....
|
||||||
@@ -58,7 +56,7 @@ public:
|
|||||||
PartType & operator=(uint16_t ID); // Use MBR type code times 0x0100 to assign GUID
|
PartType & operator=(uint16_t ID); // Use MBR type code times 0x0100 to assign GUID
|
||||||
|
|
||||||
// Retrieve transformed GUID data based on type code matches
|
// Retrieve transformed GUID data based on type code matches
|
||||||
string TypeName(void) const;
|
std::string TypeName(void) const;
|
||||||
UnicodeString UTypeName(void) const;
|
UnicodeString UTypeName(void) const;
|
||||||
uint16_t GetHexType() const;
|
uint16_t GetHexType() const;
|
||||||
|
|
||||||
|
|||||||
18
support.h
18
support.h
@@ -8,7 +8,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#define GPTFDISK_VERSION "1.0.8.2"
|
#define GPTFDISK_VERSION "1.0.8.3"
|
||||||
|
|
||||||
#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
|
#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
|
||||||
// Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64
|
// Darwin (Mac OS) & FreeBSD: disk IOCTLs are different, and there is no lseek64
|
||||||
@@ -69,18 +69,16 @@
|
|||||||
#define GPT_RESERVED 420
|
#define GPT_RESERVED 420
|
||||||
#define NAME_SIZE 36 // GPT allows 36 UTF-16LE code units for a name in a 128 byte partition entry
|
#define NAME_SIZE 36 // GPT allows 36 UTF-16LE code units for a name in a 128 byte partition entry
|
||||||
|
|
||||||
using namespace std;
|
std::string ReadString(void);
|
||||||
|
uint64_t GetNumber(uint64_t low, uint64_t high, uint64_t def, const std::string & prompt);
|
||||||
string ReadString(void);
|
|
||||||
uint64_t GetNumber(uint64_t low, uint64_t high, uint64_t def, const string & prompt);
|
|
||||||
char GetYN(void);
|
char GetYN(void);
|
||||||
uint64_t IeeeToInt(string IeeeValue, uint64_t sSize, uint64_t low, uint64_t high, uint32_t sectorAlignment, uint64_t def = 0);
|
uint64_t IeeeToInt(std::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);
|
std::string BytesToIeee(uint64_t size, uint32_t sectorSize);
|
||||||
unsigned char StrToHex(const string & input, unsigned int position);
|
unsigned char StrToHex(const std::string & input, unsigned int position);
|
||||||
int IsHex(string input); // Returns 1 if input can be hexadecimal number....
|
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
|
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 ReverseBytes(void* theValue, int numBytes); // Reverses byte-order of theValue
|
||||||
void WinWarning(void);
|
void WinWarning(void);
|
||||||
string ToLower(const string& input);
|
std::string ToLower(const std::string& input);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user