#include "libbb.h"
+#define dbg_error_msg(...) ((void)0)
+//#define dbg_error_msg(...) bb_error_msg(__VA_ARGS__)
+
// #define FSIZE_MAX 32768
/* NOINLINEs added to prevent gcc from merging too much into diffreg()
{
int i, k, y, j, l;
int oldc, tc, oldl;
- unsigned int numtries;
+ unsigned numtries;
+ int isq = isqrt(n);
#if ENABLE_FEATURE_DIFF_MINIMAL
- const unsigned int bound =
- (option_mask32 & FLAG_d) ? UINT_MAX : MAX(256, isqrt(n));
+ const unsigned bound =
+ (option_mask32 & FLAG_d) ? UINT_MAX : MAX(256, isq);
#else
- const unsigned int bound = MAX(256, isqrt(n));
+ const unsigned bound = MAX(256, isq);
#endif
k = 0;
rewind(f);
cnt = fread(g_read_buf, 1, COMMON_BUFSIZE, f);
for (i = 0; i < cnt; i++) {
- if (!isprint(g_read_buf[i])
+ if (!isprint_asciionly(g_read_buf[i])
&& !isspace(g_read_buf[i])
) {
return 0;
if (context_idx < 0)
return;
+ dbg_error_msg("dumping %d context_vecs", context_idx+1);
+
b = d = 0; /* gcc */
lowa = MAX(1, cvp->a - opt_U_context);
upb = MIN(nlen[0], context_vector[context_idx].b + opt_U_context);
int a, int b, int c, int d)
{
if ((a > b && c > d) || (option_mask32 & FLAG_q)) {
+//compat BUG: "diff -ub F1 F2" will output nothing, but will exit 1
+//if F1 and F2 differ only in whitespace. "standard" diff exits 0.
+//This is the place where this erroneous exitcode is set:
+ dbg_error_msg("%d: abcd:%d,%d,%d,%d, anychange=1", __LINE__, a,b,c,d);
anychange = 1;
return;
}
context_vector[context_idx].b = b;
context_vector[context_idx].c = c;
context_vector[context_idx].d = d;
+ dbg_error_msg("new context_vec[%d]:%d,%d,%d,%d", context_idx, a,b,c,d);
anychange = 1;
}
closem:
if (anychange) {
exit_status |= 1;
+ dbg_error_msg("exit_status|=1 = %d", exit_status);
if (rval == D_SAME)
rval = D_DIFFER;
}