trailer.hon commit grep.c: remove implicit dependency on the_index (38bbc2e)
   1#ifndef TRAILER_H
   2#define TRAILER_H
   3
   4#include "list.h"
   5
   6struct strbuf;
   7
   8enum trailer_where {
   9        WHERE_DEFAULT,
  10        WHERE_END,
  11        WHERE_AFTER,
  12        WHERE_BEFORE,
  13        WHERE_START
  14};
  15enum trailer_if_exists {
  16        EXISTS_DEFAULT,
  17        EXISTS_ADD_IF_DIFFERENT_NEIGHBOR,
  18        EXISTS_ADD_IF_DIFFERENT,
  19        EXISTS_ADD,
  20        EXISTS_REPLACE,
  21        EXISTS_DO_NOTHING
  22};
  23enum trailer_if_missing {
  24        MISSING_DEFAULT,
  25        MISSING_ADD,
  26        MISSING_DO_NOTHING
  27};
  28
  29int trailer_set_where(enum trailer_where *item, const char *value);
  30int trailer_set_if_exists(enum trailer_if_exists *item, const char *value);
  31int trailer_set_if_missing(enum trailer_if_missing *item, const char *value);
  32
  33struct trailer_info {
  34        /*
  35         * True if there is a blank line before the location pointed to by
  36         * trailer_start.
  37         */
  38        int blank_line_before_trailer;
  39
  40        /*
  41         * Pointers to the start and end of the trailer block found. If there
  42         * is no trailer block found, these 2 pointers point to the end of the
  43         * input string.
  44         */
  45        const char *trailer_start, *trailer_end;
  46
  47        /*
  48         * Array of trailers found.
  49         */
  50        char **trailers;
  51        size_t trailer_nr;
  52};
  53
  54/*
  55 * A list that represents newly-added trailers, such as those provided
  56 * with the --trailer command line option of git-interpret-trailers.
  57 */
  58struct new_trailer_item {
  59        struct list_head list;
  60
  61        const char *text;
  62
  63        enum trailer_where where;
  64        enum trailer_if_exists if_exists;
  65        enum trailer_if_missing if_missing;
  66};
  67
  68struct process_trailer_options {
  69        int in_place;
  70        int trim_empty;
  71        int only_trailers;
  72        int only_input;
  73        int unfold;
  74};
  75
  76#define PROCESS_TRAILER_OPTIONS_INIT {0}
  77
  78void process_trailers(const char *file,
  79                      const struct process_trailer_options *opts,
  80                      struct list_head *new_trailer_head);
  81
  82void trailer_info_get(struct trailer_info *info, const char *str);
  83
  84void trailer_info_release(struct trailer_info *info);
  85
  86/*
  87 * Format the trailers from the commit msg "msg" into the strbuf "out".
  88 * Note two caveats about "opts":
  89 *
  90 *   - this is primarily a helper for pretty.c, and not
  91 *     all of the flags are supported.
  92 *
  93 *   - this differs from process_trailers slightly in that we always format
  94 *     only the trailer block itself, even if the "only_trailers" option is not
  95 *     set.
  96 */
  97void format_trailers_from_commit(struct strbuf *out, const char *msg,
  98                                 const struct process_trailer_options *opts);
  99
 100#endif /* TRAILER_H */