Browse Source

handle 32bit inode sizes

pull/384/head
Antonio SJ Musumeci 9 years ago
parent
commit
d0fa9efa51
  1. 11
      src/fs_inode.hpp

11
src/fs_inode.hpp

@ -19,6 +19,7 @@
#ifndef __FS_INODE_HPP__ #ifndef __FS_INODE_HPP__
#define __FS_INODE_HPP__ #define __FS_INODE_HPP__
#include <stdint.h>
#include <sys/stat.h> #include <sys/stat.h>
namespace fs namespace fs
@ -34,12 +35,10 @@ namespace fs
void void
recompute(struct stat &st) recompute(struct stat &st)
{ {
/*
Some OSes have 32-bit device IDs, so box this up first.
This does also presume a 64-bit inode value.
*/
uint64_t st_dev = (uint64_t)st.st_dev;
st.st_ino |= (st_dev << 32);
if(sizeof(st.st_ino) == 4)
st.st_ino |= ((uint32_t)st.st_dev << 16);
else
st.st_ino |= ((uint64_t)st.st_dev << 32);
} }
} }
} }

Loading…
Cancel
Save