diff --git a/Makefile b/Makefile index 06c576f8ee3803180ededc5420b1f0b01ff5c808..66fdc64b735eb461e9ca7238a252ac087ac35afa 100644 --- a/Makefile +++ b/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) -licuio -luuid -o gdisk + $(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -licuio -licuuc -luuid -o gdisk sgdisk: $(LIB_OBJS) sgdisk.o - $(CXX) $(LIB_OBJS) sgdisk.o $(LDFLAGS) -licuio -luuid -lpopt -o sgdisk + $(CXX) $(LIB_OBJS) sgdisk.o $(LDFLAGS) -licuio -licuuc -luuid -lpopt -o sgdisk fixparts: $(MBR_LIB_OBJS) fixparts.o $(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts @@ -36,3 +36,535 @@ $(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/bits/waitflags.h +attributes.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +attributes.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +attributes.o: /usr/include/sys/types.h /usr/include/time.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/bits/waitflags.h /usr/include/bits/waitstatus.h +basicmbr.o: /usr/include/endian.h /usr/include/bits/endian.h +basicmbr.o: /usr/include/bits/byteswap.h /usr/include/sys/types.h +basicmbr.o: /usr/include/time.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/bits/stat.h /usr/include/string.h +basicmbr.o: /usr/include/xlocale.h /usr/include/sys/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 /usr/include/unicode/ustream.h +basicmbr.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +basicmbr.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +basicmbr.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +basicmbr.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +basicmbr.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +basicmbr.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +basicmbr.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +basicmbr.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +basicmbr.o: /usr/include/unicode/std_string.h +basicmbr.o: /usr/include/unicode/stringpiece.h +basicmbr.o: /usr/include/unicode/bytestream.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/bits/waitflags.h +bsd.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +bsd.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +bsd.o: /usr/include/sys/types.h /usr/include/time.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/bits/stat.h +bsd.o: /usr/include/sys/stat.h /usr/include/errno.h /usr/include/bits/errno.h +bsd.o: /usr/include/linux/errno.h /usr/include/asm/errno.h +bsd.o: /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h +bsd.o: support.h bsd.h gptpart.h parttypes.h /usr/include/unicode/ustream.h +bsd.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +bsd.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +bsd.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +bsd.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +bsd.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +bsd.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +bsd.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +bsd.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +bsd.o: /usr/include/unicode/std_string.h /usr/include/unicode/stringpiece.h +bsd.o: /usr/include/unicode/bytestream.h guid.h /usr/include/uuid/uuid.h +bsd.o: /usr/include/sys/time.h 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/bits/waitflags.h +crc32.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +crc32.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +crc32.o: /usr/include/sys/types.h /usr/include/time.h +crc32.o: /usr/include/sys/select.h /usr/include/bits/select.h +crc32.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +crc32.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +crc32.o: /usr/include/alloca.h crc32.h /usr/include/stdint.h +crc32.o: /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/bits/stat.h /usr/include/sys/stat.h support.h +diskio.o: /usr/include/stdlib.h /usr/include/bits/waitflags.h +diskio.o: /usr/include/bits/waitstatus.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/bits/stat.h /usr/include/sys/stat.h diskio.h +diskio-unix.o: support.h /usr/include/stdlib.h /usr/include/bits/waitflags.h +diskio-unix.o: /usr/include/bits/waitstatus.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/bits/stat.h +diskio-windows.o: /usr/include/sys/stat.h support.h /usr/include/stdlib.h +diskio-windows.o: /usr/include/bits/waitflags.h +diskio-windows.o: /usr/include/bits/waitstatus.h /usr/include/alloca.h +diskio-windows.o: 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/bits/waitflags.h /usr/include/bits/waitstatus.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 +gdisk.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h +gdisk.o: /usr/include/alloca.h parttypes.h /usr/include/unicode/ustream.h +gdisk.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +gdisk.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +gdisk.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +gdisk.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +gdisk.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +gdisk.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +gdisk.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +gdisk.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +gdisk.o: /usr/include/unicode/std_string.h /usr/include/unicode/stringpiece.h +gdisk.o: /usr/include/unicode/bytestream.h guid.h /usr/include/uuid/uuid.h +gdisk.o: /usr/include/sys/time.h attributes.h diskio.h +gdisk.o: /usr/include/sys/ioctl.h /usr/include/bits/ioctls.h +gdisk.o: /usr/include/asm/ioctls.h /usr/include/asm-generic/ioctls.h +gdisk.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h +gdisk.o: /usr/include/asm-generic/ioctl.h /usr/include/bits/ioctl-types.h +gdisk.o: /usr/include/sys/ttydefaults.h basicmbr.h mbrpart.h gpttext.h gpt.h +gdisk.o: 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/bits/waitflags.h +gpt.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +gpt.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +gpt.o: /usr/include/sys/types.h /usr/include/time.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/bits/stat.h +gpt.o: /usr/include/string.h /usr/include/xlocale.h /usr/include/math.h +gpt.o: /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h +gpt.o: /usr/include/bits/huge_vall.h /usr/include/bits/inf.h +gpt.o: /usr/include/bits/nan.h /usr/include/bits/mathdef.h +gpt.o: /usr/include/bits/mathcalls.h /usr/include/sys/stat.h +gpt.o: /usr/include/errno.h /usr/include/bits/errno.h +gpt.o: /usr/include/linux/errno.h /usr/include/asm/errno.h +gpt.o: /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h +gpt.o: crc32.h gpt.h gptpart.h support.h parttypes.h +gpt.o: /usr/include/unicode/ustream.h /usr/include/unicode/unistr.h +gpt.o: /usr/include/unicode/utypes.h /usr/include/unicode/umachine.h +gpt.o: /usr/include/unicode/ptypes.h /usr/include/unicode/platform.h +gpt.o: /usr/include/inttypes.h /usr/include/unicode/urename.h +gpt.o: /usr/include/unicode/uvernum.h /usr/include/unicode/utf.h +gpt.o: /usr/include/unicode/utf8.h /usr/include/unicode/utf16.h +gpt.o: /usr/include/unicode/utf_old.h /usr/include/unicode/uversion.h +gpt.o: /usr/include/unicode/uconfig.h /usr/include/unicode/rep.h +gpt.o: /usr/include/unicode/uobject.h /usr/include/unicode/std_string.h +gpt.o: /usr/include/unicode/stringpiece.h /usr/include/unicode/bytestream.h +gpt.o: guid.h /usr/include/uuid/uuid.h /usr/include/sys/time.h attributes.h +gpt.o: mbr.h diskio.h /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/unicode/ustdio.h /usr/include/stdio.h +gptpart.o: /usr/include/features.h /usr/include/sys/cdefs.h +gptpart.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h +gptpart.o: /usr/include/gnu/stubs-64.h /usr/include/bits/types.h +gptpart.o: /usr/include/bits/typesizes.h /usr/include/libio.h +gptpart.o: /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: /usr/include/unicode/utypes.h /usr/include/unicode/umachine.h +gptpart.o: /usr/include/unicode/ptypes.h /usr/include/sys/types.h +gptpart.o: /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: /usr/include/unicode/platform.h /usr/include/inttypes.h +gptpart.o: /usr/include/stdint.h /usr/include/bits/wchar.h +gptpart.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +gptpart.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +gptpart.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +gptpart.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +gptpart.o: /usr/include/unicode/ucnv.h /usr/include/unicode/ucnv_err.h +gptpart.o: /usr/include/unicode/uenum.h /usr/include/unicode/localpointer.h +gptpart.o: /usr/include/unicode/utrans.h /usr/include/unicode/urep.h +gptpart.o: /usr/include/unicode/parseerr.h /usr/include/string.h +gptpart.o: /usr/include/xlocale.h gptpart.h support.h /usr/include/stdlib.h +gptpart.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h +gptpart.o: /usr/include/alloca.h parttypes.h /usr/include/unicode/ustream.h +gptpart.o: /usr/include/unicode/unistr.h /usr/include/unicode/rep.h +gptpart.o: /usr/include/unicode/uobject.h /usr/include/unicode/std_string.h +gptpart.o: /usr/include/unicode/stringpiece.h +gptpart.o: /usr/include/unicode/bytestream.h guid.h /usr/include/uuid/uuid.h +gptpart.o: /usr/include/sys/time.h 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 +gpttext.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h +gpttext.o: /usr/include/alloca.h parttypes.h /usr/include/unicode/ustream.h +gpttext.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +gpttext.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +gpttext.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +gpttext.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +gpttext.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +gpttext.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +gpttext.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +gpttext.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +gpttext.o: /usr/include/unicode/std_string.h +gpttext.o: /usr/include/unicode/stringpiece.h +gpttext.o: /usr/include/unicode/bytestream.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/bits/waitflags.h +guid.o: /usr/include/bits/waitstatus.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/bits/waitflags.h +mbr.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +mbr.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +mbr.o: /usr/include/sys/types.h /usr/include/time.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/bits/stat.h +mbr.o: /usr/include/string.h /usr/include/xlocale.h /usr/include/sys/stat.h +mbr.o: /usr/include/errno.h /usr/include/bits/errno.h +mbr.o: /usr/include/linux/errno.h /usr/include/asm/errno.h +mbr.o: /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h +mbr.o: mbr.h gptpart.h support.h parttypes.h /usr/include/unicode/ustream.h +mbr.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +mbr.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +mbr.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +mbr.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +mbr.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +mbr.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +mbr.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +mbr.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +mbr.o: /usr/include/unicode/std_string.h /usr/include/unicode/stringpiece.h +mbr.o: /usr/include/unicode/bytestream.h guid.h /usr/include/uuid/uuid.h +mbr.o: /usr/include/sys/time.h 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/bits/waitflags.h /usr/include/bits/waitstatus.h +mbrpart.o: /usr/include/endian.h /usr/include/bits/endian.h +mbrpart.o: /usr/include/bits/byteswap.h /usr/include/sys/types.h +mbrpart.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h +mbrpart.o: /usr/include/time.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/bits/waitflags.h +parttypes.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +parttypes.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +parttypes.o: /usr/include/sys/types.h /usr/include/time.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 /usr/include/unicode/ustream.h +parttypes.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +parttypes.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +parttypes.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +parttypes.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +parttypes.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +parttypes.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +parttypes.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +parttypes.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +parttypes.o: /usr/include/unicode/std_string.h +parttypes.o: /usr/include/unicode/stringpiece.h +parttypes.o: /usr/include/unicode/bytestream.h support.h guid.h +parttypes.o: /usr/include/uuid/uuid.h /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 /usr/include/string.h +sgdisk.o: /usr/include/xlocale.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 +sgdisk.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h +sgdisk.o: /usr/include/alloca.h parttypes.h /usr/include/unicode/ustream.h +sgdisk.o: /usr/include/unicode/unistr.h /usr/include/unicode/utypes.h +sgdisk.o: /usr/include/unicode/umachine.h /usr/include/unicode/ptypes.h +sgdisk.o: /usr/include/unicode/platform.h /usr/include/inttypes.h +sgdisk.o: /usr/include/unicode/urename.h /usr/include/unicode/uvernum.h +sgdisk.o: /usr/include/unicode/utf.h /usr/include/unicode/utf8.h +sgdisk.o: /usr/include/unicode/utf16.h /usr/include/unicode/utf_old.h +sgdisk.o: /usr/include/unicode/uversion.h /usr/include/unicode/uconfig.h +sgdisk.o: /usr/include/unicode/rep.h /usr/include/unicode/uobject.h +sgdisk.o: /usr/include/unicode/std_string.h +sgdisk.o: /usr/include/unicode/stringpiece.h +sgdisk.o: /usr/include/unicode/bytestream.h guid.h /usr/include/uuid/uuid.h +sgdisk.o: /usr/include/sys/time.h attributes.h diskio.h +sgdisk.o: /usr/include/sys/ioctl.h /usr/include/bits/ioctls.h +sgdisk.o: /usr/include/asm/ioctls.h /usr/include/asm-generic/ioctls.h +sgdisk.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h +sgdisk.o: /usr/include/asm-generic/ioctl.h /usr/include/bits/ioctl-types.h +sgdisk.o: /usr/include/sys/ttydefaults.h 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/bits/stat.h /usr/include/string.h +support.o: /usr/include/xlocale.h /usr/include/sys/stat.h support.h +support.o: /usr/include/stdlib.h /usr/include/bits/waitflags.h +support.o: /usr/include/bits/waitstatus.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/bits/waitflags.h +test.o: /usr/include/bits/waitstatus.h /usr/include/endian.h +test.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h +test.o: /usr/include/sys/types.h /usr/include/time.h +test.o: /usr/include/sys/select.h /usr/include/bits/select.h +test.o: /usr/include/bits/sigset.h /usr/include/bits/time.h +test.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h +test.o: /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/bits/waitflags.h +testguid.o: /usr/include/bits/waitstatus.h /usr/include/alloca.h +testguid.o: /usr/include/unicode/ustream.h /usr/include/unicode/unistr.h +testguid.o: /usr/include/unicode/utypes.h /usr/include/unicode/umachine.h +testguid.o: /usr/include/unicode/ptypes.h /usr/include/unicode/platform.h +testguid.o: /usr/include/inttypes.h /usr/include/unicode/urename.h +testguid.o: /usr/include/unicode/uvernum.h /usr/include/unicode/utf.h +testguid.o: /usr/include/unicode/utf8.h /usr/include/unicode/utf16.h +testguid.o: /usr/include/unicode/utf_old.h /usr/include/unicode/uversion.h +testguid.o: /usr/include/unicode/uconfig.h /usr/include/unicode/rep.h +testguid.o: /usr/include/unicode/uobject.h /usr/include/unicode/std_string.h +testguid.o: /usr/include/unicode/stringpiece.h +testguid.o: /usr/include/unicode/bytestream.h support.h diff --git a/NEWS b/NEWS index 7932515e39ef76600926d99fa435139efe319475..b0815faea89372a42ee72aa85c0519f68562f17a 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,18 @@ +0.7.2 (?/??/2011): +------------------ + +- Fixed a bug that caused an incorrect code to be set for active/bootable + partitions when generating a hybrid MBR. + +- Enable entry of hex codes that begin with "0x" for both GPT and MBR + partitions. + +- Fixed bug that caused the boot loader code to be lost when creating a + hybrid MBR. + +- Fixed bug in sector input code that could produce improper values + if the user inputs ridiculously large "+" values. + 0.7.1 (3/21/2011): ------------------ diff --git a/basicmbr.cc b/basicmbr.cc index 12ec92bc8d0265751f8562fd47d348a7f4ce534b..54b48092e261484e6b21532e39b329004846f5c3 100644 --- a/basicmbr.cc +++ b/basicmbr.cc @@ -84,6 +84,10 @@ BasicMBRData & BasicMBRData::operator=(const BasicMBRData & orig) { state = orig.state; myDisk = new DiskIO; + if (myDisk == NULL) { + cerr << "Unable to allocate memory in BasicMBRData::operator=()! Terminating!\n"; + exit(1); + } // if if (orig.myDisk != NULL) myDisk->OpenForRead(orig.myDisk->GetName()); @@ -106,6 +110,10 @@ int BasicMBRData::ReadMBRData(const string & deviceFilename) { if (myDisk == NULL) { myDisk = new DiskIO; + if (myDisk == NULL) { + cerr << "Unable to allocate memory in BasicMBRData::ReadMBRData()! Terminating!\n"; + exit(1); + } // if canDeleteMyDisk = 1; } // if if (myDisk->OpenForRead(deviceFilename)) { @@ -1497,7 +1505,8 @@ MBRPart* BasicMBRData::GetPartition(int i) { // if the return value is >0, or possibly >=0 depending on intentions.) int BasicMBRData::DoMenu(const string& prompt) { int goOn = 1, quitting = 0, retval, num, haveShownInfo = 0; - unsigned int hexCode = 0x00; + unsigned int hexCode; + string tempStr; do { cout << prompt; @@ -1547,10 +1556,13 @@ int BasicMBRData::DoMenu(const string& prompt) { break; case 't': case 'T': num = GetNumber(1, MAX_MBR_PARTS, 1, "Partition to change type code: ") - 1; + hexCode = 0x00; if (partitions[num].GetLengthLBA() > 0) { while ((hexCode <= 0) || (hexCode > 255)) { cout << "Enter an MBR hex code: "; - hexCode = StrToHex(ReadString(), 0); + tempStr = ReadString(); + if (IsHex(tempStr)) + sscanf(tempStr.c_str(), "%x", &hexCode); } // while partitions[num].SetType(hexCode); } // if diff --git a/basicmbr.h b/basicmbr.h index 6d4de726dbb2ee0034bc14f5c33d8e701e659ec8..3d5b485bc4ad9e5a9ed8826a641dacbd47770a54 100644 --- a/basicmbr.h +++ b/basicmbr.h @@ -18,8 +18,6 @@ using namespace std; -class PartNotes; - /**************************************** * * * MBRData class and related structures * diff --git a/bsd.cc b/bsd.cc index 57fb912d1cc9658f74cdc67d96849d04d525497b..8524d5bf212c9570ab1444afe5527945cd8a3160 100644 --- a/bsd.cc +++ b/bsd.cc @@ -134,6 +134,10 @@ int BSDData::ReadBSDData(DiskIO *theDisk, uint64_t startSector, uint64_t endSect // If the state is good, go ahead and load the main partition data.... if (state == bsd) { partitions = new struct BSDRecord[numParts * sizeof(struct BSDRecord)]; + if (partitions == NULL) { + cerr << "Unable to allocate memory in BSDData::ReadBSDData()! Terminating!\n"; + exit(1); + } // if for (i = 0; i < numParts; i++) { // Once again, we use the buffer, but index it using a BSDRecord // pointer (dangerous, but effective).... diff --git a/diskio-unix.cc b/diskio-unix.cc index 5494dd5b9dd9a8b30b6e5f58a54c41ee60a77644..327a498582006807860182e74b5d4a700f3bee02 100644 --- a/diskio-unix.cc +++ b/diskio-unix.cc @@ -290,6 +290,10 @@ int DiskIO::Read(void* buffer, int numBytes) { numBlocks++; tempSpace = new char [numBlocks * blockSize]; } // if/else + if (tempSpace == NULL) { + cerr << "Unable to allocate memory in DiskIO::Read()! Terminating!\n"; + exit(1); + } // if // Read the data into temporary space, then copy it to buffer retval = read(fd, tempSpace, numBlocks * blockSize); @@ -328,7 +332,11 @@ int DiskIO::Write(void* buffer, int numBytes) { if ((numBytes % blockSize) != 0) numBlocks++; tempSpace = new char [numBlocks * blockSize]; } // if/else - + if (tempSpace == NULL) { + cerr << "Unable to allocate memory in DiskIO::Write()! Terminating!\n"; + exit(1); + } // if + // Copy the data to my own buffer, then write it memcpy(tempSpace, buffer, numBytes); for (i = numBytes; i < numBlocks * blockSize; i++) { diff --git a/diskio-windows.cc b/diskio-windows.cc index 938d7ece813b406e672cb6440313bcea372f0ecd..37e5bb5f36d259fc6e5ffdeb3170a8d17cfd73b1 100644 --- a/diskio-windows.cc +++ b/diskio-windows.cc @@ -230,7 +230,11 @@ int DiskIO::Read(void* buffer, int numBytes) { numBlocks++; tempSpace = new char [numBlocks * blockSize]; } // if/else - + if (tempSpace == NULL) { + cerr << "Unable to allocate memory in DiskIO::Read()! Terminating!\n"; + exit(1); + } // if + // Read the data into temporary space, then copy it to buffer ReadFile(fd, tempSpace, numBlocks * blockSize, &retval, NULL); for (i = 0; i < numBytes; i++) { @@ -271,6 +275,10 @@ int DiskIO::Write(void* buffer, int numBytes) { if ((numBytes % blockSize) != 0) numBlocks++; tempSpace = new char [numBlocks * blockSize]; } // if/else + if (tempSpace == NULL) { + cerr << "Unable to allocate memory in DiskIO::Write()! Terminating!\n"; + exit(1); + } // if // Copy the data to my own buffer, then write it for (i = 0; i < numBytes; i++) { diff --git a/gdisk.8 b/gdisk.8 index 2b29ea9f3538a5261264f765f5c12904ecd29fda..3368c7160129c898e17395ac43bc6581c53a3293 100644 --- a/gdisk.8 +++ b/gdisk.8 @@ -34,8 +34,8 @@ The \fBgdisk\fR program employs a user interface similar to that of Linux's capability of transforming MBR partitions or BSD disklabels into GPT partitions. Like the original \fBfdisk\fR program, \fBgdisk\fR does not modify disk structures until you explicitly write them to disk, so if you -make a mistake, you can exit from the program with the 'q' option to save -your partitions. +make a mistake, you can exit from the program with the 'q' option to leave +your partitions unmodified. Ordinarily, \fBgdisk\fR operates on disk device files, such as \fI/dev/sda\fR or \fI/dev/hda\fR under Linux, \fI/dev/disk0\fR under diff --git a/gpt.cc b/gpt.cc index 9c62f4e536ae88d6bfa739b3c1dee61a68fabd2c..4889c378f9b3316ccf2a500bfa154d60580f77c7 100644 --- a/gpt.cc +++ b/gpt.cc @@ -122,15 +122,14 @@ GPTData & GPTData::operator=(const GPTData & orig) { delete[] partitions; partitions = new GPTPart [numParts]; - if (partitions != NULL) { - for (i = 0; i < numParts; i++) { - partitions[i] = orig.partitions[i]; - } - } else { - numParts = 0; + if (partitions == NULL) { cerr << "Error! Could not allocate memory for partitions in GPTData::operator=()!\n" - << "Continuing, but strange problems may occur!\n"; - } // if/else + << "Terminating!\n"; + exit(1); + } // if + for (i = 0; i < numParts; i++) { + partitions[i] = orig.partitions[i]; + } return *this; } // GPTData::operator=() @@ -912,6 +911,10 @@ int GPTData::CheckTable(struct GPTHeader *header) { if (myDisk.Seek(header->partitionEntriesLBA)) { sizeOfParts = header->numParts * header->sizeOfPartitionEntries; storage = new uint8_t[sizeOfParts]; + if (storage == NULL) { + cerr << "Could not allocate memory in GPTData::CheckTable()! Terminating!\n"; + exit(1); + } // if if (myDisk.Read(storage, sizeOfParts) != (int) sizeOfParts) { cerr << "Warning! Error " << errno << " reading partition table for CRC check!\n"; } else { @@ -1223,6 +1226,10 @@ int GPTData::DestroyGPT(void) { allOK = 0; tableSize = numParts * mainHeader.sizeOfPartitionEntries; emptyTable = new uint8_t[tableSize]; + if (emptyTable == NULL) { + cerr << "Could not allocate memory in GPTData::CheckTable()! Terminating!\n"; + exit(1); + } // if memset(emptyTable, 0, tableSize); if (allOK) { sum = myDisk.Write(emptyTable, tableSize); @@ -1604,7 +1611,7 @@ int GPTData::SetGPTSize(uint32_t numEntries) { if (diskSize > 0) CheckGPTSize(); } else { // Bad memory allocation - cerr << "Error allocating memory for partition table!\n"; + cerr << "Error allocating memory for partition table! Size is unchanged!\n"; allOK = 0; } // if/else } // if/else @@ -2324,11 +2331,6 @@ int SizesOK(void) { cerr << "PartType is " << sizeof(GUIDData) << " bytes, should be 16 bytes; aborting!\n"; allOK = 0; } // if - // Determine endianness; warn user if running on big-endian (PowerPC, etc.) hardware -// if (IsLittleEndian() == 0) { -// cerr << "\aRunning on big-endian hardware. Big-endian support is new and poorly" -// " tested!\n"; -// } // if return (allOK); } // SizesOK() diff --git a/gpt.h b/gpt.h index a5d6c010d5ec8e04014f99a84586dc52f09d691e..c4c58811908f03c76428b9c73768269fa5e661d4 100644 --- a/gpt.h +++ b/gpt.h @@ -26,8 +26,6 @@ using namespace std; -class PartNotes; - /**************************************** * * * GPTData class and related structures * @@ -139,7 +137,6 @@ public: virtual int XFormDisklabel(uint32_t partNum); int XFormDisklabel(BSDData* disklabel); int OnePartToMBR(uint32_t gptPart, int mbrPart); // add one partition to MBR. Returns 1 if successful - int PartsToMBR(PartNotes * notes); // Adjust GPT structures WITHOUT user interaction... int SetGPTSize(uint32_t numEntries); diff --git a/gpttext.cc b/gpttext.cc index 55fbdbb21edb5425f202e68ad57f452fe7c4df5c..4db9e13ff159f4cb1709fffb6b3fafc59d520879 100644 --- a/gpttext.cc +++ b/gpttext.cc @@ -400,7 +400,11 @@ void GPTDataTextUI::MakeHybrid(void) { << "just hit the Enter key at the below prompt and your MBR partition table will\n" << "be untouched.\n\n\a"; - hybridMBR.SetDisk(&myDisk); + // Use a local MBR structure, copying from protectiveMBR to keep its + // boot loader code intact.... + hybridMBR = protectiveMBR; + hybridMBR.EmptyMBR(0); + // Now get the numbers of up to three partitions to add to the // hybrid MBR.... cout << "Type from one to three GPT partition numbers, separated by spaces, to be\n" @@ -424,9 +428,9 @@ void GPTDataTextUI::MakeHybrid(void) { hybridPart.SetInclusion(PRIMARY); cout << "Set the bootable flag? "; if (GetYN() == 'Y') - hybridPart.SetStatus(1); + hybridPart.SetStatus(0x80); else - hybridPart.SetStatus(0); + hybridPart.SetStatus(0x00); hybridPart.SetInclusion(PRIMARY); } else { cerr << "\nGPT partition #" << j + 1 << " does not exist; skipping.\n"; @@ -478,7 +482,7 @@ void GPTDataTextUI::MakeHybrid(void) { int GPTDataTextUI::XFormToMBR(void) { uint32_t i; - protectiveMBR.EmptyMBR(); + protectiveMBR.EmptyMBR(0); for (i = 0; i < numParts; i++) { if (partitions[i].IsUsed()) { protectiveMBR.MakePart(i, partitions[i].GetFirstLBA(), diff --git a/mbr.h b/mbr.h index 9377c12daae99f4c9c582b86374ba54874158d7b..dc31023353be7e4692c9ef245e7271a233abf0f2 100644 --- a/mbr.h +++ b/mbr.h @@ -15,8 +15,6 @@ using namespace std; -// class PartNotes; - /**************************************** * * * MBRData class and related structures * diff --git a/parttypes.cc b/parttypes.cc index 662a278edc3cfa4bc1ed36fc37a7ac2633c38365..8ccc4822ee4983507c4ad7b24acaec5373f8c71a 100644 --- a/parttypes.cc +++ b/parttypes.cc @@ -195,6 +195,8 @@ int PartType::AddType(uint16_t mbrType, const char * guidData, const char * name } // if/else lastType = tempType; } else { + cerr << "Unable to allocate memory in PartType::AddType()! Partition type list will\n"; + cerr << "be incomplete!\n"; allOK = 0; } // if/else return allOK; diff --git a/support.cc b/support.cc index 00c0e120d4558d62637f85b41541713ab875e277..24bcffbe5c91375b0f725c3f49d00144918decb3 100644 --- a/support.cc +++ b/support.cc @@ -109,14 +109,23 @@ uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, uint64_t sSize, // converts to sectors. For instance, with 512-byte sectors, "1K" converts // to 2. If value includes a "+", adds low and subtracts 1; if SIValue // inclues a "-", subtracts from high. If IeeeValue is empty, returns def. -// Returns final sector value. In case inValue works out to something that -// is not in the range of low to high (inclusive), returns high + 1; the -// calling function is responsible for checking the validity of this value. +// Returns final sector value. In case inValue is invalid, returns 0 (a +// sector value that's always is use on GPT and therefore invalid); and if +// inValue works out to something outside the range low-high, returns the +// computed value; the calling function is responsible for checking the +// validity of this value. +// NOTE: There's a difference in how GCC and VC++ treat oversized values +// (say, "999999999999999999999") read via the ">>" operator; GCC turns +// them into the maximum value for the type, whereas VC++ turns them into +// 0 values. The result is that IeeeToInt() returns UINT64_MAX when +// compiled with GCC (and so the value is rejected), whereas when VC++ +// is used, the default value is returned. uint64_t IeeeToInt(string inValue, uint64_t sSize, uint64_t low, uint64_t high, uint64_t def) { uint64_t response = def, bytesPerUnit = 1, mult = 1, divide = 1; size_t foundAt = 0; char suffix, plusFlag = ' '; string suffixes = "KMGTPE"; + int badInput = 0; // flag bad input; once this goes to 1, other values are irrelevant if (sSize == 0) { sSize = SECTOR_SIZE; @@ -135,45 +144,63 @@ uint64_t IeeeToInt(string inValue, uint64_t sSize, uint64_t low, uint64_t high, // Extract numeric response and, if present, suffix istringstream inString(inValue); - if (((inString.peek() >= '0') && (inString.peek() <= '9')) || (inString.peek() == -1)) { - inString >> response >> suffix; - suffix = toupper(suffix); - - // If no response, or if response == 0, use default (def) - if ((inValue.length() == 0) || (response == 0)) { - response = def; - suffix = ' '; - plusFlag = 0; - } // if - - // Find multiplication and division factors for the suffix - foundAt = suffixes.find(suffix); - if (foundAt != string::npos) { - bytesPerUnit = UINT64_C(1) << (10 * (foundAt + 1)); - mult = bytesPerUnit / sSize; - divide = sSize / bytesPerUnit; - } // if - - // Adjust response based on multiplier and plus flag, if present - if (mult > 1) + if (((inString.peek() < '0') || (inString.peek() > '9')) && (inString.peek() != -1)) + badInput = 1; + inString >> response >> suffix; + suffix = toupper(suffix); + + // If no response, or if response == 0, use default (def) + if ((inValue.length() == 0) || (response == 0)) { + response = def; + suffix = ' '; + plusFlag = ' '; + } // if + + // Find multiplication and division factors for the suffix + foundAt = suffixes.find(suffix); + if (foundAt != string::npos) { + bytesPerUnit = UINT64_C(1) << (10 * (foundAt + 1)); + mult = bytesPerUnit / sSize; + divide = sSize / bytesPerUnit; + } // if + + // Adjust response based on multiplier and plus flag, if present + if (mult > 1) { + if (response > (UINT64_MAX / mult)) + badInput = 1; + else response *= mult; - else if (divide > 1) + } else if (divide > 1) { response /= divide; - if (plusFlag == '+') { - // Recompute response based on low part of range (if default = high - // value, which should be the case when prompting for the end of a - // range) or the defaut value (if default != high, which should be - // the case for the first sector of a partition). - if (def == high) - response = response + low - UINT64_C(1); + } // if/elseif + + if (plusFlag == '+') { + // Recompute response based on low part of range (if default == high + // value, which should be the case when prompting for the end of a + // range) or the defaut value (if default != high, which should be + // the case for the first sector of a partition). + if (def == high) { + if (response > 0) + response--; + if (response > (UINT64_MAX - low)) + badInput = 1; + else + response = response + low; + } else { + if (response > (UINT64_MAX - def)) + badInput = 1; else response = response + def; - } else if (plusFlag == '-') { + } // if/else + } else if (plusFlag == '-') { + if (response > high) + badInput = 1; + else response = high - response; - } // if - } else { // user input is invalid - response = high + UINT64_C(1); - } // if/else + } // if + + if (badInput) + response = UINT64_C(0); return response; } // IeeeToInt() @@ -185,7 +212,7 @@ uint64_t IeeeToInt(string inValue, uint64_t sSize, uint64_t low, uint64_t high, string BytesToIeee(uint64_t size, uint32_t sectorSize) { float sizeInIeee; unsigned int index = 0; - string units, prefixes = " KMGTPE"; + string units, prefixes = " KMGTPEZ"; ostringstream theValue; sizeInIeee = size * (float) sectorSize; @@ -222,11 +249,14 @@ unsigned char StrToHex(const string & input, unsigned int position) { // Returns 1 if input can be interpreted as a hexadecimal number -- // all characters must be spaces, digits, or letters A-F (upper- or -// lower-case), with at least one valid hexadecimal digit; otherwise +// lower-case), with at least one valid hexadecimal digit; with the +// exception of the first two characters, which may be "0x"; otherwise // returns 0. -int IsHex(const string & input) { +int IsHex(string input) { int isHex = 1, foundHex = 0, i; + if (input.substr(0, 2) == "0x") + input.erase(0, 2); for (i = 0; i < (int) input.length(); i++) { if ((input[i] < '0') || (input[i] > '9')) { if ((input[i] < 'A') || (input[i] > 'F')) { @@ -269,5 +299,8 @@ void ReverseBytes(void* theValue, int numBytes) { for (i = 0; i < numBytes; i++) ((char*) theValue)[i] = tempValue[numBytes - i - 1]; delete[] tempValue; - } // if + } else { + cerr << "Could not allocate memory in ReverseBytes()! Terminating\n"; + exit(1); + } // if/else } // ReverseBytes() diff --git a/support.h b/support.h index c7dd7d1e5acbc8ff132616764c1ece83da3c5cfd..da09cc96780ce3b00a35c284fc9f263989a21b14 100644 --- a/support.h +++ b/support.h @@ -8,7 +8,7 @@ #ifndef __GPTSUPPORT #define __GPTSUPPORT -#define GPTFDISK_VERSION "0.7.1" +#define GPTFDISK_VERSION "0.7.1.1" #if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__) // Darwin (Mac OS) only: disk IOCTLs are different, and there is no lseek64 @@ -63,7 +63,7 @@ uint64_t GetSectorNum(uint64_t low, uint64_t high, uint64_t def, uint64_t sSize, uint64_t IeeeToInt(string IeeeValue, uint64_t sSize, uint64_t low, uint64_t high, uint64_t def = 0); string BytesToIeee(uint64_t size, uint32_t sectorSize = 1); unsigned char StrToHex(const string & input, unsigned int position); -int IsHex(const string & input); // Returns 1 if input can be hexadecimal number.... +int IsHex(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