---
 libhfsp/src/btreecheck.c |   98 +++++++++++++++++++++++------------------------
 libhfsp/src/fscheck.c    |   51 ++++++++++++------------
 libhfsp/src/os.c         |   13 +++---
 libhfsp/src/partitions.c |    1 
 libhfsp/src/record.c     |    6 +-
 libhfsp/src/swab.h       |   20 ++++-----
 libhfsp/src/unicode.c    |    4 -
 src/copyout.c            |    6 +-
 src/hpcache.c            |    5 +-
 src/hpls.c               |    9 ++--
 11 files changed, 112 insertions(+), 103 deletions(-)

Index: hfsplus-1.0.4/libhfsp/src/btreecheck.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/btreecheck.c	2009-09-24 23:30:16.000000000 +0200
+++ hfsplus-1.0.4/libhfsp/src/btreecheck.c	2009-09-24 23:31:27.000000000 +0200
@@ -34,6 +34,7 @@
 # include <limits.h>
 # include <errno.h>
 # include <time.h>
+# include <inttypes.h>
 
 # include "libhfsp.h"
 # include "volume.h"
@@ -57,7 +58,7 @@
 {
     char buf[255]; // mh this _might_ overflow 
     unicode_uni2asc(buf, &key->name, 255);   
-    printf("parent cnid         : %ld\n",   key->parent_cnid);
+    printf("parent cnid         : %" PRIu32 "\n",   key->parent_cnid);
     printf("name                : %s\n", buf);
 }
 
@@ -87,19 +88,19 @@
     */
     if (head->root >= node_count)
     {
-	printf("root node out of range %lX >= %lX\n",
+	printf("root node out of range %" PRIX32 " >= %" PRIX32 "\n",
 		head->root, node_count);
 	result |= FSCK_ERR; // This is really evil
     }
     if (head->leaf_head >= node_count)
     {
-	printf("leaf_head out of range %lX >= %lX\n", 
+	printf("leaf_head out of range %" PRIX32 " >= %" PRIX32 "\n",
 		head->leaf_head, node_count);
 	result |= FSCK_ERR; // dont know how to fix that by now
     }
     if (head->leaf_tail >= node_count)
     {
-	printf("leaf_head out of range %lX >= %lX\n", 
+	printf("leaf_head out of range %" PRIX32 " >= %" PRIX32 "\n",
 		head->leaf_tail, node_count);
 	result |= FSCK_ERR; // dont know how to fix that by now
     }
@@ -117,14 +118,14 @@
     }
     if (head->free_nodes >= node_count)
     {
-	printf("free_nodes out of range %lX >= %lX\n", 
+	printf("free_nodes out of range %" PRIX32 " >= %" PRIX32 "\n",
 		head->free_nodes, node_count);
 	result |= FSCK_ERR; // dont know how to fix that by now
     }
     // head->reserved1	nothing to check here
     if (head->clump_size % blocksize)
     {
-	printf("clump_size %ld not a multiple of blocksize %ld\n", 
+	printf("clump_size %" PRIu32 " not a multiple of blocksize %" PRIu32 "\n",
 		head->free_nodes, blocksize);
 	result |= FSCK_ERR; // dont know how to fix that by now
     }
@@ -136,7 +137,7 @@
     // head->reserved2  nothing to check here
     if (head->attributes & HFSPLUS_TREE_RESERVED)
     {
-	printf("Unexpected bits in btree header node attributes %lX\n",
+	printf("Unexpected bits in btree header node attributes %" PRIX32 "\n",
 	    head->attributes);
 	result |= FSCK_ERR; // dont know how to fix that by now
     }
@@ -149,16 +150,16 @@
 {
     UInt32 attr;
     printf("  depth       : %#X\n",  head->depth);
-    printf("  root        : %#lX\n", head->root);
-    printf("  leaf_count  : %#lX\n", head->leaf_count);
-    printf("  leaf_head   : %#lX\n", head->leaf_head);
-    printf("  leaf_tail   : %#lX\n", head->leaf_tail);
+    printf("  root        : %#" PRIX32 "\n", head->root);
+    printf("  leaf_count  : %#" PRIX32 "\n", head->leaf_count);
+    printf("  leaf_head   : %#" PRIX32 "\n", head->leaf_head);
+    printf("  leaf_tail   : %#" PRIX32 "\n", head->leaf_tail);
     printf("  node_size   : %#X\n",  head->node_size);
     printf("  max_key_len : %#X\n",  head->max_key_len);
-    printf("  node_count  : %#lX\n", head->node_count);
-    printf("  free_nodes  : %#lX\n", head->free_nodes);
+    printf("  node_count  : %#" PRIX32 "\n", head->node_count);
+    printf("  free_nodes  : %#" PRIX32 "\n", head->free_nodes);
     printf("  reserved1   : %#X\n",  head->reserved1);
-    printf("  clump_size  : %#lX\n", head->clump_size);
+    printf("  clump_size  : %#" PRIX32 "\n", head->clump_size);
     printf("  btree_type  : %#X\n",  head->btree_type);
     attr = head->attributes;
     printf("  reserved2   : %#X\n",  head->reserved2);
@@ -183,9 +184,9 @@
 
 static void print_node_desc(UInt32 nodeIndex, btree_node_desc* node)
 {
-    printf("Node descriptor for Node %ld\n", nodeIndex);
-    printf("next     : %#lX\n", node->next);
-    printf("prev     : %#lX\n", node->prev);
+    printf("Node descriptor for Node %" PRIu32 "\n", nodeIndex);
+    printf("next     : %#" PRIX32 "\n", node->next);
+    printf("prev     : %#" PRIX32 "\n", node->prev);
     printf("height   : %#X\n",  node->height);
     printf("num_rec  : %d\n",   node->num_rec);
     printf("reserved : %#X\n",  node->reserved);
@@ -225,13 +226,14 @@
 		 HFSP_EXTENT_DATA, bt->cnid);
     if (!p)
     {
-	printf("Unable to read block 1 of b*tree for cnid:%ld\n", bt->cnid);
+	printf("Unable to read block 1 of b*tree for cnid:%" PRIu32 "\n",
+               bt->cnid);
 	return FSCK_ERR;
     }
     p = btree_readnode(node, p);
     if (node->prev != 0)
     {
-	printf("Backlink of header node is not zero (%lX) \n", node->prev);
+	printf("Backlink of header node is not zero (%" PRIX32 ") \n", node->prev);
 	return FSCK_ERR; // ToDo: We might ignore it but ???
     }
     if (node->kind != HFSP_NODE_HEAD)
@@ -363,7 +365,7 @@
     }
     if (fsck_data.verbose)
     {
-	printf("Node %4ld, Record %2d is at pos %04X,"
+	printf("Node %4" PRIu32 ", Record %2d is at pos %04X,"
 	       "Backptr is at offset %04X\n", node, index, offset, off_pos);
     }
     // now we have the offset and can read the key ...
@@ -392,7 +394,7 @@
     void*	     current = node->node + 0x0E; // sizeof (btree_node_desc)
     char	     kbuf[bt->head.max_key_len]; // dummy key to skip over
     char	     buf[bt->max_rec_size]; 
-    fprintf(stderr, "Node %lu with %u records is damaged trying to fix ***\n",
+    fprintf(stderr, "Node %" PRIu32 " with %u records is damaged trying to fix ***\n",
 		nodeIndex, num_rec);
     for (i=0; i < num_rec; i++)
     {
@@ -402,7 +404,7 @@
 	if (p != current)
 	{
 	    fprintf(stderr, 
-		"Key %u in Node %lu is damaged "
+		"Key %u in Node %" PRIu32 " is damaged "
 		"rest of keys will be droppend ***\n", i,nodeIndex);
 	    break;
 	}
@@ -450,7 +452,7 @@
 	if (p < previous)
 	{   // This may happen when the cache entry was flushed, but per
 	    // design of the cache this should not happen, mmh
-	    printf("Backpointers in Node %ld index %d out of order "
+	    printf("Backpointers in Node %" PRIu32 " index %d out of order "
 		   "(%p >= %p)\n", nodeIndex, i, p, previous);
 	    result |= FSCK_FSCORR;	// Hope we can correct that later
 	}
@@ -471,7 +473,7 @@
 	    int comp = bt->kcomp(*key1, *key2);
 	    if (comp > 0)
 	    {
-		printf("Invalid key order in node %ld record %d\n key1=",
+		printf("Invalid key order in node %" PRIu32 " record %d\n key1=",
 			nodeIndex, i);
 		record_print_key((hfsp_cat_key*) *key1);
 		printf("Invalid key order key2=\n");
@@ -480,7 +482,7 @@
 	    }
 	    if (comp == 0 && i > 0) // equal to key in parent node is ok
 	    {
-		printf("Duplicate key in node %ld record %d key1=\n",
+		printf("Duplicate key in node %" PRIu32 " record %d key1=\n",
 			nodeIndex, i);
 		record_print_key((hfsp_cat_key*) *key1);
 		printf("Duplicate key key2=\n");
@@ -535,10 +537,10 @@
 /* print permissions */
 static void record_print_perm(hfsp_perm* perm)
 {
-    printf("owner               : %ld\n",  perm->owner);
-    printf("group               : %ld\n",  perm->group);
-    printf("perm                : 0x%lX\n",perm->mode);
-    printf("dev                 : %ld\n",  perm->dev);
+    printf("owner               : %" PRIu32 "\n",  perm->owner);
+    printf("group               : %" PRIu32 "\n",  perm->group);
+    printf("perm                : 0x%" PRIX32 "\n",perm->mode);
+    printf("dev                 : %" PRIu32 "\n",  perm->dev);
 }
 
 /* print Directory info */
@@ -554,17 +556,17 @@
 static void record_print_DXInfo(DXInfo* xinfo)
 {
     printf(  "frScroll            : ");    record_print_Point(&xinfo->frScroll);
-    printf("\nfrOpenChain         : %ld\n",  xinfo->frOpenChain);
+    printf("\nfrOpenChain         : %" PRIu32 "\n",  xinfo->frOpenChain);
     printf(  "frUnused            : %d\n",   xinfo->frUnused);
     printf(  "frComment           : %d\n",   xinfo->frComment);
-    printf(  "frPutAway           : %ld\n",  xinfo->frPutAway);
+    printf(  "frPutAway           : %" PRIu32 "\n",  xinfo->frPutAway);
 }
 
 static void record_print_folder(hfsp_cat_folder* folder)
 {
     printf("flags               : 0x%X\n",	folder->flags);
-    printf("valence             : 0x%lX\n",	folder->valence);
-    printf("id                  : %ld\n",	folder->id);
+    printf("valence             : 0x%" PRIX32 "\n",	folder->valence);
+    printf("id                  : %" PRIu32 "\n",	folder->id);
     printf("create_date         : %s",	get_atime(folder->create_date));
     printf("content_mod_date    : %s",	get_atime(folder->content_mod_date));
     printf("attribute_mod_date  : %s",	get_atime(folder->attribute_mod_date));
@@ -573,8 +575,8 @@
     record_print_perm	(&folder->permissions);
     record_print_DInfo	(&folder->user_info);
     record_print_DXInfo	(&folder->finder_info);
-    printf("text_encoding       : 0x%lX\n",	folder->text_encoding);
-    printf("reserved            : 0x%lX\n",	folder->reserved);
+    printf("text_encoding       : 0x%" PRIX32 "\n",	folder->text_encoding);
+    printf("reserved            : 0x%" PRIX32 "\n",	folder->reserved);
 }
 
 /* print File info */
@@ -593,15 +595,15 @@
     printf(  "fdIconID            : %d\n",   xinfo->fdIconID);
     // xinfo -> fdUnused;
     printf(  "fdComment           : %d\n",   xinfo->fdComment);
-    printf(  "fdPutAway           : %ld\n",  xinfo->fdPutAway);
+    printf(  "fdPutAway           : %" PRIu32 "\n",  xinfo->fdPutAway);
 } 
 
 /* print file entry */
 static void record_print_file(hfsp_cat_file* file)
 {
     printf("flags               : 0x%X\n",	file->flags);
-    printf("reserved1           : 0x%lX\n",	file->reserved1);
-    printf("id                  : %ld\n",	file->id);
+    printf("reserved1           : 0x%" PRIX32 "\n",	file->reserved1);
+    printf("id                  : %" PRIu32 "\n",	file->id);
     printf("create_date         : %s",	get_atime(file->create_date));
     printf("content_mod_date    : %s",	get_atime(file->content_mod_date));
     printf("attribute_mod_date  : %s",	get_atime(file->attribute_mod_date));
@@ -610,8 +612,8 @@
     record_print_perm	(&file->permissions);
     record_print_FInfo	(&file->user_info);
     record_print_FXInfo	(&file->finder_info);
-    printf("text_encoding       : 0x%lX\n",	file->text_encoding);
-    printf("reserved            : 0x%lX\n",	file->reserved2);
+    printf("text_encoding       : 0x%" PRIX32 "\n",	file->text_encoding);
+    printf("reserved            : 0x%" PRIX32 "\n",	file->reserved2);
     printf("Datafork:\n");
     print_fork (&file->data_fork);
     printf("Rsrcfork:\n");
@@ -623,7 +625,7 @@
 {
     char buf[255]; // mh this _might_ overflow 
     unicode_uni2asc(buf, &entry->nodeName, 255);   
-    printf("parent cnid         : %ld\n", entry->parentID);
+    printf("parent cnid         : %" PRIu32 "\n", entry->parentID);
     printf("name                : %s\n" , buf);
 }
 
@@ -691,7 +693,7 @@
 
     if (key->parent_cnid >= cnid)
     {
-	printf("parent_cnid %ld >= volume next cnid %ld\n", 
+	printf("parent_cnid %" PRIu32 " >= volume next cnid %" PRIu32 "\n",
 		    key->parent_cnid, cnid);
 	result |= FSCK_FSCORR; // hope we can fix that some time
     }
@@ -710,7 +712,7 @@
 	printf("Warning %s is 0\n", errname);
     */
     if (time > fsck_data.macNow)
-	printf("Warning %21.21s is in the future: (%lX) %s", 
+	printf("Warning %21.21s is in the future: (%" PRIX32 ") %s",
 		errname, time, get_atime(time));
 
     return FSCK_NOERR;	// Those are not really bad, just annoying
@@ -732,7 +734,7 @@
     // file->reserved1	// Nothing to check here
     if (file->id >= cnid)
     {
-	printf("file id %ld >= volume next cnid %ld\n", 
+	printf("file id %" PRIu32 " >= volume next cnid %" PRIu32 "\n",
 		    file->id, cnid);
 	result |= FSCK_FSCORR; // hope we can fix that some time
     }
@@ -769,7 +771,7 @@
     // folder->valence	// to be checked later
     if (folder->id >= cnid)
     {
-	printf("Folder id %ld >= volume next cnid %ld\n", 
+	printf("Folder id %" PRIu32 " >= volume next cnid %" PRIu32 "\n",
 		    folder->id, cnid);
 	result |= FSCK_FSCORR; // hope we can fix that some time
     }
@@ -798,7 +800,7 @@
 
     if (thread->parentID >= cnid)
     {
-	printf("Thread parentID %ld >= volume next cnid %ld\n", 
+	printf("Thread parentID %" PRIu32 " >= volume next cnid %" PRIu32 "\n",
 		    thread->parentID, cnid);
 	result |= FSCK_FSCORR; // hope we can fix that some time
     }
@@ -899,7 +901,7 @@
     {		// structure (should happen while debugging only)
 	fprintf(stderr, 
 	    "Unexpected difference in Node %d, Record %d "
-	    ": %d (%d/%d) (%p,%p)\n",
+	    ": %d (%ld/%ld) (%p,%p)\n",
 	    r->node_index, index, diff , p - p1, p2 - p1, p, p2);
 	record_print(r);
     }
@@ -947,7 +949,7 @@
 
     if (!btree_check_nodealloc(catalog, catalog->head.leaf_head))
     {
-	printf("leaf_head %ld not allocated in node Map\n",
+	printf("leaf_head %" PRIu32 " not allocated in node Map\n",
 		catalog->head.leaf_head);
 	result |= FSCK_FSCORR; /* Maybe we can correct that one time */
     }
Index: hfsplus-1.0.4/libhfsp/src/os.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/os.c	2002-03-25 16:48:37.000000000 +0100
+++ hfsplus-1.0.4/libhfsp/src/os.c	2009-09-24 23:31:27.000000000 +0200
@@ -46,6 +46,7 @@
 # endif
 
 # include <stdio.h>
+# include <stdlib.h>
 
 
 # include <errno.h>
@@ -66,7 +67,7 @@
  */
 int os_open(void **priv, const char *path, int mode)
 {
-  int fd;
+  long fd;
   struct flock lock;
   int	 c;
 
@@ -123,7 +124,7 @@
  */
 int os_close(void **priv)
 {
-  int fd = (int) *priv;
+  long fd = (long) *priv;
 
   *priv = (void *) -1;
 
@@ -142,7 +143,7 @@
  */
 int os_same(void **priv, const char *path)
 {
-  int fd = (int) *priv;
+  long fd = (long) *priv;
   struct stat fdev, dev;
 
   if (fstat(fd, &fdev) == -1 ||
@@ -163,7 +164,7 @@
  */
 unsigned long os_seek(void **priv, unsigned long offset, int blksize_bits)
 {
-    int	    fd = (int) *priv;
+    long	    fd = (long) *priv;
     off_t   result, where = offset;
 
     where  = os_offset + (where << blksize_bits);
@@ -186,7 +187,7 @@
  */
 unsigned long os_read(void **priv, void *buf, unsigned long len, int blksize_bits)
 {
-    int fd = (int) *priv;
+    long fd = (long) *priv;
     size_t result= 0;
     int num= len << blksize_bits;
 
@@ -208,7 +209,7 @@
  */
 unsigned long os_write(void **priv, const void *buf, unsigned long len, int blksize_bits)
 {
-  int fd = (int) *priv;
+  long fd = (long) *priv;
   size_t result;
 
   result = write(fd, buf, len << blksize_bits);
Index: hfsplus-1.0.4/libhfsp/src/partitions.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/partitions.c	2002-03-26 19:00:29.000000000 +0100
+++ hfsplus-1.0.4/libhfsp/src/partitions.c	2009-09-24 23:31:27.000000000 +0200
@@ -32,6 +32,7 @@
 #include "libhfsp.h"
 
 #include <stdlib.h>
+#include <string.h>
 
 /*
  * Returns the number of partitions in the given partition map.
Index: hfsplus-1.0.4/libhfsp/src/record.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/record.c	2009-09-24 23:30:16.000000000 +0200
+++ hfsplus-1.0.4/libhfsp/src/record.c	2009-09-24 23:31:27.000000000 +0200
@@ -31,7 +31,9 @@
 # endif                                                                         
 
 #include <errno.h>
+#include <string.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 #include "libhfsp.h"
 #include "hfstime.h"
@@ -1260,7 +1262,7 @@
     // Find out where to insert the record
     if (record_find_key(bt, &r->key, &keyind, &nodeind))
 	HFSP_ERROR(EEXIST, 
-	hfsp_error = "File/Folder already exists");
+	           "File/Folder already exists");
 
     // Create memory image
     p = record_writekey  (p, &r->key);
@@ -1273,7 +1275,7 @@
     len = p - buf;
     if (len > bt->max_rec_size) // Emergency bail out, sorry
     {
-	fprintf(stderr,"Unexpected Buffer overflow in record_insert %d > %d",
+	fprintf(stderr,"Unexpected Buffer overflow in record_insert %d > %ld",
 		len, sizeof(bt->max_rec_size));
 	exit(-1);
     } 
Index: hfsplus-1.0.4/libhfsp/src/unicode.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/unicode.c	2009-09-24 23:30:16.000000000 +0200
+++ hfsplus-1.0.4/libhfsp/src/unicode.c	2009-09-24 23:31:27.000000000 +0200
@@ -102,8 +102,8 @@
     register UInt16	length1 = ustr1->strlen;
     register UInt16	length2 = ustr2->strlen;
     register UInt16*    lowerCaseTable = gLowerCaseTable;
-    register UInt16*	str1 = ustr1->name;
-    register UInt16*	str2 = ustr2->name;
+    register UInt16*	str1 = (UInt16*)ustr1->name;
+    register UInt16*	str2 = (UInt16*)ustr2->name;
 
     while (1) {
         //  Set default values for c1, c2 in case there are no more valid chars
Index: hfsplus-1.0.4/src/copyout.c
===================================================================
--- hfsplus-1.0.4.orig/src/copyout.c	2002-03-05 20:50:29.000000000 +0100
+++ hfsplus-1.0.4/src/copyout.c	2009-09-24 23:31:27.000000000 +0200
@@ -144,7 +144,7 @@
     void	    *p;
 
 	/* Mhh, this limits filenames to 63 characters */
-    buf[1] = unicode_uni2asc(&buf[2], &ifile->key.name, 63);
+    buf[1] = (unsigned char)unicode_uni2asc((char*)&buf[2], &ifile->key.name, 63);
 
     p = &buf[65];
     bstoreU32_inc(p, file->user_info.fdType);	    // 65
@@ -270,7 +270,7 @@
     UInt64	    hsize;  // huge , HFS+ size
     UInt32	    bsize;  // size supported by Macbinary
 
-    byte = unicode_uni2asc(name, &ifile->key.name, 255);
+    byte = unicode_uni2asc((char*)name, &ifile->key.name, 255);
     if (binhex_insert(&byte, 1) == -1 ||
         binhex_insert(name, byte + 1) == -1)
     {
@@ -365,7 +365,7 @@
     {
         UInt32  block   = blockiter_curr(&iter);
         int     result  = volume_readinbuf(vol, buf, block);
-        size_t	size    = total > blksize ? blksize : total;
+        int	size    = total > blksize ? blksize : total;
 	size_t	bytes;
 	char	*latin1, *ptr, *ptrend;
         if (result)
Index: hfsplus-1.0.4/src/hpcache.c
===================================================================
--- hfsplus-1.0.4.orig/src/hpcache.c	2002-03-16 09:16:14.000000000 +0100
+++ hfsplus-1.0.4/src/hpcache.c	2009-09-24 23:31:27.000000000 +0200
@@ -34,6 +34,7 @@
 # include <string.h>
 # include <errno.h>
 # include <unistd.h>
+# include <inttypes.h>
 
 #include "libhfsp.h"
 #include "volume.h"
@@ -102,7 +103,7 @@
 	return -1;
     }
 
-    params = fscanf(fd, "%255[^:]:%lu:%u",
+    params = fscanf(fd, "%255[^:]:%" PRIu32 ":%u",
 		volume_cache.vname, &volume_cache.cnid, &volume_cache.partition);
     if (params < 2)
     {
@@ -128,7 +129,7 @@
 	return -1;
     }
 
-    fprintf(fd, "%s:%lu:%u", 
+    fprintf(fd, "%s:%" PRIu32 ":%u",
 	    volume_cache.vname, volume_cache.cnid, volume_cache.partition);
 
     return 0;
Index: hfsplus-1.0.4/src/hpls.c
===================================================================
--- hfsplus-1.0.4.orig/src/hpls.c	2002-03-17 18:20:39.000000000 +0100
+++ hfsplus-1.0.4/src/hpls.c	2009-09-24 23:31:27.000000000 +0200
@@ -47,6 +47,7 @@
 # include <string.h>
 # include <time.h>
 # include <ctype.h>
+# include <inttypes.h>
 # include <errno.h>
 
 # include "libhfsp.h"
@@ -332,7 +333,7 @@
     {
 	const unsigned char *ptr;
 
-	for (ptr = path; *ptr; ++ptr)
+	for (ptr = (const unsigned char*)path; *ptr; ++ptr)
 	{
 	    char buf[5];
 	    const char *add = buf;
@@ -408,9 +409,9 @@
     if (flags & HPLS_CATIDS)
     {
         if (ent->record.type < HFSP_FOLDER_THREAD)
-	    printf("%7lu ", ent->record.u.file.id);
+	    printf("%7" PRIu32 " ", ent->record.u.file.id);
 	else
-	    printf("%7lu ", ent->record.u.thread.parentID);
+	    printf("%7" PRIu32 " ", ent->record.u.thread.parentID);
     }
     if (flags & HPLS_SIZE && 
 	ent->record.type == HFSP_FILE)
@@ -476,7 +477,7 @@
         if (ent->record.type == HFSP_FOLDER)
 	{
 	    hfsp_cat_folder* f = &ent->record.u.folder;
-	    printf("d%c %9lu item%c               %s %s\n",
+	    printf("d%c %9" PRIu32 " item%c               %s %s\n",
 	       f->user_info.frFlags & HFS_FNDR_ISINVISIBLE ? 'i' : ' ',
 	       f->valence, f->valence == 1 ? ' ' : 's',
 	       timebuf + 4, strs[i]);
Index: hfsplus-1.0.4/libhfsp/src/fscheck.c
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/fscheck.c	2009-09-24 23:30:16.000000000 +0200
+++ hfsplus-1.0.4/libhfsp/src/fscheck.c	2009-09-24 23:31:27.000000000 +0200
@@ -36,6 +36,7 @@
 # include <limits.h>
 # include <errno.h>
 # include <time.h>
+# include <inttypes.h>
 
 # include "libhfsp.h"
 # include "fscheck.h"
@@ -53,13 +54,13 @@
     int		    i;
     hfsp_extent*    e;
     printf("total_size          : %#LX\n"  , f->total_size);
-    printf("clump_size          : %#lX\n"  , f->clump_size);
-    printf("total_blocks        : %#lX\n"  , f->total_blocks);
+    printf("clump_size          : %#" PRIX32 "\n"  , f->clump_size);
+    printf("total_blocks        : %#" PRIX32 "\n"  , f->total_blocks);
     printf("extents             : ");
     for (i=0; i < 8; i++)
     {
 	e = &f->extents[i];
-	printf("(%#lX+%#lX) " , e->start_block,e->block_count);
+	printf("(%#" PRIX32 "+%#" PRIX32 ") " , e->start_block,e->block_count);
     }
     printf("\n");
 }
@@ -78,24 +79,24 @@
     printf("signature       : %c%c\n" , ((char*)&vh->signature)[0], 
 					((char*)&vh->signature)[1]);
     printf("version         : %u\n"	  , vh->version);
-    printf("attributes      : %#lX\n"	  , vh->attributes);
+    printf("attributes      : %#" PRIX32 "\n"	  , vh->attributes);
     printf("last_mount_vers : "); print_sig(vh->last_mount_vers);
-    printf("\nreserved        : %lu\n"	  , vh->reserved);
+    printf("\nreserved        : %" PRIu32 "\n"	  , vh->reserved);
 	/* Hmm this is in local, apple time ... */
     printf("create_date     : %s"	  , get_atime(vh->create_date));
     printf("modify_date     : %s"	  , get_atime(vh->modify_date));
     printf("backup_date     : %s"	  , get_atime(vh->backup_date));
     printf("checked_date    : %s"	  , get_atime(vh->checked_date));
-    printf("file_count      : %lu\n"	  , vh->file_count);
-    printf("folder_count    : %lu\n"	  , vh->folder_count);
-    printf("blocksize       : %lX\n"	  , vh->blocksize);
-    printf("total_blocks    : %lu\n"	  , vh->total_blocks);
-    printf("free_blocks     : %lu\n"	  , vh->free_blocks);
-    printf("next_alloc      : %lu\n"	  , vh->next_alloc);
-    printf("rsrc_clump_sz   : %lu\n"	  , vh->rsrc_clump_sz);
-    printf("data_clump_sz   : %lu\n"	  , vh->data_clump_sz);
-    printf("next_cnid       : %lu\n"	  , vh->next_cnid);
-    printf("write_count     : %lu\n"	  , vh->write_count);
+    printf("file_count      : %" PRIu32 "\n"	  , vh->file_count);
+    printf("folder_count    : %" PRIu32 "\n"	  , vh->folder_count);
+    printf("blocksize       : %" PRIX32 "\n"	  , vh->blocksize);
+    printf("total_blocks    : %" PRIu32 "\n"	  , vh->total_blocks);
+    printf("free_blocks     : %" PRIu32 "\n"	  , vh->free_blocks);
+    printf("next_alloc      : %" PRIu32 "\n"	  , vh->next_alloc);
+    printf("rsrc_clump_sz   : %" PRIu32 "\n"	  , vh->rsrc_clump_sz);
+    printf("data_clump_sz   : %" PRIu32 "\n"	  , vh->data_clump_sz);
+    printf("next_cnid       : %" PRIu32 "\n"	  , vh->next_cnid);
+    printf("write_count     : %" PRIu32 "\n"	  , vh->write_count);
     printf("encodings_bmp   : %#LX\n"	  , vh->encodings_bmp);
     /* vv->finder_info, p, 32); */
     printf("                  Allocation file\n");
@@ -119,7 +120,7 @@
     // vh->signature // already checked in read
     // vh->version	// Current is 4 but I wont check that
     if (attributes & HFSPLUS_VOL_RESERVED1)
-	printf("Reserved attribute in use: %lX\n", 
+	printf("Reserved attribute in use: %" PRIX32 "\n",
 			    vh->attributes & HFSPLUS_VOL_RESERVED1);
     if (! (attributes & HFSPLUS_VOL_UNMNT))
 	printf("Volume was not cleanly unmounted\n");
@@ -130,12 +131,12 @@
     if (attributes & HFSPLUS_VOL_INCNSTNT)
 	printf("Volume is inconsistent\n");
     if (attributes & HFSPLUS_VOL_RESERVED2)
-	printf("Reserved attribute in use: %lX\n", 
+	printf("Reserved attribute in use: %" PRIX32 "\n",
 			    vh->attributes & HFSPLUS_VOL_RESERVED2);
     if (fsck_data.verbose && (attributes & HFSPLUS_VOL_SOFTLOCK))
 	printf("Volume is soft locked");
     if (attributes & HFSPLUS_VOL_RESERVED3)
-	printf("Reserved attribute in use: %lX\n", 
+	printf("Reserved attribute in use: %" PRIX32 "\n",
 			    vh->attributes & HFSPLUS_VOL_RESERVED3);
     switch (vh->last_mount_vers)
     {
@@ -169,25 +170,25 @@
     // vh->folder_count	// To be checked later
     if (0 != (vh->blocksize % HFSP_BLOCKSZ)) // must be multiple of BLKSZ
     {
-	printf("Invalid Blocksize %lX\n", vh->blocksize);
+	printf("Invalid Blocksize %" PRIX32 "\n", vh->blocksize);
 	result = FSCK_ERR; // Wont try to correct that, yet.
     }
     {
 	UInt64 totalbytes    = vh->total_blocks * vh->blocksize;
 	UInt64 expectedbytes = vol->maxblocks << vol->blksize_bits;
 	if (totalbytes > expectedbytes)
-	    printf("\nInvalid total blocks %lX, expected %lX", 
+	    printf("\nInvalid total blocks %" PRIX32 ", expected %" PRIX32,
 		vh->total_blocks, (UInt32)(expectedbytes / vh->blocksize));
     }
     if (vh->free_blocks	> vh->total_blocks)
-	printf("More free blocks (%lX) than total (%lX) ?\n", 
+	printf("More free blocks (%" PRIX32 ") than total (%" PRIX32 ") ?\n",
 		    vh->free_blocks, vh->total_blocks);
 	// Check more later
     // vh->next_alloc	// to be checked later
     // vh->rsrc_clump_sz  // no check needed, is a hint only
     // vh->data_clump_sz  // no check needed, is a hint only
     if (vh->next_cnid <= HFSP_MIN_CNID) // wil hopefully be fixed later
-	printf("Invalid next_cnid: %ld\n", vh->next_cnid);
+	printf("Invalid next_cnid: %" PRIu32 "\n", vh->next_cnid);
 	// Check more later
     // vh->write_count	    // no check possible
     // vh->encodings_bmp    // no check needed, is a hint only
@@ -292,7 +293,7 @@
 	sect_per_block =  (drAlBlkSiz / HFSP_BLOCKSZ);  
 	if ((sect_per_block * HFSP_BLOCKSZ) != drAlBlkSiz)
 	{
-	    printf("HFS Blocksize %lX is not multiple of %X\n", 
+	    printf("HFS Blocksize %" PRIX32 " is not multiple of %X\n",
 		    drAlBlkSiz, HFSP_BLOCKSZ);
 	    return FSCK_ERR; // Cant help it (for now)
 	}
@@ -302,7 +303,7 @@
 		    << HFS_BLOCKSZ_BITS;
 	/* Now we can try to read the embedded HFS+ volume header */
 	if (fsck_data.verbose)
-	    printf("Embedded HFS+ volume at 0x%LX (0x%lX) of 0x%X sized Blocks\n",
+	    printf("Embedded HFS+ volume at 0x%LX (0x%" PRIX32 ") of 0x%X sized Blocks\n",
 		    os_offset, vol->maxblocks, HFSP_BLOCKSZ);
 	return fscheck_volume_read(vol,vh,2);
     }
@@ -340,7 +341,7 @@
 	{
 	    if (!volume_allocated(vol, block))
 	    {
-		printf("Warning block %lX not marked as allocated\n",block);
+		printf("Warning block %" PRIX32 " not marked as allocated\n",block);
 		errcount++;
 	    }
 	    count --;
Index: hfsplus-1.0.4/libhfsp/src/swab.h
===================================================================
--- hfsplus-1.0.4.orig/libhfsp/src/swab.h	2009-09-24 23:30:16.000000000 +0200
+++ hfsplus-1.0.4/libhfsp/src/swab.h	2009-09-24 23:35:03.000000000 +0200
@@ -36,13 +36,13 @@
 
 #define bswabU16(val) bswap_16(val)
 
-#define bswabU16_inc(ptr) bswap_16(*((UInt16*) (ptr))); ptr = (UInt16*)ptr + 1
-#define bswabU32_inc(ptr) bswap_32(*((UInt32*) (ptr))); ptr = (UInt32*)ptr + 1
-#define bswabU64_inc(ptr) bswap_64(*((UInt64*) (ptr))); ptr = (UInt64*)ptr + 1
-
-#define bstoreU16_inc(ptr, val) *((UInt16*) (ptr)) = bswap_16(val); ptr = (UInt16*)ptr + 1
-#define bstoreU32_inc(ptr, val) *((UInt32*) (ptr)) = bswap_32(val); ptr = (UInt32*)ptr + 1;
-#define bstoreU64_inc(ptr, val) *((UInt64*) (ptr)) = bswap_64(val); ptr = (UInt32*)ptr + 1;
+#define bswabU16_inc(ptr) bswap_16(*((UInt16*) (ptr))); ptr = (void*)((UInt16*)ptr + 1)
+#define bswabU32_inc(ptr) bswap_32(*((UInt32*) (ptr))); ptr = (void*)((UInt32*)ptr + 1)
+#define bswabU64_inc(ptr) bswap_64(*((UInt64*) (ptr))); ptr = (void*)((UInt64*)ptr + 1)
+
+#define bstoreU16_inc(ptr, val) *((UInt16*) (ptr)) = bswap_16(val); ptr = (void*)((UInt16*)ptr + 1)
+#define bstoreU32_inc(ptr, val) *((UInt32*) (ptr)) = bswap_32(val); ptr = (void*)((UInt32*)ptr + 1)
+#define bstoreU64_inc(ptr, val) *((UInt64*) (ptr)) = bswap_64(val); ptr = (void*)((UInt32*)ptr + 1)
 
 #else // BYTE_ORDER == BIG_ENDIAN
 
@@ -69,9 +69,9 @@
 #define bswabU64_inc(ptr) *((UInt64*) (ptr)); ptr = (UInt64*)ptr + 1
 #endif
 
-#define bstoreU16_inc(ptr, val) *((UInt16*) (ptr)) = val; ptr = (UInt16*)ptr + 1
-#define bstoreU32_inc(ptr, val) *((UInt32*) (ptr)) = val; ptr = (UInt32*)ptr + 1
-#define bstoreU64_inc(ptr, val) *((UInt64*) (ptr)) = val; ptr = (UInt64*)ptr + 1
+#define bstoreU16_inc(ptr, val) *((UInt16*) (ptr)) = val; ptr = (void*)((UInt16*)ptr + 1)
+#define bstoreU32_inc(ptr, val) *((UInt32*) (ptr)) = val; ptr = (void*)((UInt32*)ptr + 1)
+#define bstoreU64_inc(ptr, val) *((UInt64*) (ptr)) = val; ptr = (void*)((UInt64*)ptr + 1)
 
 #endif
 

Reply via email to