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, |
| 10 | SAFE_CRLF_WARN = 2 |
| 11 | }; |
| 12 | |
| 13 | extern enum safe_crlf safe_crlf; |
| 14 | |
| 15 | enum auto_crlf { |
| 16 | AUTO_CRLF_FALSE = 0, |
| 17 | AUTO_CRLF_TRUE = 1, |
| 18 | AUTO_CRLF_INPUT = -1 |
| 19 | }; |
| 20 | |
| 21 | extern enum auto_crlf auto_crlf; |
| 22 | |
| 23 | enum 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 | |
| 34 | extern enum eol core_eol; |
| 35 | |
| 36 | /* returns 1 if *dst was used */ |
| 37 | extern int convert_to_git(const char *path, const char *src, size_t len, |
| 38 | struct strbuf *dst, enum safe_crlf checksafe); |
| 39 | extern int convert_to_working_tree(const char *path, const char *src, |
| 40 | size_t len, struct strbuf *dst); |
| 41 | extern int renormalize_buffer(const char *path, const char *src, size_t len, |
| 42 | struct strbuf *dst); |
Jeff King | 92ac319 | 2012-02-24 17:02:37 -0500 | [diff] [blame] | 43 | static 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 | } |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 48 | |
| 49 | /***************************************************************** |
| 50 | * |
Ondřej Bílka | 749f763 | 2013-07-22 23:02:23 +0200 | [diff] [blame] | 51 | * Streaming conversion support |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 52 | * |
| 53 | *****************************************************************/ |
| 54 | |
| 55 | struct stream_filter; /* opaque */ |
| 56 | |
| 57 | extern struct stream_filter *get_stream_filter(const char *path, const unsigned char *); |
| 58 | extern void free_stream_filter(struct stream_filter *); |
| 59 | extern 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. |
Junio C Hamano | 4ae6670 | 2011-05-21 14:05:51 -0700 | [diff] [blame] | 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. |
Junio C Hamano | b669109 | 2011-05-20 14:33:31 -0700 | [diff] [blame] | 72 | */ |
| 73 | extern int stream_filter(struct stream_filter *, |
| 74 | const char *input, size_t *isize_p, |
| 75 | char *output, size_t *osize_p); |
| 76 | |
Junio C Hamano | d1bf0e0 | 2011-05-20 12:59:01 -0700 | [diff] [blame] | 77 | #endif /* CONVERT_H */ |