Skip to content

Commit

Permalink
handle 32bit inode sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
trapexit committed Apr 6, 2017
1 parent 25fe57f commit d0fa9ef
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/fs_inode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#ifndef __FS_INODE_HPP__
#define __FS_INODE_HPP__

#include <stdint.h>
#include <sys/stat.h>

namespace fs
Expand All @@ -34,12 +35,10 @@ namespace fs
void
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);
}
}
}
Expand Down

0 comments on commit d0fa9ef

Please sign in to comment.