/* * 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_git_message_h__ #define INCLUDE_git_message_h__ #include "common.h" #include "buffer.h" /** * @file git2/message.h * @brief Git message management routines * @ingroup Git * @{ */ GIT_BEGIN_DECL /** * Clean up excess whitespace and make sure there is a trailing newline in the message. * * Optionally, it can remove lines which start with the comment character. * * @param out The user-allocated git_buf which will be filled with the * cleaned up message. * * @param message The message to be prettified. * * @param strip_comments Non-zero to remove comment lines, 0 to leave them in. * * @param comment_char Comment character. Lines starting with this character * are considered to be comments and removed if `strip_comments` is non-zero. * * @return 0 or an error code. */ GIT_EXTERN(int) git_message_prettify(git_buf *out, const char *message, int strip_comments, char comment_char); /** * Represents a single git message trailer. */ typedef struct { const char *key; const char *value; } git_message_trailer; /** * Represents an array of git message trailers. * * Struct members under the private comment are private, subject to change * and should not be used by callers. */ typedef struct { git_message_trailer *trailers; size_t count; /* private */ char *_trailer_block; } git_message_trailer_array; /** * Parse trailers out of a message, filling the array pointed to by +arr+. * * Trailers are key/value pairs in the last paragraph of a message, not * including any patches or conflicts that may be present. * * @param arr A pre-allocated git_message_trailer_array struct to be filled in * with any trailers found during parsing. * @param message The message to be parsed * @return 0 on success, or non-zero on error. */ GIT_EXTERN(int) git_message_trailers(git_message_trailer_array *arr, const char *message); /** * Clean's up any allocated memory in the git_message_trailer_array filled by * a call to git_message_trailers. */ GIT_EXTERN(void) git_message_trailer_array_free(git_message_trailer_array *arr); /** @} */ GIT_END_DECL #endif /* INCLUDE_git_message_h__ */