Final 0.6.2 release; misc. bug fixes & Windows version
diff --git a/Makefile b/Makefile
index 807d10f..83381ed 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,13 @@
 CC=gcc
 CXX=g++
 CFLAGS=-O2 -D_FILE_OFFSET_BITS=64 -g
-CXXFLAGS=-O2 -Wuninitialized -Wreturn-type -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
+CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
 LIB_NAMES=crc32 support gptpart mbr gpt bsd parttypes attributes diskio diskio-unix
 LIB_SRCS=$(NAMES:=.cc)
 LIB_OBJS=$(LIB_NAMES:=.o)
 LIB_HEADERS=$(LIB_NAMES:=.h)
 DEPEND= makedepend $(CFLAGS)
 
-#$(APPNAME):	$(MBR2GPT_OBJS)
-#	$(CC) $(MBR2GPT_OBJS) -o $@
-
 all:	gdisk sgdisk
 
 gdisk:	$(LIB_OBJS) gdisk.o
diff --git a/Makefile.mingw b/Makefile.mingw
index 664fda4..1a59f2d 100644
--- a/Makefile.mingw
+++ b/Makefile.mingw
@@ -2,16 +2,13 @@
 CXX=/usr/bin/i586-mingw32msvc-g++
 STRIP=/usr/bin/i586-mingw32msvc-strip
 CFLAGS=-O2 -D_FILE_OFFSET_BITS=64 -g
-CXXFLAGS=-O2 -Wuninitialized -Wreturn-type -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
+CXXFLAGS=-O2 -Wall -D_FILE_OFFSET_BITS=64 -I /usr/local/include -I/opt/local/include -g
 LIB_NAMES=gptpart bsd parttypes attributes crc32 mbr gpt support diskio diskio-windows
 LIB_SRCS=$(NAMES:=.cc)
 LIB_OBJS=$(LIB_NAMES:=.o)
 LIB_HEADERS=$(LIB_NAMES:=.h)
 DEPEND= makedepend $(CFLAGS)
 
-#$(APPNAME):	$(MBR2GPT_OBJS)
-#	$(CC) $(MBR2GPT_OBJS) -o $@
-
 all:	gdisk
 
 gdisk:	$(LIB_OBJS) gdisk.o
diff --git a/bsd.cc b/bsd.cc
index 88c25d0..75dca60 100644
--- a/bsd.cc
+++ b/bsd.cc
@@ -65,7 +65,7 @@
 // file, starting with the specified sector number.
 int BSDData::ReadBSDData(DiskIO *theDisk, uint64_t startSector, uint64_t endSector) {
    uint8_t buffer[4096]; // I/O buffer
-   int i, err, foundSig = 0, bigEnd = 0, allOK = 1;
+   int i, foundSig = 0, bigEnd = 0, allOK = 1;
    int relative = 0; // assume absolute partition sector numbering
    uint32_t realSig;
    uint32_t* temp32;
@@ -73,7 +73,6 @@
    BSDRecord* tempRecords;
    int offset[NUM_OFFSETS] = { LABEL_OFFSET1, LABEL_OFFSET2 };
 
-//   myDisk = theDisk;
    labelFirstLBA = startSector;
    labelLastLBA = endSector;
    offset[1] = theDisk->GetBlockSize();
@@ -263,7 +262,6 @@
 GPTPart BSDData::AsGPT(int i) {
    GPTPart guid;                  // dump data in here, then return it
    uint64_t sectorOne, sectorEnd; // first & last sectors of partition
-   char tempStr[NAME_SIZE];       // temporary string for holding GPT name
    int passItOn = 1;              // Set to 0 if partition is empty or invalid
 
    guid.BlankPartition();
diff --git a/diskio-unix.cc b/diskio-unix.cc
index a72c7ce..8fbc7b5 100644
--- a/diskio-unix.cc
+++ b/diskio-unix.cc
@@ -208,7 +208,7 @@
 // size with the number of bytes read.
 // Returns the number of bytes read into buffer.
 int DiskIO::Read(void* buffer, int numBytes) {
-   int blockSize = 512, i, numBlocks, retval = 0;
+   int blockSize = 512, numBlocks, retval = 0;
    char* tempSpace;
 
    // If disk isn't open, try to open it....
diff --git a/diskio-windows.cc b/diskio-windows.cc
index a060103..e3547c6 100644
--- a/diskio-windows.cc
+++ b/diskio-windows.cc
@@ -36,7 +36,7 @@
 
 // Returns the official Windows name for a shortened version of same.
 void DiskIO::MakeRealName(void) {
-   int colonPos;
+   size_t colonPos;
 
    colonPos = userFilename.find(':', 0);
    if ((colonPos != string::npos) && (colonPos <= 3)) {
@@ -183,8 +183,6 @@
 int DiskIO::Seek(uint64_t sector) {
    int retval = 1;
    LARGE_INTEGER seekTo;
-   uint32_t lowBits, highBits;
-   uint64_t bytePos;
 
    // If disk isn't open, try to open it....
    if (!isOpen) {
diff --git a/diskio.cc b/diskio.cc
index 0f58ab5..17a44a4 100644
--- a/diskio.cc
+++ b/diskio.cc
@@ -152,7 +152,6 @@
 
 // The same as FindAlignment(int), but opens and closes a device by filename
 int DiskIO::FindAlignment(const string & filename) {
-   int fd;
    int retval = 1;
 
    if (!isOpen)
diff --git a/gpt.cc b/gpt.cc
index 3bd56c5..9bb6763 100644
--- a/gpt.cc
+++ b/gpt.cc
@@ -96,9 +96,10 @@
 // do *NOT* recover from these problems. Returns the total number of
 // problems identified.
 int GPTData::Verify(void) {
-   int problems = 0, numSegments, i;
-   uint64_t totalFree, largestSegment, firstSector;
-   char tempStr[255], siTotal[255], siLargest[255];
+   int problems = 0;
+   uint32_t i, numSegments;
+   uint64_t totalFree, largestSegment;
+   char siTotal[255], siLargest[255];
 
    // First, check for CRC errors in the GPT data....
    if (!mainCrcOk) {
@@ -458,7 +459,8 @@
 // Search for hybrid MBR entries that have no corresponding GPT partition.
 // Returns number of such mismatches found
 int GPTData::FindHybridMismatches(void) {
-   int i, j, found, numFound = 0;
+   int i, found, numFound = 0;
+   uint32_t j;
    uint64_t mbrFirst, mbrLast;
 
    for (i = 0; i < 4; i++) {
@@ -493,7 +495,8 @@
 // Find overlapping partitions and warn user about them. Returns number of
 // overlapping partitions.
 int GPTData::FindOverlaps(void) {
-   int i, j, problems = 0;
+   int problems = 0;
+   uint32_t i, j;
 
    for (i = 1; i < mainHeader.numParts; i++) {
       for (j = 0; j < i; j++) {
@@ -551,8 +554,8 @@
 
 // Read GPT data from a disk.
 int GPTData::LoadPartitions(const string & deviceFilename) {
-   int err;
-   int allOK = 1, i;
+   int err, allOK = 1;
+   uint32_t i;
    uint64_t firstBlock, lastBlock;
    BSDData bsdDisklabel;
    MBRValidity mbrState;
@@ -568,11 +571,9 @@
            << "program.\n";
 #endif
       cout << "\n";
-//      justLooking = 1;
    } // if
    myDisk.Close();
 
-//   if ((fd = open(deviceFilename, O_RDONLY)) != -1) {
    if (myDisk.OpenForRead(deviceFilename)) {
       // store disk information....
       diskSize = myDisk.DiskSize(&err);
@@ -737,7 +738,7 @@
       if ((myDisk.Seek(seekTo)) && (secondCrcOk)) {
          sizeOfParts = secondHeader.numParts * secondHeader.sizeOfPartitionEntries;
          storage = (uint8_t*) malloc(sizeOfParts);
-         if (myDisk.Read(storage, sizeOfParts) != sizeOfParts) {
+         if (myDisk.Read(storage, sizeOfParts) != (int) sizeOfParts) {
             cerr << "Warning! Error " << errno << " reading backup partition table!\n";
          } // if
          newCRC = chksum_crc32((unsigned char*) storage,  sizeOfParts);
@@ -770,7 +771,7 @@
 // sensible!
 // Returns 1 on success, 0 on failure. CRC errors do NOT count as failure.
 int GPTData::LoadMainTable(void) {
-   int fd, retval = 1;
+   int retval = 1;
    uint32_t newCRC, sizeOfParts;
 
    if (myDisk.OpenForRead(device)) {
@@ -782,7 +783,7 @@
       if (!myDisk.Seek(mainHeader.partitionEntriesLBA))
          retval = 0;
       sizeOfParts = mainHeader.numParts * mainHeader.sizeOfPartitionEntries;
-      if (myDisk.Read(partitions, sizeOfParts) != sizeOfParts) {
+      if (myDisk.Read(partitions, sizeOfParts) != (int) sizeOfParts) {
          cerr << "Warning! Error " << errno << " when loading the main partition table!\n";
          retval = 0;
       } // if
@@ -809,7 +810,7 @@
       if (retval == 1) {
          SetGPTSize(secondHeader.numParts);
          sizeOfParts = secondHeader.numParts * secondHeader.sizeOfPartitionEntries;
-         if (myDisk.Read(partitions, sizeOfParts) != sizeOfParts) {
+         if (myDisk.Read(partitions, sizeOfParts) != (int) sizeOfParts) {
             cerr << "Warning! Read error " << errno << "! Misbehavior now likely!\n";
             retval = 0;
          } // if
@@ -836,7 +837,7 @@
 // write, 0 if there was a problem.
 int GPTData::SaveGPTData(int quiet) {
    int allOK = 1;
-   char answer, line[256];
+   char answer;
    uint64_t secondTable;
    uint32_t numParts;
    uint64_t offset;
@@ -1128,7 +1129,7 @@
          // Load main partition table, and record whether its CRC
          // matches the stored value
          sizeOfParts = numParts * sizeOfEntries;
-         if (backupFile.Read(partitions, sizeOfParts) != sizeOfParts) {
+         if (backupFile.Read(partitions, sizeOfParts) != (int) sizeOfParts) {
             cerr << "Warning! Read error " << errno << "; strange behavior now likely!\n";
          } // if
 
@@ -1184,8 +1185,7 @@
 
 // Display the basic GPT data
 void GPTData::DisplayGPTData(void) {
-   int i;
-//   char tempStr[255];
+   uint32_t i;
    uint64_t temp, totalFree;
 
    cout << "Disk " << device << ": " << diskSize << " sectors, "
@@ -1274,8 +1274,9 @@
 // Interactively create a partition
 void GPTData::CreatePartition(void) {
    uint64_t firstBlock, firstInLargest, lastBlock, sector;
+   uint32_t firstFreePart = 0;
    char prompt[255];
-   int partNum, firstFreePart = 0;
+   int partNum;
 
    // Find first free partition...
    while (partitions[firstFreePart].GetFirstLBA() != 0) {
@@ -1372,7 +1373,7 @@
 // If prompt == -1, don't ask user about proceeding and DO wipe out
 // MBR.
 int GPTData::DestroyGPT(int prompt) {
-   int fd, i, sum, tableSize;
+   int i, sum, tableSize;
    uint8_t blankSector[512], goOn = 'Y', blank = 'N';
    uint8_t* emptyTable;
 
@@ -1590,7 +1591,7 @@
    BSDData disklabel;
 
    if (GetPartRange(&low, &high) != 0) {
-      if ((i < low) || (i > high))
+      if ((i < (int) low) || (i > (int) high))
          partNum = GetPartNum();
       else
          partNum = (uint32_t) i;
@@ -1608,7 +1609,7 @@
 
       // If all is OK, read the disklabel and convert it.
       if (goOn) {
-         goOn = disklabel.ReadBSDData(device, partitions[partNum].GetFirstLBA(),
+         goOn = disklabel.ReadBSDData(&myDisk, partitions[partNum].GetFirstLBA(),
                                       partitions[partNum].GetLastLBA());
          if ((goOn) && (disklabel.IsDisklabel())) {
             numDone = XFormDisklabel(&disklabel, startPart);
@@ -1630,7 +1631,7 @@
 } // GPTData::XFormDisklable(int i)
 
 // Transform the partitions on an already-loaded BSD disklabel...
-int GPTData::XFormDisklabel(BSDData* disklabel, int startPart) {
+int GPTData::XFormDisklabel(BSDData* disklabel, uint32_t startPart) {
    int i, numDone = 0;
 
    if ((disklabel->IsDisklabel()) && (startPart >= 0) &&
@@ -1710,8 +1711,8 @@
 int GPTData::XFormToMBR(void) {
    char line[255];
    char* junk;
-   int i, j, numParts, numConverted = 0;
-   uint32_t partNums[4];
+   int j, numParts, numConverted = 0;
+   uint32_t i, partNums[4];
 
    // Get the numbers of up to four partitions to add to the
    // hybrid MBR....
@@ -1737,7 +1738,7 @@
       } // while
    } // if/else
 
-   for (i = 0; i < numParts; i++) {
+   for (i = 0; i < (uint32_t) numParts; i++) {
       j = partNums[i] - 1;
       cout << "\nCreating entry for partition #" << j + 1 << "\n";
       numConverted += OnePartToMBR(j, i);
@@ -1937,7 +1938,7 @@
 // with another of the same name but different parameters; that one prompts
 // the user for data. This one returns 1 if the operation was successful, 0
 // if a problem was discovered.
-int GPTData::CreatePartition(uint32_t partNum, uint64_t startSector, uint64_t endSector) {
+uint32_t GPTData::CreatePartition(uint32_t partNum, uint64_t startSector, uint64_t endSector) {
    int retval = 1; // assume there'll be no problems
 
    if (IsFreePartNum(partNum)) {
@@ -2195,7 +2196,7 @@
 
 // Returns the number of defined partitions.
 uint32_t GPTData::CountParts(void) {
-   int i, counted = 0;
+   uint32_t i, counted = 0;
 
    for (i = 0; i < mainHeader.numParts; i++) {
       if (partitions[i].GetFirstLBA() > 0)
@@ -2312,13 +2313,13 @@
 
 // Finds the total number of free blocks, the number of segments in which
 // they reside, and the size of the largest of those segments
-uint64_t GPTData::FindFreeBlocks(int *numSegments, uint64_t *largestSegment) {
+uint64_t GPTData::FindFreeBlocks(uint32_t *numSegments, uint64_t *largestSegment) {
    uint64_t start = UINT64_C(0); // starting point for each search
    uint64_t totalFound = UINT64_C(0); // running total
    uint64_t firstBlock; // first block in a segment
    uint64_t lastBlock; // last block in a segment
    uint64_t segmentSize; // size of segment in blocks
-   int num = 0;
+   uint32_t num = 0;
 
    *largestSegment = UINT64_C(0);
    do {
diff --git a/gpt.h b/gpt.h
index e1780a1..ca04ec4 100644
--- a/gpt.h
+++ b/gpt.h
@@ -16,7 +16,7 @@
 #ifndef __GPTSTRUCTS
 #define __GPTSTRUCTS
 
-#define GPTFDISK_VERSION "0.6.2-pre2"
+#define GPTFDISK_VERSION "0.6.2"
 
 using namespace std;
 
@@ -124,7 +124,7 @@
    WhichToUse UseWhichPartitions(void);
    int XFormPartitions(void);
    int XFormDisklabel(int OnGptPart = -1);
-   int XFormDisklabel(BSDData* disklabel, int startPart);
+   int XFormDisklabel(BSDData* disklabel, uint32_t startPart);
    int OnePartToMBR(uint32_t gptPart, int mbrPart); // add one partition to MBR. Returns 1 if successful
    int XFormToMBR(void); // convert GPT to MBR, wiping GPT afterwards. Returns 1 if successful
    void MakeHybrid(void);
@@ -133,7 +133,7 @@
    int SetGPTSize(uint32_t numEntries);
    void BlankPartitions(void);
    int DeletePartition(uint32_t partNum);
-   int CreatePartition(uint32_t partNum, uint64_t startSector, uint64_t endSector);
+   uint32_t CreatePartition(uint32_t partNum, uint64_t startSector, uint64_t endSector);
    void SortGPT(void);
    int ClearGPTData(void);
    void MoveSecondHeaderToEnd();
@@ -158,7 +158,7 @@
    uint64_t FindFirstInLargest(void);
    uint64_t FindLastAvailable(uint64_t start);
    uint64_t FindLastInFree(uint64_t start);
-   uint64_t FindFreeBlocks(int *numSegments, uint64_t *largestSegment);
+   uint64_t FindFreeBlocks(uint32_t *numSegments, uint64_t *largestSegment);
    int IsFree(uint64_t sector);
    int IsFreePartNum(uint32_t partNum);
 
diff --git a/gptpart.cc b/gptpart.cc
index 29b2df9..40c426c 100644
--- a/gptpart.cc
+++ b/gptpart.cc
@@ -72,8 +72,6 @@
 // name *IF* the current name is the generic one for the current partition
 // type.
 void GPTPart::SetType(struct GUIDData t) {
-   int nameSame = 1, currentLength, i;
-
    if (GetName() == typeHelper.GUIDToName(partitionType)) {
       SetName(typeHelper.GUIDToName(t));
    } // if
@@ -157,7 +155,7 @@
       cout.width(14);
       cout << lastLBA  << "   ";
       cout << BytesToSI(blockSize * (lastLBA - firstLBA + 1)) << "   ";
-      for (i = 0; i < 9 - sizeInSI.length(); i++) cout << " ";
+      for (i = 0; i < 9 - (int) sizeInSI.length(); i++) cout << " ";
       cout.fill('0');
       cout.width(4);
       cout.setf(ios::uppercase);
diff --git a/mbr.cc b/mbr.cc
index b1daa3c..214fcb0 100644
--- a/mbr.cc
+++ b/mbr.cc
@@ -72,7 +72,7 @@
 // Read data from MBR. Returns 1 if read was successful (even if the
 // data isn't a valid MBR), 0 if the read failed.
 int MBRData::ReadMBRData(const string & deviceFilename) {
-   int fd, allOK = 1;
+   int allOK = 1;
 
    if (myDisk == NULL)
       myDisk = new DiskIO;
@@ -348,7 +348,6 @@
 // Show the MBR data to the user....
 void MBRData::DisplayMBRData(void) {
    int i;
-   char tempStr[255];
    char bootCode;
 
    cout << "MBR disk identifier: 0x";
@@ -378,7 +377,7 @@
       cout.fill(' ');
    } // for
    cout << "\nDisk size is " << diskSize << " sectors ("
-        << BytesToSI(diskSize * (uint64_t) blockSize) << "\n";
+        << BytesToSI(diskSize * (uint64_t) blockSize) << ")\n";
 } // MBRData::DisplayMBRData()
 
 // Displays the state, as a word, on stdout. Used for debugging & to
@@ -814,7 +813,6 @@
    GPTPart newPart;
    uint8_t origType;
    uint64_t firstSector, lastSector;
-   char tempStr[NAME_SIZE];
 
    newPart.BlankPartition();
    origPart = GetPartition(i);
diff --git a/parttypes.cc b/parttypes.cc
index 2593caa..85ce6b0 100644
--- a/parttypes.cc
+++ b/parttypes.cc
@@ -204,9 +204,9 @@
 } // destructor
 
 // Add a single type to the linked list of types. Returns 1 if operation
-// succeeds, 0 otherwise
+// succeeds, 0 otherwise.
 int PartTypes::AddType(uint16_t mbrType, uint64_t guidData1, uint64_t guidData2,
-                       const char* n, int toDisplay) {
+                       const char * n, int toDisplay) {
    AType* tempType;
    int allOK = 1;
 
@@ -215,7 +215,7 @@
       tempType->MBRType = mbrType;
       tempType->GUIDType.data1 = guidData1;
       tempType->GUIDType.data2 = guidData2;
-      strncpy(tempType->name, n, PNAME_SIZE);
+      tempType->name = n;
       tempType->display = toDisplay;
       tempType->next = NULL;
       if (allTypes == NULL) { // first entry
@@ -236,7 +236,7 @@
 // in an ugly way.
 void PartTypes::ShowTypes(void) {
    int colCount = 1; // column count
-   int i;
+   size_t i;
    AType* thisType = allTypes;
 
    cout.unsetf(ios::uppercase);
@@ -245,10 +245,12 @@
          cout.fill('0');
          cout.width(4);
          cout << hex << thisType->MBRType << " ";
-         cout << ((string) thisType->name).substr(0, 19) << "  ";
-         for (i = 0; i < (19 - ((string) thisType->name).substr(0, 19).length()); i ++) cout << " ";
+         cout << thisType->name.substr(0, 20);
+         for (i = 0; i < (20 - (thisType->name.substr(0, 20).length())); i++) cout << " ";
          if ((colCount % 3) == 0)
             cout << "\n";
+         else
+            cout << "  ";
          colCount++;
       } // if
       thisType = thisType->next;
@@ -280,7 +282,6 @@
    while ((theItem != NULL) && (!found)) {
       if ((theItem->GUIDType.data1 == typeCode.data1) &&
           (theItem->GUIDType.data2 == typeCode.data2)) { // found it!
-//         strcpy(typeName, theItem->name);
          typeName = theItem->name;
 	 found = 1;
       } else {
@@ -289,7 +290,6 @@
    } // while
    if (!found) {
       typeName = "Unknown";
-//      strcpy(typeName, (char*) "Unknown");
    } // if (!found)
    return typeName;
 } // PartTypes::GUIDToName()
diff --git a/parttypes.h b/parttypes.h
index 7e6d892..1534a52 100644
--- a/parttypes.h
+++ b/parttypes.h
@@ -10,9 +10,6 @@
 #ifndef __PARTITION_TYPES
 #define __PARTITION_TYPES
 
-// Set the size of the name string
-#define PNAME_SIZE 80
-
 using namespace std;
 
 // A partition type
@@ -22,7 +19,7 @@
    // codes required by GPT
    uint16_t MBRType;
    struct GUIDData GUIDType;
-   char name[PNAME_SIZE];
+   string name;
    int display; // 1 to show to users as available type, 0 not to
    AType* next;
 }; // struct AType
@@ -36,7 +33,7 @@
    PartTypes(void);
    ~PartTypes(void);
    int AddType(uint16_t mbrType, uint64_t guidData1, uint64_t guidData2,
-               const char* name, int toDisplay = 1);
+               const char * name, int toDisplay = 1);
    void ShowTypes(void);
    int Valid(uint16_t);
    string GUIDToName(struct GUIDData typeCode);
diff --git a/sgdisk.cc b/sgdisk.cc
index 14f95e5..bdb2eb2 100644
--- a/sgdisk.cc
+++ b/sgdisk.cc
@@ -28,14 +28,14 @@
 
 int main(int argc, char *argv[]) {
    GPTData theGPT;
-   int opt, i, numOptions = 0, saveData = 0, neverSaveData = 0;
+   int opt, numOptions = 0, saveData = 0, neverSaveData = 0;
    int partNum = 0, deletePartNum = 0, infoPartNum = 0, bsdPartNum = 0, saveNonGPT = 1;
    int alignment = 8, retval = 0, pretend = 0;
-   uint16_t hexCode;
+   unsigned int hexCode;
    uint32_t tableSize = 128;
    uint64_t startSector, endSector;
-   char* device = NULL;
-   char *argument = NULL, *newPartInfo = NULL, *typeCode = NULL, *partName;
+   char *device = NULL;
+   char *newPartInfo = NULL, *typeCode = NULL, *partName;
    char *backupFile = NULL;
    PartTypes typeHelper;
 
@@ -205,7 +205,7 @@
                case 't':
                   theGPT.JustLooking(0);
                   partNum = (int) GetInt(typeCode, 1) - 1;
-                  sscanf(GetString(typeCode, 2).c_str(), "%x", &hexCode);
+                  sscanf(GetString(typeCode, 2).c_str(), "%ux", &hexCode);
                   if (theGPT.ChangePartType(partNum, hexCode)) {
                      saveData = 1;
                   } else {
@@ -255,7 +255,7 @@
 // Extract integer data from argument string, which should be colon-delimited
 uint64_t GetInt(char* argument, int itemNum) {
    int startPos = -1, endPos = -1;
-   uint64_t retval = 0;
+   unsigned long long retval = 0;
    string Info;
 
    Info = argument;
@@ -263,7 +263,7 @@
       startPos = endPos + 1;
       endPos = Info.find(':', startPos);
    }
-   if (endPos == string::npos)
+   if (endPos == (int) string::npos)
       endPos = Info.length();
    endPos--;
 
@@ -281,7 +281,7 @@
       startPos = endPos + 1;
       endPos = Info.find(':', startPos);
    }
-   if (endPos == string::npos)
+   if (endPos == (int) string::npos)
       endPos = Info.length();
    endPos--;
 
diff --git a/support.cc b/support.cc
index 3e4ad6c..3137635 100644
--- a/support.cc
+++ b/support.cc
@@ -204,7 +204,7 @@
 // Convert a GUID to a string representation, suitable for display
 // to humans....
 string GUIDToStr(struct GUIDData theGUID) {
-   unsigned long long blocks[11], block;
+   unsigned long long blocks[11];
    char theString[40];
 
    theString[0] = '\0';;
diff --git a/support.h b/support.h
index 79e62a9..0123ee0 100644
--- a/support.h
+++ b/support.h
@@ -59,7 +59,7 @@
    uint64_t data2;
 }; // struct GUIDData
 
-static char theFile[255];
+// static char theFile[255];
 
 int GetNumber(int low, int high, int def, const string & prompt);
 char GetYN(void);