Junio C Hamano | d1bf0e0 | 2011-05-20 12:59:01 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2011, Google Inc. |
| 3 | */ |
| 4 | #ifndef CONVERT_H |
| 5 | #define CONVERT_H |
| 6 | |
| 7 | enum safe_crlf { |
| 8 | SAFE_CRLF_FALSE = 0, |
| 9 | SAFE_CRLF_FAIL = 1, |
Torsten Bögershausen | 6523728 | 2016-06-28 10:01:13 +0200 | [diff] [blame] | 10 | SAFE_CRLF_WARN = 2, |
| 11 | SAFE_CRLF_RENORMALIZE = 3 |
Junio C Hamano | d1bf0e0 | 2011-05-20 12:59:01 -0700 | [diff] [blame] | 12 | }; |
| 13 | |
| 14 | extern enum safe_crlf safe_crlf; |
| 15 | |
| 16 | enum auto_crlf { |
| 17 | AUTO_CRLF_FALSE = 0, |
| 18 | AUTO_CRLF_TRUE = 1, |
| 19 | AUTO_CRLF_INPUT = -1 |
| 20 | }; |
| 21 | |
| 22 | extern enum auto_crlf auto_crlf; |
| 23 | |
| 24 | enum eol { |
| 25 | EOL_UNSET, |
| 26 | EOL_CRLF, |
| 27 | EOL_LF, |
| 28 | #ifdef NATIVE_CRLF |
| 29 | EOL_NATIVE = EOL_CRLF |
| 30 | #else |
| 31 | EOL_NATIVE = EOL_LF |
| 32 | #endif |
| 33 | }; |
| 34 | |
| 35 | extern enum eol core_eol; |
Torsten Bögershausen | a7630bd | 2016-01-16 07:50:02 +0100 | [diff] [blame] | 36 | extern const char *get_cached_convert_stats_ascii(const char *path); |
| 37 | extern const char *get_wt_convert_stats_ascii(const char *path); |
| 38 | extern const char *get_convert_attr_ascii(const char *path); |
Junio C Hamano | d1bf0e0 | 2011-05-20 12:59:01 -0700 | [diff] [blame] | 39 | |
| 40 | /* returns 1 if *dst was used */ |
| 41 | extern int convert_to_git(const char *path, const char *src, size_t len, |
| 42 | struct strbuf *dst, enum safe_crlf checksafe); |
| 43 | extern int convert_to_working_tree(const char *path, const char *src, |
| 44 | size_t len, struct strbuf *dst); |
| 45 | extern int renormalize_buffer(const char *path, const char *src, size_t len, |
| 46 | struct strbuf *dst); |
Steffen Prohaska | 7ce7c76 | 2014-08-21 18:05:08 +0200 | [diff] [blame] | 47 | static inline int would_convert_to_git(const char *path) |
Jeff King | 92ac319 | 2012-02-24 17:02:37 -0500 | [diff] [blame] | 48 | { |
Steffen Prohaska | 7ce7c76 | 2014-08-21 18:05:08 +0200 | [diff] [blame] | 49 | return convert_to_git(path, NULL, 0, NULL, 0); |
Jeff King | 92ac319 | 2012-02-24 17:02:37 -0500 | [diff] [blame] | 50 | } |
Steffen Prohaska | 9035d75 | 2014-08-26 17:23:25 +0200 | [diff] [blame] | 51 | /* Precondition: would_convert_to_git_filter_fd(path) == true */ |
| 52 | extern void convert_to_git_filter_fd(const char *path, int fd, |
| 53 | struct strbuf *dst, |
| 54 | enum safe_crlf checksafe); |
| 55 | extern int would_convert_to_git_filter_fd(const char *path); |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 56 | |
| 57 | /***************************************************************** |
| 58 | * |
Ondřej Bílka | 749f763 | 2013-07-22 23:02:23 +0200 | [diff] [blame] | 59 | * Streaming conversion support |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 60 | * |
| 61 | *****************************************************************/ |
| 62 | |
| 63 | struct stream_filter; /* opaque */ |
| 64 | |
| 65 | extern struct stream_filter *get_stream_filter(const char *path, const unsigned char *); |
| 66 | extern void free_stream_filter(struct stream_filter *); |
| 67 | extern int is_null_stream_filter(struct stream_filter *); |
| 68 | |
| 69 | /* |
| 70 | * Use as much input up to *isize_p and fill output up to *osize_p; |
| 71 | * update isize_p and osize_p to indicate how much buffer space was |
| 72 | * consumed and filled. Return 0 on success, non-zero on error. |
Junio C Hamano | 4ae6670 | 2011-05-21 14:05:51 -0700 | [diff] [blame] | 73 | * |
| 74 | * Some filters may need to buffer the input and look-ahead inside it |
| 75 | * to decide what to output, and they may consume more than zero bytes |
| 76 | * of input and still not produce any output. After feeding all the |
| 77 | * input, pass NULL as input and keep calling this function, to let |
| 78 | * such filters know there is no more input coming and it is time for |
| 79 | * them to produce the remaining output based on the buffered input. |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 80 | */ |
| 81 | extern int stream_filter(struct stream_filter *, |
| 82 | const char *input, size_t *isize_p, |
| 83 | char *output, size_t *osize_p); |
| 84 | |
Junio C Hamano | d1bf0e0 | 2011-05-20 12:59:01 -0700 | [diff] [blame] | 85 | #endif /* CONVERT_H */ |