summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrs5694 <srs5694@users.sourceforge.net>2011-03-15 00:34:10 -0400
committersrs5694 <srs5694@users.sourceforge.net>2011-03-15 00:34:10 -0400
commit9a46b042c57144c26a67781d335e6ba4128382d2 (patch)
treea7126d54e9cd8387251787c7f1da6cfb7b44b8f2
parentd3ba7a61f68ca97fc3828f0c2edd7cda7ca3dfda (diff)
downloadsgdisk-9a46b042c57144c26a67781d335e6ba4128382d2.tar.gz
Patches supplied by Florian Zumbiehl
-rw-r--r--Makefile397
-rw-r--r--basicmbr.cc4
-rw-r--r--bsd.cc3
-rw-r--r--diskio-unix.cc2
-rw-r--r--gdisk.cc16
-rw-r--r--gpt.cc81
-rw-r--r--gpt.h1
-rw-r--r--gptpart.cc15
-rw-r--r--gptpart.h1
-rw-r--r--gpttext.cc6
-rw-r--r--sgdisk.cc17
-rw-r--r--support.cc39
-rw-r--r--support.h2
13 files changed, 481 insertions, 103 deletions
diff --git a/Makefile b/Makefile
index f1146ef..07176d8 100644
--- a/Makefile
+++ b/Makefile
@@ -37,3 +37,400 @@ $(OBJS):
# 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
diff --git a/basicmbr.cc b/basicmbr.cc
index 764daaf..0af3a82 100644
--- a/basicmbr.cc
+++ b/basicmbr.cc
@@ -1604,7 +1604,7 @@ int BasicMBRData::DoMenu(const string& prompt) {
do {
cout << prompt;
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
switch (*line) {
case '\n':
break;
@@ -1655,7 +1655,7 @@ int BasicMBRData::DoMenu(const string& prompt) {
hexCode = 0;
while ((hexCode <= 0) || (hexCode > 255)) {
cout << "Enter an MBR hex code: ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
sscanf(line, "%x", &hexCode);
if (line[0] == '\n')
hexCode = 0x00;
diff --git a/bsd.cc b/bsd.cc
index c3ecadf..57fb912 100644
--- a/bsd.cc
+++ b/bsd.cc
@@ -37,8 +37,7 @@ BSDData::BSDData(void) {
} // default constructor
BSDData::~BSDData(void) {
- if (partitions != NULL)
- delete[] partitions;
+ delete[] partitions;
} // destructor
// Read BSD disklabel data from the specified device filename. This function
diff --git a/diskio-unix.cc b/diskio-unix.cc
index 238e529..5494dd5 100644
--- a/diskio-unix.cc
+++ b/diskio-unix.cc
@@ -409,7 +409,7 @@ uint64_t DiskIO::DiskSize(int *err) {
// fstat() gives us....
if ((sectors == 0) || (*err == -1)) {
if (fstat64(fd, &st) == 0) {
- bytes = (off_t) st.st_size;
+ bytes = st.st_size;
if ((bytes % UINT64_C(512)) != 0)
cerr << "Warning: File size is not a multiple of 512 bytes!"
<< " Misbehavior is likely!\n\a";
diff --git a/gdisk.cc b/gdisk.cc
index 78d65b7..f824777 100644
--- a/gdisk.cc
+++ b/gdisk.cc
@@ -84,13 +84,13 @@ void MainMenu(string filename, GPTDataTextUI* theGPT) {
do {
cout << "\nCommand (? for help): ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
switch (*line) {
case '\n':
break;
case 'b': case 'B':
cout << "Enter backup filename to save: ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
sscanf(line, "%s", buFile);
theGPT->SaveGPTBackup(buFile);
break;
@@ -183,7 +183,7 @@ void RecoveryMenu(string filename, GPTDataTextUI* theGPT) {
do {
cout << "\nRecovery/transformation command (? for help): ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
switch (*line) {
case '\n':
break;
@@ -239,7 +239,7 @@ void RecoveryMenu(string filename, GPTDataTextUI* theGPT) {
break;
case 'l': case 'L':
cout << "Enter backup filename to load: ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
sscanf(line, "%s", buFile);
theGPT->LoadGPTBackup(buFile);
break;
@@ -313,7 +313,7 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
do {
cout << "\nExpert command (? for help): ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
switch (*line) {
case '\n':
break;
@@ -327,7 +327,7 @@ 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, 255);
+ ReadCString(guidStr, sizeof(guidStr));
if ((strlen(guidStr) >= 33) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
theGPT->SetPartitionGUID(pn, (GUIDData) guidStr);
cout << "New GUID is " << theGPT->operator[](pn).GetUniqueGUID() << "\n";
@@ -349,7 +349,7 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
break;
case 'g': case 'G':
cout << "Enter the disk's unique GUID ('R' to randomize): ";
- ReadCString(guidStr, 255);
+ ReadCString(guidStr, sizeof(guidStr));
if ((strlen(guidStr) >= 33) || (guidStr[0] == 'R') || (guidStr[0] == 'r')) {
theGPT->SetDiskGUID((GUIDData) guidStr);
cout << "The new disk GUID is " << theGPT->GetDiskGUID() << "\n";
@@ -402,7 +402,7 @@ void ExpertsMenu(string filename, GPTDataTextUI* theGPT) {
i = strlen(device);
if (i && device[i - 1] == '\n')
device[i - 1] = '\0';
- if (*device && strlen(device) > 0) {
+ if (*device) {
secondDevice = *theGPT;
secondDevice.SetDisk(device);
secondDevice.SaveGPTData(0);
diff --git a/gpt.cc b/gpt.cc
index 652fab4..4f5683a 100644
--- a/gpt.cc
+++ b/gpt.cc
@@ -19,6 +19,7 @@
#include <sys/stat.h>
#include <errno.h>
#include <iostream>
+#include <algorithm>
#include "crc32.h"
#include "gpt.h"
#include "bsd.h"
@@ -1683,59 +1684,12 @@ uint32_t GPTData::CreatePartition(uint32_t partNum, uint64_t startSector, uint64
} // GPTData::CreatePartition(partNum, startSector, endSector)
// Sort the GPT entries, eliminating gaps and making for a logical
-// ordering. Relies on QuickSortGPT() for the bulk of the work
+// ordering.
void GPTData::SortGPT(void) {
- uint32_t i, numFound, firstPart, lastPart;
-
- // First, find the last partition with data, so as not to
- // spend needless time sorting empty entries....
- numFound = GetPartRange(&firstPart, &lastPart);
-
- // Now swap empties with the last partitions, to simplify the logic
- // in the Quicksort function....
- i = 0;
- while (i < lastPart) {
- if (partitions[i].GetFirstLBA() == 0) {
- SwapPartitions(i, lastPart);
- do {
- lastPart--;
- } while ((lastPart > 0) && (partitions[lastPart].GetFirstLBA() == 0));
- } // if
- i++;
- } // while
-
- // If there are more empties than partitions in the range from 0 to lastPart,
- // the above leaves lastPart set too high, so we've got to adjust it to
- // prevent empties from migrating to the top of the list....
- GetPartRange(&firstPart, &lastPart);
-
- // Now call the recursive quick sort routine to do the real work....
- QuickSortGPT(0, lastPart);
+ if (numParts > 0)
+ sort(partitions, partitions + numParts - 1);
} // GPTData::SortGPT()
-// Recursive quick sort algorithm for GPT partitions. Note that if there
-// are any empties in the specified range, they'll be sorted to the
-// start, resulting in a sorted set of partitions that begins with
-// partition 2, 3, or higher.
-void GPTData::QuickSortGPT(int start, int finish) {
- uint64_t starterValue; // starting location of median partition
- int left, right;
-
- left = start;
- right = finish;
- starterValue = partitions[(start + finish) / 2].GetFirstLBA();
- do {
- while (partitions[left].GetFirstLBA() < starterValue)
- left++;
- while (partitions[right].GetFirstLBA() > starterValue)
- right--;
- if (left <= right)
- SwapPartitions(left++, right--);
- } while (left <= right);
- if (start < right) QuickSortGPT(start, right);
- if (finish > left) QuickSortGPT(left, finish);
-} // GPTData::QuickSortGPT()
-
// Swap the contents of two partitions.
// Returns 1 if successful, 0 if either partition is out of range
// (that is, not a legal number; either or both can be empty).
@@ -1765,8 +1719,7 @@ int GPTData::ClearGPTData(void) {
int goOn = 1, i;
// Set up the partition table....
- if (partitions != NULL)
- delete[] partitions;
+ delete[] partitions;
partitions = NULL;
SetGPTSize(NUM_GPT_ENTRIES);
@@ -1963,16 +1916,14 @@ int GPTData::GetPartRange(uint32_t *low, uint32_t *high) {
*low = numParts + 1; // code for "not found"
*high = 0;
- if (numParts > 0) { // only try if partition table exists...
- for (i = 0; i < numParts; i++) {
- if (partitions[i].GetFirstLBA() != UINT64_C(0)) { // it exists
- *high = i; // since we're counting up, set the high value
- // Set the low value only if it's not yet found...
- if (*low == (numParts + 1)) *low = i;
- numFound++;
- } // if
- } // for
- } // if
+ for (i = 0; i < numParts; i++) {
+ if (partitions[i].GetFirstLBA() != UINT64_C(0)) { // it exists
+ *high = i; // since we're counting up, set the high value
+ // Set the low value only if it's not yet found...
+ if (*low == (numParts + 1)) *low = i;
+ numFound++;
+ } // if
+ } // for
// Above will leave *low pointing to its "not found" value if no partitions
// are defined, so reset to 0 if this is the case....
@@ -1987,7 +1938,7 @@ int GPTData::FindFirstFreePart(void) {
int i = 0;
if (partitions != NULL) {
- while ((partitions[i].IsUsed()) && (i < (int) numParts))
+ while ((i < (int) numParts) && (partitions[i].IsUsed()))
i++;
if (i >= (int) numParts)
i = -1;
@@ -2281,6 +2232,10 @@ const GPTPart & GPTData::operator[](uint32_t partNum) const {
if (partNum >= numParts) {
cerr << "Partition number out of range: " << partNum << "\n";
partNum = 0;
+ if ((numParts == 0) || (partitions == NULL)) {
+ cerr << "No partitions defined; fatal error!\n";
+ exit(1);
+ } // if
} // if
return partitions[partNum];
} // operator[]
diff --git a/gpt.h b/gpt.h
index 69c06d3..e452663 100644
--- a/gpt.h
+++ b/gpt.h
@@ -95,6 +95,7 @@ public:
GPTData(string deviceFilename);
virtual ~GPTData(void);
GPTData & operator=(const GPTData & orig);
+// bool operator<(const GPTData &other) const;
// Verify (or update) data integrity
int Verify(void);
diff --git a/gptpart.cc b/gptpart.cc
index 54aa618..062206a 100644
--- a/gptpart.cc
+++ b/gptpart.cc
@@ -131,6 +131,19 @@ GPTPart & GPTPart::operator=(const GPTPart & orig) {
return *this;
} // assignment operator
+// Compare the values, and return a bool result.
+// Because this is intended for sorting and a firstLBA value of 0 denotes
+// a partition that's not in use and so that should be sorted upwards,
+// we return the opposite of the usual arithmetic result when either
+// firstLBA value is 0.
+bool GPTPart::operator<(const GPTPart &other) const {
+
+ if (firstLBA && other.firstLBA)
+ return (firstLBA < other.firstLBA);
+ else
+ return (other.firstLBA < firstLBA);
+} // GPTPart::operator<()
+
// Display summary information; does nothing if the partition is empty.
void GPTPart::ShowSummary(int partNum, uint32_t blockSize) {
string sizeInSI;
@@ -227,7 +240,7 @@ void GPTPart::ChangeType(void) {
cout << "Current type is '" << GetTypeName() << "'\n";
do {
cout << "Hex code or GUID (L to show codes, Enter = 0700): ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
if ((line[0] == 'L') || (line[0] == 'l')) {
partitionType.ShowAllTypes();
} else {
diff --git a/gptpart.h b/gptpart.h
index 104a818..09c3136 100644
--- a/gptpart.h
+++ b/gptpart.h
@@ -78,6 +78,7 @@ class GPTPart {
// Additional functions
GPTPart & operator=(const GPTPart & orig);
+ bool operator<(const GPTPart &other) const;
void ShowSummary(int partNum, uint32_t blockSize); // display summary information (1-line)
void ShowDetails(uint32_t blockSize); // display detailed information (multi-line)
void BlankPartition(void); // empty partition of data
diff --git a/gpttext.cc b/gpttext.cc
index e6ca8ce..aa209cb 100644
--- a/gpttext.cc
+++ b/gpttext.cc
@@ -371,7 +371,7 @@ 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, 255);
+ ReadCString(line, sizeof(line));
numPartsToCvt = sscanf(line, "%d %d %d", &partNums[0], &partNums[1], &partNums[2]);
if (numPartsToCvt > 0) {
@@ -426,7 +426,7 @@ void GPTDataTextUI::MakeHybrid(void) {
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, 255);
+ ReadCString(line, sizeof(line));
sscanf(line, "%x", &hexCode);
if (line[0] == '\n')
hexCode = 0x00;
@@ -480,7 +480,7 @@ int GetMBRTypeCode(int defType) {
cout << "Enter an MBR hex code (default " << hex;
cout.width(2);
cout << defType << "): " << dec;
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
if (line[0] == '\n')
typeCode = defType;
else
diff --git a/sgdisk.cc b/sgdisk.cc
index 11df6ed..1f3e792 100644
--- a/sgdisk.cc
+++ b/sgdisk.cc
@@ -13,6 +13,7 @@
#include <popt.h>
#include <errno.h>
#include <stdint.h>
+#include <string.h>
#include <string>
#include <iostream>
#include <sstream>
@@ -438,6 +439,7 @@ int BuildMBR(GPTData & theGPT, char* argument, int isHybrid) {
if ((&theGPT != NULL) && (argument != NULL)) {
numParts = CountColons(argument) + 1;
+ cout << "numParts = " << numParts << "\n";
if (numParts <= (4 - isHybrid)) {
newMBR.SetDisk(theGPT.GetDisk());
for (i = 0; i < numParts; i++) {
@@ -464,15 +466,14 @@ int BuildMBR(GPTData & theGPT, char* argument, int isHybrid) {
return allOK;
} // BuildMBR()
-// Returns the number of colons in argument string
+// Returns the number of colons in argument string, ignoring the
+// first character (thus, a leading colon is ignored, as GetString()
+// does).
int CountColons(char* argument) {
- int num = 0, i = 0;
+ int num = 0;
+
+ while ((argument[0] != '\0') && (argument = strchr(&argument[1], ':')))
+ num++;
- if (argument != NULL) {
- while (argument[i] != '\0') {
- if (argument[i++] == ':')
- num++;
- } // while
- } // if
return num;
} // CountColons()
diff --git a/support.cc b/support.cc
index f88f021..200cbca 100644
--- a/support.cc
+++ b/support.cc
@@ -31,12 +31,11 @@
using namespace std;
-char* ReadCString(char *inStr, int numchars) {
- if (!fgets(inStr, 255, stdin)) {
+void ReadCString(char *inStr, int numchars) {
+ if (!fgets(inStr, numchars, stdin)) {
cerr << "Critical error! Failed fgets() in ReadCString()\n";
exit(1);
} // if
- return inStr;
} // ReadCString()
// Get a numeric value from the user, between low and high (inclusive).
@@ -74,7 +73,7 @@ char GetYN(void) {
do {
cout << "(Y/N): ";
- ReadCString(line, 255);
+ ReadCString(line, sizeof(line));
sscanf(line, "%c", &response);
if (response == 'y')
response = 'Y';
@@ -321,16 +320,28 @@ uint64_t GetInt(const string & argument, int itemNum) {
} // 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 = -1, endPos = -1;
-
- while (itemNum-- > 0) {
- startPos = endPos + 1;
+ 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);
- }
- if (endPos == string::npos)
- endPos = argument.length();
- endPos--;
-
- return argument.substr(startPos, endPos - startPos + 1);
+ 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() \ No newline at end of file
diff --git a/support.h b/support.h
index 2c67cfb..73363b7 100644
--- a/support.h
+++ b/support.h
@@ -56,7 +56,7 @@
using namespace std;
-char* ReadCString(char *inStr, int numchars);
+void ReadCString(char *inStr, int numchars);
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);