Preliminary UTF-16LE support for GPT descriptions
This commit is contained in:
402
Makefile
402
Makefile
@@ -14,10 +14,10 @@ DEPEND= makedepend $(CXXFLAGS)
|
||||
all: gdisk sgdisk fixparts
|
||||
|
||||
gdisk: $(LIB_OBJS) gdisk.o gpttext.o
|
||||
$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -luuid -o gdisk
|
||||
$(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -licui18n -licuio -luuid -o gdisk
|
||||
|
||||
sgdisk: $(LIB_OBJS) sgdisk.o
|
||||
$(CXX) $(LIB_OBJS) sgdisk.o $(LDFLAGS) -luuid -lpopt -o sgdisk
|
||||
$(CXX) $(LIB_OBJS) sgdisk.o $(LDFLAGS) -licui18n -licuio -luuid -lpopt -o sgdisk
|
||||
|
||||
fixparts: $(MBR_LIB_OBJS) fixparts.o
|
||||
$(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts
|
||||
@@ -36,401 +36,3 @@ $(OBJS):
|
||||
$(CRITICAL_CXX_FLAGS)
|
||||
|
||||
# DO NOT DELETE
|
||||
|
||||
attributes.o: /usr/include/stdint.h /usr/include/features.h
|
||||
attributes.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
attributes.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
attributes.o: /usr/include/bits/wchar.h /usr/include/stdio.h
|
||||
attributes.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
attributes.o: /usr/include/libio.h /usr/include/_G_config.h
|
||||
attributes.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
|
||||
attributes.o: /usr/include/bits/sys_errlist.h attributes.h support.h
|
||||
attributes.o: /usr/include/stdlib.h /usr/include/sys/types.h
|
||||
attributes.o: /usr/include/time.h /usr/include/endian.h
|
||||
attributes.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
attributes.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
attributes.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
attributes.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
attributes.o: /usr/include/alloca.h
|
||||
basicmbr.o: /usr/include/stdio.h /usr/include/features.h
|
||||
basicmbr.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
basicmbr.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
basicmbr.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
basicmbr.o: /usr/include/libio.h /usr/include/_G_config.h
|
||||
basicmbr.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
|
||||
basicmbr.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
|
||||
basicmbr.o: /usr/include/sys/types.h /usr/include/time.h
|
||||
basicmbr.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
basicmbr.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
basicmbr.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
basicmbr.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
basicmbr.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
|
||||
basicmbr.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
basicmbr.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
|
||||
basicmbr.o: /usr/include/string.h /usr/include/xlocale.h
|
||||
basicmbr.o: /usr/include/sys/stat.h /usr/include/bits/stat.h
|
||||
basicmbr.o: /usr/include/errno.h /usr/include/bits/errno.h
|
||||
basicmbr.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
|
||||
basicmbr.o: /usr/include/asm-generic/errno.h
|
||||
basicmbr.o: /usr/include/asm-generic/errno-base.h mbr.h gptpart.h support.h
|
||||
basicmbr.o: parttypes.h guid.h /usr/include/uuid/uuid.h
|
||||
basicmbr.o: /usr/include/sys/time.h attributes.h diskio.h
|
||||
basicmbr.o: /usr/include/sys/ioctl.h /usr/include/bits/ioctls.h
|
||||
basicmbr.o: /usr/include/asm/ioctls.h /usr/include/asm-generic/ioctls.h
|
||||
basicmbr.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
|
||||
basicmbr.o: /usr/include/asm-generic/ioctl.h /usr/include/bits/ioctl-types.h
|
||||
basicmbr.o: /usr/include/sys/ttydefaults.h basicmbr.h mbrpart.h
|
||||
bsd.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
|
||||
bsd.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
|
||||
bsd.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h
|
||||
bsd.o: /usr/include/bits/typesizes.h /usr/include/libio.h
|
||||
bsd.o: /usr/include/_G_config.h /usr/include/wchar.h
|
||||
bsd.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
bsd.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
|
||||
bsd.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
bsd.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
bsd.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
bsd.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
bsd.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
|
||||
bsd.o: /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/fcntl.h
|
||||
bsd.o: /usr/include/bits/fcntl.h /usr/include/sys/stat.h
|
||||
bsd.o: /usr/include/bits/stat.h /usr/include/errno.h
|
||||
bsd.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
|
||||
bsd.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
|
||||
bsd.o: /usr/include/asm-generic/errno-base.h support.h bsd.h gptpart.h
|
||||
bsd.o: parttypes.h guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h
|
||||
bsd.o: attributes.h diskio.h /usr/include/sys/ioctl.h
|
||||
bsd.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
bsd.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
bsd.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
bsd.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
crc32.o: /usr/include/stdio.h /usr/include/features.h
|
||||
crc32.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
crc32.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
crc32.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
crc32.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
|
||||
crc32.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
crc32.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
|
||||
crc32.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
crc32.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
crc32.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
crc32.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
crc32.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h crc32.h
|
||||
crc32.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
diskio.o: /usr/include/sys/ioctl.h /usr/include/features.h
|
||||
diskio.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
diskio.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
diskio.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
diskio.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
diskio.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
diskio.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
diskio.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
diskio.o: /usr/include/errno.h /usr/include/bits/errno.h
|
||||
diskio.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
|
||||
diskio.o: /usr/include/asm-generic/errno.h
|
||||
diskio.o: /usr/include/asm-generic/errno-base.h /usr/include/fcntl.h
|
||||
diskio.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
|
||||
diskio.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
diskio.o: /usr/include/time.h /usr/include/endian.h
|
||||
diskio.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
diskio.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
diskio.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
diskio.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
diskio.o: /usr/include/sys/stat.h /usr/include/bits/stat.h support.h
|
||||
diskio.o: /usr/include/stdlib.h /usr/include/alloca.h diskio.h
|
||||
diskio-unix.o: /usr/include/sys/ioctl.h /usr/include/features.h
|
||||
diskio-unix.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
diskio-unix.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
diskio-unix.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
diskio-unix.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
diskio-unix.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
diskio-unix.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
diskio-unix.o: /usr/include/string.h /usr/include/xlocale.h
|
||||
diskio-unix.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
diskio-unix.o: /usr/include/errno.h /usr/include/bits/errno.h
|
||||
diskio-unix.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
|
||||
diskio-unix.o: /usr/include/asm-generic/errno.h
|
||||
diskio-unix.o: /usr/include/asm-generic/errno-base.h /usr/include/fcntl.h
|
||||
diskio-unix.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
|
||||
diskio-unix.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
diskio-unix.o: /usr/include/time.h /usr/include/endian.h
|
||||
diskio-unix.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
diskio-unix.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
diskio-unix.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
diskio-unix.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
diskio-unix.o: /usr/include/sys/stat.h /usr/include/bits/stat.h diskio.h
|
||||
diskio-unix.o: support.h /usr/include/stdlib.h /usr/include/alloca.h
|
||||
diskio-windows.o: /usr/include/stdio.h /usr/include/features.h
|
||||
diskio-windows.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
diskio-windows.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
diskio-windows.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
diskio-windows.o: /usr/include/libio.h /usr/include/_G_config.h
|
||||
diskio-windows.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
|
||||
diskio-windows.o: /usr/include/bits/sys_errlist.h /usr/include/stdint.h
|
||||
diskio-windows.o: /usr/include/bits/wchar.h /usr/include/errno.h
|
||||
diskio-windows.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
|
||||
diskio-windows.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
|
||||
diskio-windows.o: /usr/include/asm-generic/errno-base.h /usr/include/fcntl.h
|
||||
diskio-windows.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
|
||||
diskio-windows.o: /usr/include/time.h /usr/include/endian.h
|
||||
diskio-windows.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
diskio-windows.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
diskio-windows.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
diskio-windows.o: /usr/include/sys/sysmacros.h
|
||||
diskio-windows.o: /usr/include/bits/pthreadtypes.h /usr/include/sys/stat.h
|
||||
diskio-windows.o: /usr/include/bits/stat.h support.h /usr/include/stdlib.h
|
||||
diskio-windows.o: /usr/include/alloca.h diskio.h /usr/include/sys/ioctl.h
|
||||
diskio-windows.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
diskio-windows.o: /usr/include/asm-generic/ioctls.h
|
||||
diskio-windows.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
|
||||
diskio-windows.o: /usr/include/asm-generic/ioctl.h
|
||||
diskio-windows.o: /usr/include/bits/ioctl-types.h
|
||||
diskio-windows.o: /usr/include/sys/ttydefaults.h
|
||||
fixparts.o: /usr/include/stdio.h /usr/include/features.h
|
||||
fixparts.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
fixparts.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
fixparts.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
fixparts.o: /usr/include/libio.h /usr/include/_G_config.h
|
||||
fixparts.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
|
||||
fixparts.o: /usr/include/bits/sys_errlist.h /usr/include/string.h
|
||||
fixparts.o: /usr/include/xlocale.h basicmbr.h /usr/include/stdint.h
|
||||
fixparts.o: /usr/include/bits/wchar.h /usr/include/sys/types.h
|
||||
fixparts.o: /usr/include/time.h /usr/include/endian.h
|
||||
fixparts.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
fixparts.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
fixparts.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
fixparts.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
fixparts.o: diskio.h /usr/include/sys/ioctl.h /usr/include/bits/ioctls.h
|
||||
fixparts.o: /usr/include/asm/ioctls.h /usr/include/asm-generic/ioctls.h
|
||||
fixparts.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
|
||||
fixparts.o: /usr/include/asm-generic/ioctl.h /usr/include/bits/ioctl-types.h
|
||||
fixparts.o: /usr/include/sys/ttydefaults.h support.h /usr/include/stdlib.h
|
||||
fixparts.o: /usr/include/alloca.h mbrpart.h
|
||||
gdisk.o: /usr/include/stdio.h /usr/include/features.h
|
||||
gdisk.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
gdisk.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
gdisk.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
gdisk.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
|
||||
gdisk.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
gdisk.o: /usr/include/string.h /usr/include/xlocale.h mbr.h
|
||||
gdisk.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
gdisk.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
|
||||
gdisk.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
gdisk.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
gdisk.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
gdisk.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
gdisk.o: gptpart.h support.h /usr/include/stdlib.h /usr/include/alloca.h
|
||||
gdisk.o: parttypes.h guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h
|
||||
gdisk.o: attributes.h diskio.h /usr/include/sys/ioctl.h
|
||||
gdisk.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
gdisk.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
gdisk.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
gdisk.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
gdisk.o: basicmbr.h mbrpart.h gpttext.h gpt.h bsd.h
|
||||
gpt.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
|
||||
gpt.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
|
||||
gpt.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h
|
||||
gpt.o: /usr/include/bits/typesizes.h /usr/include/libio.h
|
||||
gpt.o: /usr/include/_G_config.h /usr/include/wchar.h
|
||||
gpt.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
gpt.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
|
||||
gpt.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
gpt.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
gpt.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
gpt.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
gpt.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
|
||||
gpt.o: /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/fcntl.h
|
||||
gpt.o: /usr/include/bits/fcntl.h /usr/include/string.h /usr/include/xlocale.h
|
||||
gpt.o: /usr/include/math.h /usr/include/bits/huge_val.h
|
||||
gpt.o: /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h
|
||||
gpt.o: /usr/include/bits/inf.h /usr/include/bits/nan.h
|
||||
gpt.o: /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h
|
||||
gpt.o: /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/errno.h
|
||||
gpt.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
|
||||
gpt.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
|
||||
gpt.o: /usr/include/asm-generic/errno-base.h crc32.h gpt.h gptpart.h
|
||||
gpt.o: support.h parttypes.h guid.h /usr/include/uuid/uuid.h
|
||||
gpt.o: /usr/include/sys/time.h attributes.h mbr.h diskio.h
|
||||
gpt.o: /usr/include/sys/ioctl.h /usr/include/bits/ioctls.h
|
||||
gpt.o: /usr/include/asm/ioctls.h /usr/include/asm-generic/ioctls.h
|
||||
gpt.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
|
||||
gpt.o: /usr/include/asm-generic/ioctl.h /usr/include/bits/ioctl-types.h
|
||||
gpt.o: /usr/include/sys/ttydefaults.h basicmbr.h mbrpart.h bsd.h
|
||||
gptpart.o: /usr/include/string.h /usr/include/features.h
|
||||
gptpart.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
gptpart.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
gptpart.o: /usr/include/xlocale.h /usr/include/stdio.h
|
||||
gptpart.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
gptpart.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
|
||||
gptpart.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
gptpart.o: gptpart.h /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
gptpart.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h
|
||||
gptpart.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
gptpart.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
gptpart.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
gptpart.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
gptpart.o: support.h /usr/include/stdlib.h /usr/include/alloca.h parttypes.h
|
||||
gptpart.o: guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h
|
||||
gptpart.o: attributes.h
|
||||
gpttext.o: /usr/include/string.h /usr/include/features.h
|
||||
gpttext.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
gpttext.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
gpttext.o: /usr/include/xlocale.h /usr/include/errno.h
|
||||
gpttext.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
|
||||
gpttext.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
|
||||
gpttext.o: /usr/include/asm-generic/errno-base.h /usr/include/stdint.h
|
||||
gpttext.o: /usr/include/bits/wchar.h /usr/include/limits.h
|
||||
gpttext.o: /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h
|
||||
gpttext.o: /usr/include/linux/limits.h /usr/include/bits/posix2_lim.h
|
||||
gpttext.o: attributes.h gpttext.h gpt.h /usr/include/sys/types.h
|
||||
gpttext.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
gpttext.o: /usr/include/time.h /usr/include/endian.h
|
||||
gpttext.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
gpttext.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
gpttext.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
gpttext.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
gpttext.o: gptpart.h support.h /usr/include/stdlib.h /usr/include/alloca.h
|
||||
gpttext.o: parttypes.h guid.h /usr/include/uuid/uuid.h
|
||||
gpttext.o: /usr/include/sys/time.h mbr.h diskio.h /usr/include/sys/ioctl.h
|
||||
gpttext.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
gpttext.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
gpttext.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
gpttext.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
gpttext.o: basicmbr.h mbrpart.h bsd.h
|
||||
guid.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
|
||||
guid.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
|
||||
guid.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h
|
||||
guid.o: /usr/include/bits/typesizes.h /usr/include/libio.h
|
||||
guid.o: /usr/include/_G_config.h /usr/include/wchar.h
|
||||
guid.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
guid.o: /usr/include/time.h /usr/include/string.h /usr/include/xlocale.h
|
||||
guid.o: guid.h /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
guid.o: /usr/include/uuid/uuid.h /usr/include/sys/types.h
|
||||
guid.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
guid.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
guid.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
guid.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
guid.o: /usr/include/bits/pthreadtypes.h /usr/include/sys/time.h support.h
|
||||
guid.o: /usr/include/stdlib.h /usr/include/alloca.h
|
||||
mbr.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
|
||||
mbr.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
|
||||
mbr.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h
|
||||
mbr.o: /usr/include/bits/typesizes.h /usr/include/libio.h
|
||||
mbr.o: /usr/include/_G_config.h /usr/include/wchar.h
|
||||
mbr.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
mbr.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
|
||||
mbr.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
mbr.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
mbr.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
mbr.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
mbr.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
|
||||
mbr.o: /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/fcntl.h
|
||||
mbr.o: /usr/include/bits/fcntl.h /usr/include/string.h /usr/include/xlocale.h
|
||||
mbr.o: /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/errno.h
|
||||
mbr.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
|
||||
mbr.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
|
||||
mbr.o: /usr/include/asm-generic/errno-base.h mbr.h gptpart.h support.h
|
||||
mbr.o: parttypes.h guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h
|
||||
mbr.o: attributes.h diskio.h /usr/include/sys/ioctl.h
|
||||
mbr.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
mbr.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
mbr.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
mbr.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
mbr.o: basicmbr.h mbrpart.h
|
||||
mbrpart.o: /usr/include/stdint.h /usr/include/features.h
|
||||
mbrpart.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
mbrpart.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
mbrpart.o: /usr/include/bits/wchar.h support.h /usr/include/stdlib.h
|
||||
mbrpart.o: /usr/include/sys/types.h /usr/include/bits/types.h
|
||||
mbrpart.o: /usr/include/bits/typesizes.h /usr/include/time.h
|
||||
mbrpart.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
mbrpart.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
mbrpart.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
mbrpart.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
mbrpart.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h mbrpart.h
|
||||
parttypes.o: /usr/include/string.h /usr/include/features.h
|
||||
parttypes.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
parttypes.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
parttypes.o: /usr/include/xlocale.h /usr/include/stdint.h
|
||||
parttypes.o: /usr/include/bits/wchar.h /usr/include/stdio.h
|
||||
parttypes.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
parttypes.o: /usr/include/libio.h /usr/include/_G_config.h
|
||||
parttypes.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
|
||||
parttypes.o: /usr/include/bits/sys_errlist.h parttypes.h
|
||||
parttypes.o: /usr/include/stdlib.h /usr/include/sys/types.h
|
||||
parttypes.o: /usr/include/time.h /usr/include/endian.h
|
||||
parttypes.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
parttypes.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
parttypes.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
parttypes.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
parttypes.o: /usr/include/alloca.h support.h guid.h /usr/include/uuid/uuid.h
|
||||
parttypes.o: /usr/include/sys/time.h
|
||||
sgdisk.o: /usr/include/stdio.h /usr/include/features.h
|
||||
sgdisk.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
sgdisk.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
sgdisk.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
sgdisk.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
|
||||
sgdisk.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
sgdisk.o: /usr/include/popt.h /usr/include/errno.h /usr/include/bits/errno.h
|
||||
sgdisk.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
|
||||
sgdisk.o: /usr/include/asm-generic/errno.h
|
||||
sgdisk.o: /usr/include/asm-generic/errno-base.h /usr/include/stdint.h
|
||||
sgdisk.o: /usr/include/bits/wchar.h mbr.h /usr/include/sys/types.h
|
||||
sgdisk.o: /usr/include/time.h /usr/include/endian.h
|
||||
sgdisk.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
sgdisk.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
sgdisk.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
sgdisk.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
sgdisk.o: gptpart.h support.h /usr/include/stdlib.h /usr/include/alloca.h
|
||||
sgdisk.o: parttypes.h guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h
|
||||
sgdisk.o: attributes.h diskio.h /usr/include/sys/ioctl.h
|
||||
sgdisk.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
|
||||
sgdisk.o: /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h
|
||||
sgdisk.o: /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h
|
||||
sgdisk.o: /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h
|
||||
sgdisk.o: basicmbr.h mbrpart.h gpt.h bsd.h
|
||||
support.o: /usr/include/stdio.h /usr/include/features.h
|
||||
support.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
support.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
support.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
|
||||
support.o: /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h
|
||||
support.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
support.o: /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
support.o: /usr/include/errno.h /usr/include/bits/errno.h
|
||||
support.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
|
||||
support.o: /usr/include/asm-generic/errno.h
|
||||
support.o: /usr/include/asm-generic/errno-base.h /usr/include/fcntl.h
|
||||
support.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
|
||||
support.o: /usr/include/time.h /usr/include/endian.h
|
||||
support.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
|
||||
support.o: /usr/include/sys/select.h /usr/include/bits/select.h
|
||||
support.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
|
||||
support.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
|
||||
support.o: /usr/include/string.h /usr/include/xlocale.h
|
||||
support.o: /usr/include/sys/stat.h /usr/include/bits/stat.h support.h
|
||||
support.o: /usr/include/stdlib.h /usr/include/alloca.h
|
||||
test.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h
|
||||
test.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
|
||||
test.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h
|
||||
test.o: /usr/include/bits/typesizes.h /usr/include/libio.h
|
||||
test.o: /usr/include/_G_config.h /usr/include/wchar.h
|
||||
test.o: /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
|
||||
test.o: support.h /usr/include/stdint.h /usr/include/bits/wchar.h
|
||||
test.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
|
||||
test.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
test.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
test.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
test.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
test.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
|
||||
testguid.o: guid.h /usr/include/stdint.h /usr/include/features.h
|
||||
testguid.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
|
||||
testguid.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
|
||||
testguid.o: /usr/include/bits/wchar.h /usr/include/uuid/uuid.h
|
||||
testguid.o: /usr/include/sys/types.h /usr/include/bits/types.h
|
||||
testguid.o: /usr/include/bits/typesizes.h /usr/include/time.h
|
||||
testguid.o: /usr/include/endian.h /usr/include/bits/endian.h
|
||||
testguid.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
|
||||
testguid.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
|
||||
testguid.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
|
||||
testguid.o: /usr/include/bits/pthreadtypes.h /usr/include/sys/time.h
|
||||
testguid.o: parttypes.h /usr/include/stdlib.h /usr/include/alloca.h support.h
|
||||
|
||||
4
NEWS
4
NEWS
@@ -1,6 +1,10 @@
|
||||
0.7.1 (?/?/2011):
|
||||
-----------------
|
||||
|
||||
- Fixed bug that caused second protective MBR partition, when created
|
||||
as part of a hybrid MBR, to always be of type 0xEE, even when the
|
||||
user specified something else.
|
||||
|
||||
- Integrated a number of code cleanups contributed by Florian Zumbiehl.
|
||||
|
||||
0.7.0 (3/11/2011):
|
||||
|
||||
4
README
4
README
@@ -161,6 +161,10 @@ used.) In addition, note these requirements:
|
||||
called uuid-dev or something similar to get the headers. On FreeBSD, the
|
||||
e2fsprogs-libuuid port must be installed.
|
||||
|
||||
* The ICU library (http://site.icu-project.org) is required on all
|
||||
platforms. This library is normally installed in Linux, but you may need
|
||||
to install the development headers (libicu-dev or something similar).
|
||||
|
||||
* The sgdisk program also requires the popt library and its development
|
||||
files (headers). Most Linux distributions install popt by default, but
|
||||
you may need to install a package called popt-dev, popt-devel, or
|
||||
|
||||
12
basicmbr.cc
12
basicmbr.cc
@@ -1544,15 +1544,13 @@ MBRPart* BasicMBRData::GetPartition(int i) {
|
||||
// user selected the 'q' option. (Thus, the caller should save data
|
||||
// if the return value is >0, or possibly >=0 depending on intentions.)
|
||||
int BasicMBRData::DoMenu(const string& prompt) {
|
||||
char line[255];
|
||||
int goOn = 1, quitting = 0, retval, num, haveShownInfo = 0;
|
||||
unsigned int hexCode = 0x00;
|
||||
|
||||
do {
|
||||
cout << prompt;
|
||||
ReadCString(line, sizeof(line));
|
||||
switch (*line) {
|
||||
case '\n':
|
||||
switch (ReadString()[0]) {
|
||||
case '\0':
|
||||
break;
|
||||
case 'a': case 'A':
|
||||
num = GetNumber(1, MAX_MBR_PARTS, 1, "Toggle active flag for partition: ") - 1;
|
||||
@@ -1598,13 +1596,9 @@ int BasicMBRData::DoMenu(const string& prompt) {
|
||||
case 't': case 'T':
|
||||
num = GetNumber(1, MAX_MBR_PARTS, 1, "Partition to change type code: ") - 1;
|
||||
if (partitions[num].GetLengthLBA() > 0) {
|
||||
hexCode = 0;
|
||||
while ((hexCode <= 0) || (hexCode > 255)) {
|
||||
cout << "Enter an MBR hex code: ";
|
||||
ReadCString(line, sizeof(line));
|
||||
sscanf(line, "%x", &hexCode);
|
||||
if (line[0] == '\n')
|
||||
hexCode = 0x00;
|
||||
hexCode = StrToHex(ReadString(), 0);
|
||||
} // while
|
||||
partitions[num].SetType(hexCode);
|
||||
} // if
|
||||
|
||||
79
fixparts.cc
79
fixparts.cc
@@ -22,21 +22,18 @@ using namespace std;
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
BasicMBRData mbrTable;
|
||||
char *device = NULL;
|
||||
int i, doItAgain;
|
||||
string device;
|
||||
int doItAgain;
|
||||
|
||||
switch (argc) {
|
||||
case 1:
|
||||
cout << "Type device filename, or press <Enter> to exit: ";
|
||||
device = new char[255];
|
||||
ReadCString(device, 255);
|
||||
i = strlen(device);
|
||||
if (i && device[i - 1] == '\n')
|
||||
device[i - 1] = '\0';
|
||||
device = ReadString();
|
||||
if (device.length() == 0)
|
||||
exit(0);
|
||||
break;
|
||||
case 2:
|
||||
device = new char[strlen(argv[1]) + 1];
|
||||
strcpy(device, argv[1]);
|
||||
device = argv[1];
|
||||
break;
|
||||
default:
|
||||
cerr << "Usage: " << argv[0] << " device_filename\n";
|
||||
@@ -45,39 +42,39 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
cout << "FixParts " << GPTFDISK_VERSION << "\n";
|
||||
cout << "\nLoading MBR data from " << device << "\n";
|
||||
mbrTable.ReadMBRData(device);
|
||||
if (mbrTable.CheckForGPT() > 0) {
|
||||
if ((mbrTable.GetValidity() == hybrid) || (mbrTable.GetValidity() == gpt)) {
|
||||
cerr << "\nThis disk appears to be a GPT disk. Use GNU Parted or GPT fdisk on it!\n";
|
||||
cerr << "Exiting!\n\n";
|
||||
exit(1);
|
||||
} else {
|
||||
cout << "\nNOTICE: GPT signatures detected on the disk, but no 0xEE protective "
|
||||
<< "partition!\nThe GPT signatures are probably left over from a previous "
|
||||
<< "partition table.\nDo you want to delete them (if you answer 'Y', this "
|
||||
<< "will happen\nimmediately)? ";
|
||||
if (GetYN() == 'Y') {
|
||||
cout << "Erasing GPT data!\n";
|
||||
if (mbrTable.BlankGPTData() != 1)
|
||||
cerr << "GPT signature erasure failed!\n";
|
||||
} // if
|
||||
} // if/else
|
||||
} // if
|
||||
mbrTable.MakeItLegal();
|
||||
do {
|
||||
doItAgain = 0;
|
||||
if (mbrTable.DoMenu() > 0) {
|
||||
cout << "\nFinal checks complete. About to write MBR data. THIS WILL OVERWRITE EXISTING\n"
|
||||
<< "PARTITIONS!!\n\nDo you want to proceed? ";
|
||||
if (GetYN() == 'Y') {
|
||||
mbrTable.WriteMBRData();
|
||||
mbrTable.DiskSync();
|
||||
doItAgain = 0;
|
||||
if (mbrTable.ReadMBRData(device)) {
|
||||
if (mbrTable.CheckForGPT() > 0) {
|
||||
if ((mbrTable.GetValidity() == hybrid) || (mbrTable.GetValidity() == gpt)) {
|
||||
cerr << "\nThis disk appears to be a GPT disk. Use GNU Parted or GPT fdisk on it!\n";
|
||||
cerr << "Exiting!\n\n";
|
||||
exit(1);
|
||||
} else {
|
||||
doItAgain = 1;
|
||||
} // else
|
||||
cout << "\nNOTICE: GPT signatures detected on the disk, but no 0xEE protective "
|
||||
<< "partition!\nThe GPT signatures are probably left over from a previous "
|
||||
<< "partition table.\nDo you want to delete them (if you answer 'Y', this "
|
||||
<< "will happen\nimmediately)? ";
|
||||
if (GetYN() == 'Y') {
|
||||
cout << "Erasing GPT data!\n";
|
||||
if (mbrTable.BlankGPTData() != 1)
|
||||
cerr << "GPT signature erasure failed!\n";
|
||||
} // if
|
||||
} // if/else
|
||||
} // if
|
||||
} while (doItAgain);
|
||||
delete[] device;
|
||||
mbrTable.MakeItLegal();
|
||||
do {
|
||||
doItAgain = 0;
|
||||
if (mbrTable.DoMenu() > 0) {
|
||||
cout << "\nFinal checks complete. About to write MBR data. THIS WILL OVERWRITE EXISTING\n"
|
||||
<< "PARTITIONS!!\n\nDo you want to proceed? ";
|
||||
if (GetYN() == 'Y') {
|
||||
mbrTable.WriteMBRData();
|
||||
mbrTable.DiskSync();
|
||||
doItAgain = 0;
|
||||
} else {
|
||||
doItAgain = 1;
|
||||
} // else
|
||||
} // if
|
||||
} while (doItAgain);
|
||||
} // if read OK
|
||||
return 0;
|
||||
} // main()
|
||||
|
||||
73
gdisk.cc
73
gdisk.cc
@@ -28,8 +28,8 @@ void WinWarning(void);
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
GPTDataTextUI theGPT;
|
||||
size_t i;
|
||||
char *device = NULL;
|
||||
string device = "";
|
||||
UnicodeString uString;
|
||||
|
||||
cout << "GPT fdisk (gdisk) version " << GPTFDISK_VERSION << "\n\n";
|
||||
|
||||
@@ -40,14 +40,12 @@ int main(int argc, char* argv[]) {
|
||||
case 1:
|
||||
WinWarning();
|
||||
cout << "Type device filename, or press <Enter> to exit: ";
|
||||
device = new char[255];
|
||||
ReadCString(device, 255);
|
||||
i = strlen(device);
|
||||
if (i && device[i - 1] == '\n')
|
||||
device[i - 1] = '\0';
|
||||
if (*device && theGPT.LoadPartitions(device))
|
||||
device = ReadString();
|
||||
if (device.length() == 0)
|
||||
exit(0);
|
||||
else if (theGPT.LoadPartitions(device)) {
|
||||
MainMenu(device, &theGPT);
|
||||
delete[] device;
|
||||
} // if/elseif
|
||||
break;
|
||||
case 2: // basic usage
|
||||
WinWarning();
|
||||
@@ -56,15 +54,15 @@ int main(int argc, char* argv[]) {
|
||||
break;
|
||||
case 3: // usage with "-l" option
|
||||
if (strcmp(argv[1], "-l") == 0) {
|
||||
device = argv[2];
|
||||
device = (string) argv[2];
|
||||
} else if (strcmp(argv[2], "-l") == 0) {
|
||||
device = argv[1];
|
||||
device = (string) argv[1];
|
||||
} else { // 3 arguments, but none is "-l"
|
||||
cerr << "Usage: " << argv[0] << " [-l] device_file\n";
|
||||
} // if/elseif/else
|
||||
if (device != NULL) {
|
||||
if (device != "") {
|
||||
theGPT.JustLooking();
|
||||
if (theGPT.LoadPartitions((string) device))
|
||||
if (theGPT.LoadPartitions(device))
|
||||
theGPT.DisplayGPTData();
|
||||
} // if
|
||||
break;
|
||||
@@ -77,22 +75,18 @@ int main(int argc, char* argv[]) {
|
||||
// Accept a command and execute it. Returns only when the user
|
||||
// wants to exit (such as after a 'w' or 'q' command).
|
||||
void MainMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
char line[255], buFile[255];
|
||||
int goOn = 1;
|
||||
PartType typeHelper;
|
||||
uint32_t temp1, temp2;
|
||||
|
||||
do {
|
||||
cout << "\nCommand (? for help): ";
|
||||
ReadCString(line, sizeof(line));
|
||||
switch (*line) {
|
||||
case '\n':
|
||||
switch (ReadString()[0]) {
|
||||
case '\0':
|
||||
break;
|
||||
case 'b': case 'B':
|
||||
cout << "Enter backup filename to save: ";
|
||||
ReadCString(line, sizeof(line));
|
||||
sscanf(line, "%s", buFile);
|
||||
theGPT->SaveGPTBackup(buFile);
|
||||
theGPT->SaveGPTBackup(ReadString());
|
||||
break;
|
||||
case 'c': case 'C':
|
||||
if (theGPT->GetPartRange(&temp1, &temp2) > 0)
|
||||
@@ -177,15 +171,13 @@ void ShowCommands(void) {
|
||||
// Accept a recovery & transformation menu command. Returns only when the user
|
||||
// issues an exit command, such as 'w' or 'q'.
|
||||
void RecoveryMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
char line[255], buFile[255];
|
||||
uint32_t numParts;
|
||||
int goOn = 1, temp1;
|
||||
|
||||
do {
|
||||
cout << "\nRecovery/transformation command (? for help): ";
|
||||
ReadCString(line, sizeof(line));
|
||||
switch (*line) {
|
||||
case '\n':
|
||||
switch (ReadString()[0]) {
|
||||
case '\0':
|
||||
break;
|
||||
case 'b': case 'B':
|
||||
theGPT->RebuildMainHeader();
|
||||
@@ -239,9 +231,7 @@ void RecoveryMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
break;
|
||||
case 'l': case 'L':
|
||||
cout << "Enter backup filename to load: ";
|
||||
ReadCString(line, sizeof(line));
|
||||
sscanf(line, "%s", buFile);
|
||||
theGPT->LoadGPTBackup(buFile);
|
||||
theGPT->LoadGPTBackup(ReadString());
|
||||
break;
|
||||
case 'm': case 'M':
|
||||
MainMenu(filename, theGPT);
|
||||
@@ -303,19 +293,16 @@ void ShowRecoveryCommands(void) {
|
||||
// selects an exit command, such as 'w' or 'q'.
|
||||
void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
GPTData secondDevice;
|
||||
char line[255], *device;
|
||||
uint32_t pn, temp1, temp2;
|
||||
int goOn = 1;
|
||||
size_t i;
|
||||
char guidStr[255];
|
||||
string guidStr, device;
|
||||
GUIDData aGUID;
|
||||
ostringstream prompt;
|
||||
|
||||
do {
|
||||
cout << "\nExpert command (? for help): ";
|
||||
ReadCString(line, sizeof(line));
|
||||
switch (*line) {
|
||||
case '\n':
|
||||
switch (ReadString()[0]) {
|
||||
case '\0':
|
||||
break;
|
||||
case 'a': case 'A':
|
||||
if (theGPT->GetPartRange(&temp1, &temp2) > 0)
|
||||
@@ -327,8 +314,8 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
if (theGPT->GetPartRange(&temp1, &temp2) > 0) {
|
||||
pn = theGPT->GetPartNum();
|
||||
cout << "Enter the partition's new unique GUID ('R' to randomize): ";
|
||||
ReadCString(guidStr, sizeof(guidStr));
|
||||
if ((strlen(guidStr) >= 33) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
|
||||
guidStr = ReadString();
|
||||
if ((guidStr.length() >= 32) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
|
||||
theGPT->SetPartitionGUID(pn, (GUIDData) guidStr);
|
||||
cout << "New GUID is " << theGPT->operator[](pn).GetUniqueGUID() << "\n";
|
||||
} else {
|
||||
@@ -349,12 +336,13 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
break;
|
||||
case 'g': case 'G':
|
||||
cout << "Enter the disk's unique GUID ('R' to randomize): ";
|
||||
ReadCString(guidStr, sizeof(guidStr));
|
||||
if ((strlen(guidStr) >= 33) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
|
||||
guidStr = ReadString();
|
||||
if ((guidStr.length() >= 32) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
|
||||
theGPT->SetDiskGUID((GUIDData) guidStr);
|
||||
cout << "The new disk GUID is " << theGPT->GetDiskGUID() << "\n";
|
||||
} else
|
||||
} else {
|
||||
cout << "GUID is too short!\n";
|
||||
} // if/else
|
||||
break;
|
||||
case 'h': case 'H':
|
||||
theGPT->RecomputeCHS();
|
||||
@@ -397,17 +385,12 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
|
||||
break;
|
||||
case 'u': case 'U':
|
||||
cout << "Type device filename, or press <Enter> to exit: ";
|
||||
device = new char[255];
|
||||
ReadCString(device, 255);
|
||||
i = strlen(device);
|
||||
if (i && device[i - 1] == '\n')
|
||||
device[i - 1] = '\0';
|
||||
if (*device) {
|
||||
device = ReadString();
|
||||
if (device.length() > 0) {
|
||||
secondDevice = *theGPT;
|
||||
secondDevice.SetDisk(device);
|
||||
secondDevice.SaveGPTData(0);
|
||||
} // if
|
||||
delete[] device;
|
||||
break;
|
||||
case 'v': case 'V':
|
||||
theGPT->Verify();
|
||||
|
||||
10
gpt.cc
10
gpt.cc
@@ -1028,7 +1028,7 @@ int GPTData::SaveGPTData(int quiet) {
|
||||
|
||||
myDisk.Close();
|
||||
} else {
|
||||
cerr << "Unable to open device " << myDisk.GetName() << " for writing! Errno is "
|
||||
cerr << "Unable to open device '" << myDisk.GetName() << "' for writing! Errno is "
|
||||
<< errno << "! Aborting write!\n";
|
||||
allOK = 0;
|
||||
} // if/else
|
||||
@@ -1078,7 +1078,7 @@ int GPTData::SaveGPTBackup(const string & filename) {
|
||||
} // if/else
|
||||
backupFile.Close();
|
||||
} else {
|
||||
cerr << "Unable to open file " << filename << " for writing! Aborting!\n";
|
||||
cerr << "Unable to open file '" << filename << "' for writing! Aborting!\n";
|
||||
allOK = 0;
|
||||
} // if/else
|
||||
return allOK;
|
||||
@@ -1190,7 +1190,7 @@ int GPTData::LoadGPTBackup(const string & filename) {
|
||||
} // if
|
||||
} else {
|
||||
allOK = 0;
|
||||
cerr << "Unable to open file " << filename << " for reading! Aborting!\n";
|
||||
cerr << "Unable to open file '" << filename << "' for reading! Aborting!\n";
|
||||
} // if/else
|
||||
|
||||
return allOK;
|
||||
@@ -1253,7 +1253,7 @@ int GPTData::DestroyGPT(void) {
|
||||
<< "other utilities.\n";
|
||||
delete[] emptyTable;
|
||||
} else {
|
||||
cerr << "Problem opening " << device << " for writing! Program will now terminate.\n";
|
||||
cerr << "Problem opening '" << device << "' for writing! Program will now terminate.\n";
|
||||
} // if/else (fd != -1)
|
||||
return (allOK);
|
||||
} // GPTDataTextUI::DestroyGPT()
|
||||
@@ -1766,7 +1766,7 @@ void GPTData::MoveSecondHeaderToEnd() {
|
||||
secondHeader.partitionEntriesLBA = secondHeader.lastUsableLBA + UINT64_C(1);
|
||||
} // GPTData::FixSecondHeaderLocation()
|
||||
|
||||
int GPTData::SetName(uint32_t partNum, const string & theName) {
|
||||
int GPTData::SetName(uint32_t partNum, const UnicodeString & theName) {
|
||||
int retval = 1;
|
||||
|
||||
if (!IsFreePartNum(partNum)) {
|
||||
|
||||
2
gpt.h
2
gpt.h
@@ -151,7 +151,7 @@ public:
|
||||
int SwapPartitions(uint32_t partNum1, uint32_t partNum2);
|
||||
int ClearGPTData(void);
|
||||
void MoveSecondHeaderToEnd();
|
||||
int SetName(uint32_t partNum, const string & theName = "");
|
||||
int SetName(uint32_t partNum, const UnicodeString & theName = "");
|
||||
void SetDiskGUID(GUIDData newGUID);
|
||||
int SetPartitionGUID(uint32_t pn, GUIDData theGUID);
|
||||
void RandomizeGUIDs(void);
|
||||
|
||||
92
gptpart.cc
92
gptpart.cc
@@ -17,6 +17,7 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <unicode/ustdio.h>
|
||||
#include <iostream>
|
||||
#include "gptpart.h"
|
||||
#include "attributes.h"
|
||||
@@ -46,6 +47,16 @@ string GPTPart::GetTypeName(void) {
|
||||
return partitionType.TypeName();
|
||||
} // GPTPart::GetNameType()
|
||||
|
||||
// Return a Unicode description of the partition type (e.g., "Linux/Windows
|
||||
// data" or "Linux swap").
|
||||
UnicodeString GPTPart::GetUTypeName(void) {
|
||||
return partitionType.UTypeName();
|
||||
/* UnicodeString temp;
|
||||
|
||||
temp = temp.fromUTF8(partitionType.TypeName());
|
||||
return temp; */
|
||||
} // GPTPart::GetNameType()
|
||||
|
||||
// Compute and return the partition's length (or 0 if the end is incorrectly
|
||||
// set before the beginning).
|
||||
uint64_t GPTPart::GetLengthLBA(void) const {
|
||||
@@ -56,7 +67,7 @@ uint64_t GPTPart::GetLengthLBA(void) const {
|
||||
return length;
|
||||
} // GPTPart::GetLengthLBA()
|
||||
|
||||
// Return partition's name field, converted to a C++ ASCII string
|
||||
/* // Return partition's name field, converted to a C++ ASCII string
|
||||
string GPTPart::GetDescription(void) {
|
||||
string theName;
|
||||
int i;
|
||||
@@ -67,6 +78,20 @@ string GPTPart::GetDescription(void) {
|
||||
theName += name[i];
|
||||
} // for
|
||||
return theName;
|
||||
} // GPTPart::GetDescription() */
|
||||
|
||||
UnicodeString GPTPart::GetDescription(void) {
|
||||
UnicodeString theName;
|
||||
UChar *temp;
|
||||
int i;
|
||||
|
||||
theName = "";
|
||||
temp = (UChar*) name;
|
||||
for (i = 0; i < NAME_SIZE / 2; i++) {
|
||||
if (temp[i] != '\0')
|
||||
theName += temp[i];
|
||||
} // for
|
||||
return theName;
|
||||
} // GPTPart::GetDescription()
|
||||
|
||||
// Return 1 if the partition is in use
|
||||
@@ -78,41 +103,38 @@ int GPTPart::IsUsed(void) {
|
||||
// name *IF* the current name is the generic one for the current partition
|
||||
// type.
|
||||
void GPTPart::SetType(PartType t) {
|
||||
if (GetDescription() == partitionType.TypeName()) {
|
||||
if (GetDescription() == partitionType.UTypeName()) {
|
||||
SetName(t.TypeName());
|
||||
} // if
|
||||
partitionType = t;
|
||||
} // GPTPart::SetType()
|
||||
|
||||
// Set the name for a partition to theName, or prompt for a name if
|
||||
// theName is empty. Note that theName is a standard C++-style ASCII
|
||||
// string, although the GUID partition definition requires a UTF-16LE
|
||||
// string. This function creates a simple-minded copy for this.
|
||||
void GPTPart::SetName(const string & theName) {
|
||||
char newName[NAME_SIZE];
|
||||
size_t i;
|
||||
// theName is empty, using a C++-style string as input.
|
||||
void GPTPart::SetName(string theName) {
|
||||
UnicodeString uString;
|
||||
|
||||
// Blank out new name string, so that it will terminate in a null
|
||||
// when data are copied to it....
|
||||
memset(newName, 0, NAME_SIZE);
|
||||
uString = theName.c_str();
|
||||
SetName(uString);
|
||||
} // GPTPart::SetName()
|
||||
|
||||
// Set the name for a partition to theName, or prompt for a name
|
||||
// if theName is empty, using a Unicode string as input.
|
||||
void GPTPart::SetName(UnicodeString theName) {
|
||||
int i;
|
||||
UChar temp[NAME_SIZE / 2];
|
||||
|
||||
if (theName == "") { // No name specified, so get one from the user
|
||||
cout << "Enter name: ";
|
||||
ReadCString(newName, NAME_SIZE / 2 + 1);
|
||||
|
||||
// Input is likely to include a newline, so remove it....
|
||||
i = strlen(newName);
|
||||
if (i && newName[i - 1] == '\n')
|
||||
newName[i - 1] = '\0';
|
||||
} else {
|
||||
strcpy(newName, theName.substr(0, NAME_SIZE / 2).c_str());
|
||||
theName = ReadUString();
|
||||
} // if
|
||||
|
||||
// Copy the C-style ASCII string from newName into a form that the GPT
|
||||
// Copy the C++-style string from newName into a form that the GPT
|
||||
// table will accept....
|
||||
memset(name, 0, NAME_SIZE);
|
||||
for (i = 0; i < NAME_SIZE / 2; i++)
|
||||
name[i * 2] = newName[i];
|
||||
memset(temp, 0, NAME_SIZE);
|
||||
for (i = 0; i < theName.length(); i++)
|
||||
temp[i] = theName[i];
|
||||
memcpy(name, temp, NAME_SIZE);
|
||||
} // GPTPart::SetName()
|
||||
|
||||
// Set the name for the partition based on the current GUID partition type
|
||||
@@ -146,6 +168,7 @@ bool GPTPart::operator<(const GPTPart &other) const {
|
||||
// Display summary information; does nothing if the partition is empty.
|
||||
void GPTPart::ShowSummary(int partNum, uint32_t blockSize) {
|
||||
string sizeInIeee;
|
||||
UnicodeString description;
|
||||
size_t i;
|
||||
|
||||
if (firstLBA != 0) {
|
||||
@@ -166,7 +189,13 @@ void GPTPart::ShowSummary(int partNum, uint32_t blockSize) {
|
||||
cout.setf(ios::uppercase);
|
||||
cout << hex << partitionType.GetHexType() << " " << dec;
|
||||
cout.fill(' ');
|
||||
cout << GetDescription().substr(0, 23) << "\n";
|
||||
// description = GetDescription();
|
||||
GetDescription().extractBetween(0, 24, description);
|
||||
cout << description << "\n";
|
||||
// for (i = 0; i < 23; i++)
|
||||
// cout << (char) description.;
|
||||
// cout << GetDescription().tempSubString(0, 23) << "\n";
|
||||
// cout << GetDescription().substr(0, 23) << "\n";
|
||||
cout.fill(' ');
|
||||
} // if
|
||||
} // GPTPart::ShowSummary()
|
||||
@@ -217,11 +246,16 @@ int GPTPart::DoTheyOverlap(const GPTPart & other) {
|
||||
(firstLBA <= other.lastLBA) != (lastLBA < other.firstLBA);
|
||||
} // GPTPart::DoTheyOverlap()
|
||||
|
||||
// Reverse the bytes of integral data types; used on big-endian systems.
|
||||
// Reverse the bytes of integral data types and of the UTF-16LE name;
|
||||
// used on big-endian systems.
|
||||
void GPTPart::ReversePartBytes(void) {
|
||||
int i;
|
||||
|
||||
ReverseBytes(&firstLBA, 8);
|
||||
ReverseBytes(&lastLBA, 8);
|
||||
ReverseBytes(&attributes, 8);
|
||||
for (i = 0; i < NAME_SIZE; i += 2)
|
||||
ReverseBytes(name + i, 2);
|
||||
} // GPTPart::ReverseBytes()
|
||||
|
||||
/****************************************
|
||||
@@ -231,20 +265,20 @@ void GPTPart::ReversePartBytes(void) {
|
||||
// Change the type code on the partition. Also changes the name if the original
|
||||
// name is the generic one for the partition type.
|
||||
void GPTPart::ChangeType(void) {
|
||||
char line[255];
|
||||
string line;
|
||||
int changeName;
|
||||
PartType tempType = (GUIDData) "00000000-0000-0000-0000-000000000000";
|
||||
|
||||
changeName = (GetDescription() == GetTypeName());
|
||||
changeName = (GetDescription() == GetUTypeName());
|
||||
|
||||
cout << "Current type is '" << GetTypeName() << "'\n";
|
||||
do {
|
||||
cout << "Hex code or GUID (L to show codes, Enter = 0700): ";
|
||||
ReadCString(line, sizeof(line));
|
||||
line = ReadString();
|
||||
if ((line[0] == 'L') || (line[0] == 'l')) {
|
||||
partitionType.ShowAllTypes();
|
||||
} else {
|
||||
if (strlen(line) == 1)
|
||||
if (line.length() == 0)
|
||||
tempType = 0x0700;
|
||||
else
|
||||
tempType = line;
|
||||
|
||||
@@ -54,13 +54,15 @@ class GPTPart {
|
||||
PartType & GetType(void) {return partitionType;}
|
||||
uint16_t GetHexType(void) const;
|
||||
string GetTypeName(void);
|
||||
UnicodeString GetUTypeName(void);
|
||||
const GUIDData GetUniqueGUID(void) const {return uniqueGUID;}
|
||||
uint64_t GetFirstLBA(void) const {return firstLBA;}
|
||||
uint64_t GetLastLBA(void) const {return lastLBA;}
|
||||
uint64_t GetLengthLBA(void) const;
|
||||
Attributes GetAttributes(void) {return attributes;}
|
||||
void ShowAttributes(uint32_t partNum) {attributes.ShowAttributes(partNum);}
|
||||
string GetDescription(void);
|
||||
// string GetDescription(void);
|
||||
UnicodeString GetDescription(void);
|
||||
int IsUsed(void);
|
||||
|
||||
// Simple data assignment:
|
||||
@@ -72,7 +74,9 @@ class GPTPart {
|
||||
void SetLastLBA(uint64_t l) {lastLBA = l;}
|
||||
void SetAttributes(uint64_t a) {attributes = a;}
|
||||
void SetAttributes(void) {attributes.ChangeAttributes();}
|
||||
void SetName(const string & n);
|
||||
void SetName(string theName);
|
||||
void SetName(UnicodeString theName);
|
||||
// void SetName(UChar *theName);
|
||||
void SetDefaultDescription(void);
|
||||
|
||||
// Additional functions
|
||||
|
||||
29
gpttext.cc
29
gpttext.cc
@@ -355,7 +355,7 @@ void GPTDataTextUI::ShowDetails(void) {
|
||||
// OSes that don't understand GPT.
|
||||
void GPTDataTextUI::MakeHybrid(void) {
|
||||
uint32_t partNums[3];
|
||||
char line[255];
|
||||
string line;
|
||||
int numPartsToCvt, i, j, mbrNum = 0;
|
||||
unsigned int hexCode = 0;
|
||||
MBRPart hybridPart;
|
||||
@@ -371,8 +371,8 @@ void GPTDataTextUI::MakeHybrid(void) {
|
||||
// hybrid MBR....
|
||||
cout << "Type from one to three GPT partition numbers, separated by spaces, to be\n"
|
||||
<< "added to the hybrid MBR, in sequence: ";
|
||||
ReadCString(line, sizeof(line));
|
||||
numPartsToCvt = sscanf(line, "%d %d %d", &partNums[0], &partNums[1], &partNums[2]);
|
||||
line = ReadString();
|
||||
numPartsToCvt = sscanf(line.c_str(), "%d %d %d", &partNums[0], &partNums[1], &partNums[2]);
|
||||
|
||||
if (numPartsToCvt > 0) {
|
||||
cout << "Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? ";
|
||||
@@ -422,16 +422,11 @@ void GPTDataTextUI::MakeHybrid(void) {
|
||||
if (hybridMBR.CountParts() < 4) { // unused entry....
|
||||
cout << "\nUnused partition space(s) found. Use one to protect more partitions? ";
|
||||
if (GetYN() == 'Y') {
|
||||
while ((hexCode <= 0) || (hexCode > 255)) {
|
||||
cout << "Enter an MBR hex code (EE is EFI GPT, but may confuse MacOS): ";
|
||||
// Comment on above: Mac OS treats disks with more than one
|
||||
// 0xEE MBR partition as MBR disks, not as GPT disks.
|
||||
ReadCString(line, sizeof(line));
|
||||
sscanf(line, "%x", &hexCode);
|
||||
if (line[0] == '\n')
|
||||
hexCode = 0x00;
|
||||
} // while
|
||||
hybridMBR.MakeBiggestPart(3, 0xEE);
|
||||
cout << "Note: Default is 0xEE, but this may confuse Mac OS X.\n";
|
||||
// Comment on above: Mac OS treats disks with more than one
|
||||
// 0xEE MBR partition as MBR disks, not as GPT disks.
|
||||
hexCode = GetMBRTypeCode(0xEE);
|
||||
hybridMBR.MakeBiggestPart(3, hexCode);
|
||||
} // if (GetYN() == 'Y')
|
||||
} // if unused entry
|
||||
protectiveMBR = hybridMBR;
|
||||
@@ -471,7 +466,7 @@ int GPTDataTextUI::XFormToMBR(void) {
|
||||
|
||||
// Get an MBR type code from the user and return it
|
||||
int GetMBRTypeCode(int defType) {
|
||||
char line[255];
|
||||
string line;
|
||||
int typeCode;
|
||||
|
||||
cout.setf(ios::uppercase);
|
||||
@@ -480,11 +475,11 @@ int GetMBRTypeCode(int defType) {
|
||||
cout << "Enter an MBR hex code (default " << hex;
|
||||
cout.width(2);
|
||||
cout << defType << "): " << dec;
|
||||
ReadCString(line, sizeof(line));
|
||||
if (line[0] == '\n')
|
||||
line = ReadString();
|
||||
if (line[0] == '\0')
|
||||
typeCode = defType;
|
||||
else
|
||||
sscanf(line, "%x", &typeCode);
|
||||
typeCode = StrToHex(line, 0);
|
||||
} while ((typeCode <= 0) || (typeCode > 255));
|
||||
cout.fill(' ');
|
||||
return typeCode;
|
||||
|
||||
4
guid.cc
4
guid.cc
@@ -33,6 +33,10 @@ GUIDData::GUIDData(const GUIDData & orig) {
|
||||
memcpy(uuidData, orig.uuidData, sizeof(uuidData));
|
||||
} // copy constructor
|
||||
|
||||
GUIDData::GUIDData(const string & orig) {
|
||||
operator=(orig);
|
||||
} // copy (from string) constructor
|
||||
|
||||
GUIDData::GUIDData(const char * orig) {
|
||||
operator=(orig);
|
||||
} // copy (from char*) constructor
|
||||
|
||||
1
guid.h
1
guid.h
@@ -37,6 +37,7 @@ class GUIDData {
|
||||
public:
|
||||
GUIDData(void);
|
||||
GUIDData(const GUIDData & orig);
|
||||
GUIDData(const string & orig);
|
||||
GUIDData(const char * orig);
|
||||
~GUIDData(void);
|
||||
|
||||
|
||||
46
parttypes.cc
46
parttypes.cc
@@ -270,6 +270,26 @@ string PartType::TypeName(void) const {
|
||||
return typeName;
|
||||
} // PartType::TypeName()
|
||||
|
||||
// Return the Unicode description of the partition type (e.g., "Linux/Windows data")
|
||||
UnicodeString PartType::UTypeName(void) const {
|
||||
AType* theItem = allTypes;
|
||||
int found = 0;
|
||||
UnicodeString typeName;
|
||||
|
||||
while ((theItem != NULL) && (!found)) {
|
||||
if (theItem->GUIDType == *this) { // found it!
|
||||
typeName = theItem->name.c_str();
|
||||
found = 1;
|
||||
} else {
|
||||
theItem = theItem->next;
|
||||
} // if/else
|
||||
} // while
|
||||
if (!found) {
|
||||
typeName = "Unknown";
|
||||
} // if (!found)
|
||||
return typeName;
|
||||
} // PartType::TypeName()
|
||||
|
||||
// Return the custom GPT fdisk 2-byte (16-bit) hex code for this GUID partition type
|
||||
// Note that this function ignores entries for which the display variable
|
||||
// is set to 0. This enables control of which values get returned when
|
||||
@@ -337,3 +357,29 @@ int PartType::Valid(uint16_t code) const {
|
||||
} // while
|
||||
return found;
|
||||
} // PartType::Valid()
|
||||
|
||||
/********************************
|
||||
* *
|
||||
* Non-class support functions. *
|
||||
* *
|
||||
********************************/
|
||||
|
||||
// Note: ReadUString() is here rather than in support.cc so that the ICU
|
||||
// libraries need not be linked to fixparts.
|
||||
|
||||
// Reads a Unicode string from stdin, returning it as a ICU-style string.
|
||||
// Note that the returned string will NOT include the carriage return
|
||||
// entered by the user.
|
||||
UnicodeString ReadUString(void) {
|
||||
UnicodeString inString = "", oneWord;
|
||||
|
||||
do {
|
||||
cin >> oneWord;
|
||||
if (inString.length() > 0)
|
||||
inString += " ";
|
||||
inString += oneWord;
|
||||
} while (cin.peek() != '\n');
|
||||
cin.get(); // discard CR
|
||||
return inString;
|
||||
} // ReadUString()
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <unicode/unistr.h>
|
||||
#include <unicode/ustream.h>
|
||||
#include <string>
|
||||
#include "support.h"
|
||||
#include "guid.h"
|
||||
@@ -51,6 +53,7 @@ public:
|
||||
|
||||
// Retrieve transformed GUID data based on type code matches
|
||||
string TypeName(void) const;
|
||||
UnicodeString UTypeName(void) const;
|
||||
uint16_t GetHexType() const;
|
||||
|
||||
// Information relating to all type data
|
||||
@@ -58,4 +61,6 @@ public:
|
||||
int Valid(uint16_t code) const;
|
||||
};
|
||||
|
||||
UnicodeString ReadUString(void);
|
||||
|
||||
#endif
|
||||
|
||||
43
sgdisk.cc
43
sgdisk.cc
@@ -30,6 +30,11 @@ using namespace std;
|
||||
int BuildMBR(GPTData& theGPT, char* argument, int isHybrid);
|
||||
int CountColons(char* argument);
|
||||
|
||||
// Extract colon-separated fields from a string....
|
||||
uint64_t GetInt(const string & argument, int itemNum);
|
||||
string GetString(string argument, int itemNum);
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
GPTData theGPT, secondDevice;
|
||||
uint32_t sSize;
|
||||
@@ -173,7 +178,7 @@ int main(int argc, char *argv[]) {
|
||||
case 'c':
|
||||
theGPT.JustLooking(0);
|
||||
partNum = (int) GetInt(partName, 1) - 1;
|
||||
if (theGPT.SetName(partNum, GetString(partName, 2))) {
|
||||
if (theGPT.SetName(partNum, (UnicodeString) GetString(partName, 2).c_str())) {
|
||||
saveData = 1;
|
||||
} else {
|
||||
cerr << "Unable to set partition " << partNum + 1
|
||||
@@ -473,3 +478,39 @@ int CountColons(char* argument) {
|
||||
|
||||
return num;
|
||||
} // CountColons()
|
||||
|
||||
// Extract integer data from argument string, which should be colon-delimited
|
||||
uint64_t GetInt(const string & argument, int itemNum) {
|
||||
uint64_t retval;
|
||||
|
||||
istringstream inString(GetString(argument, itemNum));
|
||||
inString >> retval;
|
||||
return retval;
|
||||
} // GetInt()
|
||||
|
||||
// Extract string data from argument string, which should be colon-delimited
|
||||
// If string begins with a colon, that colon is skipped in the counting. If an
|
||||
// invalid itemNum is specified, returns an empty string.
|
||||
string GetString(string argument, int itemNum) {
|
||||
size_t startPos = 0, endPos = 0;
|
||||
string retVal = "";
|
||||
int foundLast = 0;
|
||||
int numFound = 0;
|
||||
|
||||
if (argument[0] == ':')
|
||||
argument.erase(0, 1);
|
||||
while ((numFound < itemNum) && (!foundLast)) {
|
||||
endPos = argument.find(':', startPos);
|
||||
numFound++;
|
||||
if (endPos == string::npos) {
|
||||
foundLast = 1;
|
||||
endPos = argument.length();
|
||||
} else if (numFound < itemNum) {
|
||||
startPos = endPos + 1;
|
||||
} // if/elseif
|
||||
} // while
|
||||
if ((numFound == itemNum) && (numFound > 0))
|
||||
retVal = argument.substr(startPos, endPos - startPos);
|
||||
|
||||
return retVal;
|
||||
} // GetString()
|
||||
|
||||
61
support.cc
61
support.cc
@@ -15,6 +15,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unicode/ustdio.h>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
@@ -31,13 +32,15 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
void ReadCString(char *inStr, int numchars) {
|
||||
if (!fgets(inStr, numchars, stdin)) {
|
||||
cerr << "Error! Failed fgets() in ReadCString()\n";
|
||||
if ((numchars > 0) && (inStr != NULL))
|
||||
inStr[0] = '\0';
|
||||
} // if
|
||||
} // ReadCString()
|
||||
// Reads a string from stdin, returning it as a C++-style string.
|
||||
// Note that the returned string will NOT include the carriage return
|
||||
// entered by the user.
|
||||
string ReadString(void) {
|
||||
string inString;
|
||||
|
||||
getline(cin, inString);
|
||||
return inString;
|
||||
} // ReadString()
|
||||
|
||||
// Get a numeric value from the user, between low and high (inclusive).
|
||||
// Keeps looping until the user enters a value within that range.
|
||||
@@ -69,12 +72,12 @@ int GetNumber(int low, int high, int def, const string & prompt) {
|
||||
|
||||
// Gets a Y/N response (and converts lowercase to uppercase)
|
||||
char GetYN(void) {
|
||||
char line[255];
|
||||
char response;
|
||||
string line;
|
||||
|
||||
do {
|
||||
cout << "(Y/N): ";
|
||||
ReadCString(line, sizeof(line));
|
||||
line = ReadString();
|
||||
response = toupper(line[0]);
|
||||
} while ((response != 'Y') && (response != 'N'));
|
||||
return response;
|
||||
@@ -180,7 +183,7 @@ uint64_t IeeeToInt(string inValue, uint64_t sSize, uint64_t low, uint64_t high,
|
||||
// (sectorSize defaults to 1).
|
||||
string BytesToIeee(uint64_t size, uint32_t sectorSize) {
|
||||
float sizeInIeee;
|
||||
uint index = 0;
|
||||
unsigned int index = 0;
|
||||
string units, prefixes = " KMGTPE";
|
||||
ostringstream theValue;
|
||||
|
||||
@@ -209,7 +212,7 @@ unsigned char StrToHex(const string & input, unsigned int position) {
|
||||
unsigned char retval = 0x00;
|
||||
unsigned int temp;
|
||||
|
||||
if (input.length() >= (position + 2)) {
|
||||
if (input.length() > position) {
|
||||
sscanf(input.substr(position, 2).c_str(), "%x", &temp);
|
||||
retval = (unsigned char) temp;
|
||||
} // if
|
||||
@@ -267,39 +270,3 @@ void ReverseBytes(void* theValue, int numBytes) {
|
||||
delete[] tempValue;
|
||||
} // if
|
||||
} // ReverseBytes()
|
||||
|
||||
// Extract integer data from argument string, which should be colon-delimited
|
||||
uint64_t GetInt(const string & argument, int itemNum) {
|
||||
uint64_t retval;
|
||||
|
||||
istringstream inString(GetString(argument, itemNum));
|
||||
inString >> retval;
|
||||
return retval;
|
||||
} // GetInt()
|
||||
|
||||
// Extract string data from argument string, which should be colon-delimited
|
||||
// If string begins with a colon, that colon is skipped in the counting. If an
|
||||
// invalid itemNum is specified, returns an empty string.
|
||||
string GetString(string argument, int itemNum) {
|
||||
size_t startPos = 0, endPos = 0;
|
||||
string retVal = "";
|
||||
int foundLast = 0;
|
||||
int numFound = 0;
|
||||
|
||||
if (argument[0] == ':')
|
||||
argument.erase(0, 1);
|
||||
while ((numFound < itemNum) && (!foundLast)) {
|
||||
endPos = argument.find(':', startPos);
|
||||
numFound++;
|
||||
if (endPos == string::npos) {
|
||||
foundLast = 1;
|
||||
endPos = argument.length();
|
||||
} else if (numFound < itemNum) {
|
||||
startPos = endPos + 1;
|
||||
} // if/elseif
|
||||
} // while
|
||||
if ((numFound == itemNum) && (numFound > 0))
|
||||
retVal = argument.substr(startPos, endPos - startPos);
|
||||
|
||||
return retVal;
|
||||
} // GetString()
|
||||
|
||||
12
support.h
12
support.h
@@ -8,7 +8,7 @@
|
||||
#ifndef __GPTSUPPORT
|
||||
#define __GPTSUPPORT
|
||||
|
||||
#define GPTFDISK_VERSION "0.7.1-pre1"
|
||||
#define GPTFDISK_VERSION "0.7.1-pre2"
|
||||
|
||||
#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__)
|
||||
// Darwin (Mac OS) only: disk IOCTLs are different, and there is no lseek64
|
||||
@@ -38,8 +38,8 @@
|
||||
#define APM_SIGNATURE1 UINT64_C(0x00004D5000000000)
|
||||
#define APM_SIGNATURE2 UINT64_C(0x0000535400000000)
|
||||
|
||||
// Maximum line length ignored on some input functions
|
||||
#define MAX_IGNORED 999
|
||||
// Maximum line length on some input functions
|
||||
#define MAX_LINE_LENGTH 255
|
||||
|
||||
/**************************
|
||||
* Some GPT constants.... *
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
void ReadCString(char *inStr, int numchars);
|
||||
string ReadString(void);
|
||||
int GetNumber(int low, int high, int def, const string & prompt);
|
||||
char GetYN(void);
|
||||
uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, uint64_t sSize, const std::string& prompt);
|
||||
@@ -67,8 +67,4 @@ int IsHex(const 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
|
||||
|
||||
// Extract colon-separated fields from a string....
|
||||
uint64_t GetInt(const string & argument, int itemNum);
|
||||
string GetString(string argument, int itemNum);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user