object.h: move some inline functions and defines from cache.h
The object_type() inline function is very tied to the enum object_type declaration within object.h, and just seemed to make more sense to live there. That makes S_ISGITLINK and some other defines make sense to go with it, as well as the create_ce_mode() and canon_mode() inline functions. Move all these inline functions and defines from cache.h to object.h. Signed-off-by: Elijah Newren <newren@gmail.com> Acked-by: Calvin Wan <calvinwan@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
b6fdc44c84
commit
8876ea83a7
44
object.h
44
object.h
@ -101,6 +101,50 @@ enum object_type {
|
||||
OBJ_MAX
|
||||
};
|
||||
|
||||
/* unknown mode (impossible combination S_IFIFO|S_IFCHR) */
|
||||
#define S_IFINVALID 0030000
|
||||
|
||||
/*
|
||||
* A "directory link" is a link to another git directory.
|
||||
*
|
||||
* The value 0160000 is not normally a valid mode, and
|
||||
* also just happens to be S_IFDIR + S_IFLNK
|
||||
*/
|
||||
#define S_IFGITLINK 0160000
|
||||
#define S_ISGITLINK(m) (((m) & S_IFMT) == S_IFGITLINK)
|
||||
|
||||
#define S_ISSPARSEDIR(m) ((m) == S_IFDIR)
|
||||
|
||||
static inline enum object_type object_type(unsigned int mode)
|
||||
{
|
||||
return S_ISDIR(mode) ? OBJ_TREE :
|
||||
S_ISGITLINK(mode) ? OBJ_COMMIT :
|
||||
OBJ_BLOB;
|
||||
}
|
||||
|
||||
#define ce_permissions(mode) (((mode) & 0100) ? 0755 : 0644)
|
||||
static inline unsigned int create_ce_mode(unsigned int mode)
|
||||
{
|
||||
if (S_ISLNK(mode))
|
||||
return S_IFLNK;
|
||||
if (S_ISSPARSEDIR(mode))
|
||||
return S_IFDIR;
|
||||
if (S_ISDIR(mode) || S_ISGITLINK(mode))
|
||||
return S_IFGITLINK;
|
||||
return S_IFREG | ce_permissions(mode);
|
||||
}
|
||||
|
||||
static inline unsigned int canon_mode(unsigned int mode)
|
||||
{
|
||||
if (S_ISREG(mode))
|
||||
return S_IFREG | ce_permissions(mode);
|
||||
if (S_ISLNK(mode))
|
||||
return S_IFLNK;
|
||||
if (S_ISDIR(mode))
|
||||
return S_IFDIR;
|
||||
return S_IFGITLINK;
|
||||
}
|
||||
|
||||
/*
|
||||
* The object type is stored in 3 bits.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user