1 #ifndef MC__DIFFVIEW_INTERNAL_H
2 #define MC__DIFFVIEW_INTERNAL_H
3
4 #include "lib/global.h"
5 #include "lib/mcconfig.h"
6 #include "lib/search.h"
7 #include "lib/tty/color.h"
8 #include "lib/widget.h"
9
10
11
12 typedef int (*DFUNC) (void *ctx, int ch, int line, off_t off, size_t sz, const char *str);
13 typedef int PAIR[2];
14
15 #define error_dialog(h, s) query_dialog(h, s, D_ERROR, 1, _("&Dismiss"))
16
17
18
19 typedef enum
20 {
21 DATA_SRC_MEM = 0,
22 DATA_SRC_TMP = 1,
23 DATA_SRC_ORG = 2
24 } DSRC;
25
26 typedef enum
27 {
28 DIFF_LEFT = 0,
29 DIFF_RIGHT = 1,
30 DIFF_COUNT = 2
31 } diff_place_t;
32
33 typedef enum
34 {
35 DIFF_NONE = 0,
36 DIFF_ADD = 1,
37 DIFF_DEL = 2,
38 DIFF_CHG = 3
39 } DiffState;
40
41
42
43 typedef struct
44 {
45 int fd;
46 int pos;
47 int len;
48 char *buf;
49 int flags;
50 void *data;
51 } FBUF;
52
53 typedef struct
54 {
55 int a[2][2];
56 int cmd;
57 } DIFFCMD;
58
59
60 typedef struct
61 {
62 int off;
63 int len;
64 } BRACKET[DIFF_COUNT];
65
66 typedef struct
67 {
68 int ch;
69 int line;
70 union
71 {
72 off_t off;
73 size_t len;
74 } u;
75 void *p;
76 } DIFFLN;
77
78 typedef struct
79 {
80 FBUF *f;
81 GArray *a;
82 DSRC dsrc;
83 } PRINTER_CTX;
84
85 typedef struct WDiff
86 {
87 Widget widget;
88
89 const char *args;
90 const char *file[DIFF_COUNT];
91 char *label[DIFF_COUNT];
92 FBUF *f[DIFF_COUNT];
93 const char *backup_sufix;
94 gboolean merged[DIFF_COUNT];
95 GArray *a[DIFF_COUNT];
96 GPtrArray *hdiff;
97 int ndiff;
98 DSRC dsrc;
99
100 gboolean view_quit;
101
102 int height;
103 int half1;
104 int half2;
105 int width1;
106 int width2;
107 int bias;
108 gboolean new_frame;
109 int skip_rows;
110 int skip_cols;
111 gboolean display_symbols;
112 int display_numbers;
113 gboolean show_cr;
114 int tab_size;
115 diff_place_t ord;
116 gboolean full;
117
118 #ifdef HAVE_CHARSET
119 gboolean utf8;
120
121 GIConv converter;
122 #endif
123
124 struct
125 {
126 int quality;
127 gboolean strip_trailing_cr;
128 gboolean ignore_tab_expansion;
129 gboolean ignore_space_change;
130 gboolean ignore_all_space;
131 gboolean ignore_case;
132 } opt;
133
134
135 struct
136 {
137 mc_search_t *handle;
138 gchar *last_string;
139
140 ssize_t last_found_line;
141 ssize_t last_accessed_num_line;
142 } search;
143 } WDiff;
144
145
146
147
148
149
150 void dview_search_cmd (WDiff * dview);
151 void dview_continue_search_cmd (WDiff * dview);
152
153 #endif