convert.hon commit mergetools/meld: make usage of `--output` configurable and more robust (b12d045)
   1/*
   2 * Copyright (c) 2011, Google Inc.
   3 */
   4#ifndef CONVERT_H
   5#define CONVERT_H
   6
   7enum safe_crlf {
   8        SAFE_CRLF_FALSE = 0,
   9        SAFE_CRLF_FAIL = 1,
  10        SAFE_CRLF_WARN = 2
  11};
  12
  13extern enum safe_crlf safe_crlf;
  14
  15enum auto_crlf {
  16        AUTO_CRLF_FALSE = 0,
  17        AUTO_CRLF_TRUE = 1,
  18        AUTO_CRLF_INPUT = -1
  19};
  20
  21extern enum auto_crlf auto_crlf;
  22
  23enum eol {
  24        EOL_UNSET,
  25        EOL_CRLF,
  26        EOL_LF,
  27#ifdef NATIVE_CRLF
  28        EOL_NATIVE = EOL_CRLF
  29#else
  30        EOL_NATIVE = EOL_LF
  31#endif
  32};
  33
  34extern enum eol core_eol;
  35
  36/* returns 1 if *dst was used */
  37extern int convert_to_git(const char *path, const char *src, size_t len,
  38                          struct strbuf *dst, enum safe_crlf checksafe);
  39extern int convert_to_working_tree(const char *path, const char *src,
  40                                   size_t len, struct strbuf *dst);
  41extern int renormalize_buffer(const char *path, const char *src, size_t len,
  42                              struct strbuf *dst);
  43static inline int would_convert_to_git(const char *path, const char *src,
  44                                       size_t len, enum safe_crlf checksafe)
  45{
  46        return convert_to_git(path, src, len, NULL, checksafe);
  47}
  48
  49/*****************************************************************
  50 *
  51 * Streaming conversion support
  52 *
  53 *****************************************************************/
  54
  55struct stream_filter; /* opaque */
  56
  57extern struct stream_filter *get_stream_filter(const char *path, const unsigned char *);
  58extern void free_stream_filter(struct stream_filter *);
  59extern int is_null_stream_filter(struct stream_filter *);
  60
  61/*
  62 * Use as much input up to *isize_p and fill output up to *osize_p;
  63 * update isize_p and osize_p to indicate how much buffer space was
  64 * consumed and filled. Return 0 on success, non-zero on error.
  65 *
  66 * Some filters may need to buffer the input and look-ahead inside it
  67 * to decide what to output, and they may consume more than zero bytes
  68 * of input and still not produce any output. After feeding all the
  69 * input, pass NULL as input and keep calling this function, to let
  70 * such filters know there is no more input coming and it is time for
  71 * them to produce the remaining output based on the buffered input.
  72 */
  73extern int stream_filter(struct stream_filter *,
  74                         const char *input, size_t *isize_p,
  75                         char *output, size_t *osize_p);
  76
  77#endif /* CONVERT_H */