Edit

kc3-lang/libgit2/include/git2/sys/path.h

Branch :

  • Show log

    Commit

  • Author : Edward Thomson
    Date : 2024-11-25 23:01:33
    Hash : 338ceb93
    Message : Improve documentation

  • include/git2/sys/path.h
  • /*
     * 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"
    
    /**
     * @file git2/sys/path.h
     * @brief Custom path handling
     * @defgroup git_path Custom path handling
     * @ingroup Git
     *
     * Merge will take two commits and attempt to produce a commit that
     * includes the changes that were made in both branches.
     * @{
     */
    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