65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
|
/*
|
||
|
* Copyright (C) the libgit2 contributors. All rights reserved.
|
||
|
*
|
||
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
||
|
* a Linking Exception. For full terms see the included COPYING file.
|
||
|
*/
|
||
|
|
||
|
#ifndef INCLUDE_sys_git_path_h__
|
||
|
#define INCLUDE_sys_git_path_h__
|
||
|
|
||
|
#include "git2/common.h"
|
||
|
|
||
|
GIT_BEGIN_DECL
|
||
|
|
||
|
/**
|
||
|
* The kinds of git-specific files we know about.
|
||
|
*
|
||
|
* The order needs to stay the same to not break the `gitfiles`
|
||
|
* array in path.c
|
||
|
*/
|
||
|
typedef enum {
|
||
|
/** Check for the .gitignore file */
|
||
|
GIT_PATH_GITFILE_GITIGNORE,
|
||
|
/** Check for the .gitmodules file */
|
||
|
GIT_PATH_GITFILE_GITMODULES,
|
||
|
/** Check for the .gitattributes file */
|
||
|
GIT_PATH_GITFILE_GITATTRIBUTES
|
||
|
} git_path_gitfile;
|
||
|
|
||
|
/**
|
||
|
* The kinds of checks to perform according to which filesystem we are trying to
|
||
|
* protect.
|
||
|
*/
|
||
|
typedef enum {
|
||
|
/** Do both NTFS- and HFS-specific checks */
|
||
|
GIT_PATH_FS_GENERIC,
|
||
|
/** Do NTFS-specific checks only */
|
||
|
GIT_PATH_FS_NTFS,
|
||
|
/** Do HFS-specific checks only */
|
||
|
GIT_PATH_FS_HFS
|
||
|
} git_path_fs;
|
||
|
|
||
|
/**
|
||
|
* Check whether a path component corresponds to a .git$SUFFIX
|
||
|
* file.
|
||
|
*
|
||
|
* As some filesystems do special things to filenames when
|
||
|
* writing files to disk, you cannot always do a plain string
|
||
|
* comparison to verify whether a file name matches an expected
|
||
|
* path or not. This function can do the comparison for you,
|
||
|
* depending on the filesystem you're on.
|
||
|
*
|
||
|
* @param path the path component to check
|
||
|
* @param pathlen the length of `path` that is to be checked
|
||
|
* @param gitfile which file to check against
|
||
|
* @param fs which filesystem-specific checks to use
|
||
|
* @return 0 in case the file does not match, a positive value if
|
||
|
* it does; -1 in case of an error
|
||
|
*/
|
||
|
GIT_EXTERN(int) git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfile gitfile, git_path_fs fs);
|
||
|
|
||
|
GIT_END_DECL
|
||
|
|
||
|
#endif /* INCLUDE_sys_git_path */
|