-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChangeLog
1756 lines (1246 loc) · 53.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2024-09-10 Philippe Troin <phil@fifi.org>
* README.md: Include submodules when cloning from github.
* tdiff.spec (URL): Use %{name}.
* Makefile.am (dist_doc_DATA): Add ChangeLog.
2024-02-06 Philippe Troin <phil@fifi.org>
* tdiff.c (reportMissing): Rename to report_missing.
(reportMissingAcl): Rename to report_missing_acl.
(reportMissingFile): Rename to report_missing_file.
(reportMissingHardLink): Rename to report_missing_hard_link.
(reportMissingXattr): Rename to report_missing_xattr.
(getXattrList): Rename to get_xattr_list.
(getXattr): Rename to get_xattr.
(compareXattrs): Rename to compare_xattrs.
(dropAclXattrs): Rename to drop_acl_xattrs.
(getAcl): Rename to get_acl.
(getAclList): Rename to get_acl_list.
(reportMissingAcl): Rename to report_missing_acl.
(compareAcls): Rename to compare_acls.
(diffacl): Rename to diff_acl.
(openFile): Rename to open_path.
(getDirList): Rename to get_dir_list.
(compareFileEntries): Rename to compare_directories.
(getFileType): Rename get_file_type.
(formatTime): Rename to format_time.
(reportTimeDiscrepancy): Rename to report_time_discrepancy
(cmpFiles): Rename to compare_files.
(printopts): Rename to print_options.
(execprocess): Rename to exec_process.
(applyPresets): Rename to apply_preset.
(aclCompareClientData_t): Rename to acl_compare_client_data_t.
(aclCompareClientData_s): Rename to acl_compare_client_data_s.
(report_missing, report_missing_xattr, compare_xattrs)
(report_missing_acl, compare_acls, diff_acl)
(report_missing_file, compare_directories, dodiff): Rename
clientData to client_data.
(report_missing_acl, compare_acls): Rename commonClientData to
common_client_data.
(options_t): Rename verbosityLevel to verbosity_level.
(get_xattr_list, get_xattr, xreadlink): Rename bufSize to buf_size.
(format_time): Rename obufsize to buf_size.
(apply_preset): Rename presetLevel to preset_level.
(main): Rename presetNames to preset_names.
(get_xattr_list): Rename rSize to read_size;
(get_xattr): Rename retSize to returned_size.
* tdiff.c (xperror, getXattrList, getXattr, compareXattrs)
(dropAclXattrs, getAclList, reportMissingAcl, compareAcls)
(diffacl, getDirList, getFileType, get_terminal_width)
(print_list, show_version, show_help, get_octal_arg, printopts)
(pconcat, execprocess, xreadlink, dodiff): Make static.
* tdiff.c (openFile): Factor out from multiple locations where a
file is opened.
(getDirList, cmpFiles, xreadlink): Use per-file file descriptor to
have a single open/close per pair of compared files.
(dodiff): Only open every file at most once.
* have_subsecond_times.c (ATTRIBUTE_UNUSED): Removed unused macro.
* make_door.c (UNUSED): New macro to mark an unused variable or
parameter.
(ATTRIBUTE_UNUSED): Remove.
(door_proc): ATTRIBUTE_UNUSED -> UNUSED.
* tdiff.c (UNUSED): New macro to mark an unused variable or
parameter.
(ATTRIBUTE_UNUSED): Remove.
(compareAcls, compareFileEntries): ATTRIBUTE_UNUSED -> UNUSED.
* tdiff.c (xreadlink): Off-by-one in xreadlink which could lead to
memory corruption for symbolic links of length of a multiple of
1024. Unlikely to be a problem as most filesystems limit symbolic
link sizes to lower than 1024.
* tdiff.1: Update Copyright notice.
2024-01-30 Philippe Troin <phil@fifi.org>
* NEWS:
* README.md:
* tdiff.spec:
Add changelog, update to 0.8.7.
Fix typos.
Drop Travis CI badges.
* configure.ac: Updated to 0.8.7.
* tdiff.1: Update with new features shown in --version.
* m4/fi_check_shell_functions_dir.m4
(FI_CHECK_SHELL_FUNCTIONS_DIR): Modernize (AC_HELP_STRING ->
AS_HELP_STRING).
* configure.ac (AC_CONFIG_HEADERS): Quote properly.
* tests/test.lib.sh: Skip time and block checks if configured.
* Makefile.am (AM_TESTS_ENVIRONMENT): Pass down
ENABLE_BLOCK_CHECKS and ENABLE_TIME_CHECKS to test environment.
* configure.ac (--enable/disable-block-checks)
(--enable/disable-time-checks): Add toggles for disabling or
enabling part of the regressions related to time and file system
blocks. Auto-detect defaults for Linux (disable time checks on
s390x, aarch64, ppc64le; disable block checks on ppc64le).
* tdiff.spec (%files): Wildcard man page compression
extension. Different distributions (eg. Mageia) compress man pages
differently.
2024-01-29 Philippe Troin <phil@fifi.org>
* tdiff.c (show_version): Update Copyright notice.
* tdiff.c (xreadlink): Use Linux-specific open with
O_PATH|O_NOFOLLOW|O_NOATIME followed by readlinkat(fd, "") to
avoid updating symbolic links st_atime access time.
(show_version): Show readlink method in --version.
* configure.ac (HAVE_O_PATH, HAVE_O_FOLLOW, HAVE_READLINKAT): Add.
* tdiff.c (getAcl, getAclList): Factor reading ACLs out of
getAclList() info getAcl().
(diffacl): Separate reading the ACL from converting it to string
and comparing it so that acl_cmp() can be used (if available) as
acl_to_text() is expensive.
(show_version): Show acl_cmp=yes or no in --version.
* configure.ac (HAVE_ACL_CMP): Test for acl_cmp() (Linux extension).
* tests/contents.lib.sh:
* tests/error-unowned-directory.test:
* tests/error-unowned-file1.test:
* tests/error-unowned-file2.test:
* tests/error-unreadable-directory.test:
* tests/error-unreadable-file.test:
* tests/fakeroot.lib.sh:
* tests/mode.lib.sh:
* tests/option-follow-symlinks.test:
* tests/parsing-duplicate-exec.test:
* tests/parsing-missing-placeholders.test:
* tests/parsing-missing-semicolon.test:
* tests/parsing-wrong-preset.test:
* tests/pre-check-file.lib.sh:
* tests/preset.lib.sh:
* tests/preset-alltimes.test:
* tests/preset-amtimes.test:
* tests/preset-contents.test:
* tests/preset-hardlinks.test:
* tests/preset-missing.test:
* tests/preset-mode.test:
* tests/preset-mtime.test:
* tests/preset-none.test:
* tests/preset-notimes.test:
* tests/preset-owner.test:
* tests/require-acl.lib.sh:
* tests/require-xattr.lib.sh:
* tests/toggle-acl.test:
* tests/toggle-atime.test:
* tests/toggle-blocks.test:
* tests/toggle-contents-always-diff.test:
* tests/toggle-contents-always.test:
* tests/toggle-contents-exec.test:
* tests/toggle-contents.test:
* tests/toggle-ctime.test:
* tests/toggle-directories.test:
* tests/toggle-exclude.test:
* tests/toggle-flag-archived.test:
* tests/toggle-gid.test:
* tests/toggle-hardlinks.test:
* tests/toggle-major.test:
* tests/toggle-minor.test:
* tests/toggle-mode-and.test:
* tests/toggle-mode-or.test:
* tests/toggle-mode.test:
* tests/toggle-mtime.test:
* tests/toggle-nlink.test:
* tests/toggle-size.test:
* tests/toggle-type-door.test:
* tests/toggle-type-root.test:
* tests/toggle-type-sock.test:
* tests/toggle-type.test:
* tests/toggle-uid.test:
* tests/toggle-xattr.test:
* tests/type.lib.sh:
Add Copyright notice.
* tests/test.lib.sh: Add Copyright notice.
(acl_filter, xid_filter, xtime_filter): Convert to sed regexes to
extended regexes. FreeBSD does not deal with regex alternation (|)
in legacy regexes.
* configure.ac (HAVE_XATTR): Check against lgetxattr, not
getxattr. Fixes bug introduced in 0ccc359 that skips xattr tests.
* build-android: Add Copyright notice.
(build): Build statically. Bump Android SDK to 30.
* tdiff.c (dropAclXattrs): Also ignore trusted.SGI_ACL_DEFAULT
xattr. These are only present on XFS directories. SGI_ACL_FILE
xattr was already ignored.
* tests/toggle-acl.test (setup): Specify ACL masks
correctly. Colon should be doubled. Found on FreeBSD 14 which is
picky about ACL syntax.
2022-05-20 Philippe Troin <phil@fifi.org>
* tdiff.c: Update copyright notice.
* NEWS:
* README.md:
* tdiff.spec:
Add changelog, update to 0.8.6.
* configure.ac: Updated to 0.8.6.
* linux_getdents64.c (getdents64): Update prototype.
* utils.c (pmem): Prefer mallinfo2 if found over mallinfo.
* configure.ac (HAVE_MALLINFO2): Detect mallinfo2() on newer
glibcs (2.34).
2019-11-02 Philippe Troin <phil@fifi.org>
* tdiff.spec: Fix RHEL Copr builds.
2019-11-01 Philippe Troin <phil@fifi.org>
* configure.ac: Update to 0.8.5.
* tdiff.spec:
* README.md:
* NEWS:
Add changelog, update to 0.8.5.
* tdiff.c (get_terminal_width): Change terminal width environment
variable to COLUMNS.
(get_terminal_width): Ignore zero terminal width as returned by
TIOCGWINSZ.
2019-08-25 Philippe Troin <phil@fifi.org>
* Makefile.am (EXTRA_DIST): Add test-show-results.
* tdiff.spec (BuildRequires): Add autoconf, automake, libacl-devel.
(%build): Run autoreconf if config.aux/missing is missing (fixes
Mageia copr builds).
(%build): Pass --docdir to configure.
(%build): Run test-show-results on test-suite failure.
(%files): Use _docdir again, be consistent SuSE doc location.
(Release): Bump to 3.
2019-08-24 Philippe Troin <phil@fifi.org>
* tdiff.spec (BuildRequires): Add bash, gcc, make.
(%files): Don't use _docdir, it's broken with copr SuSE builds.
2019-08-24 Philippe Troin <phil@fifi.org>
* tdiff.spec (BuildRequires): Add zsh.
(Source): Use URL.
(Release): Bump to 2.
2019-06-14 Philippe Troin <phil@fifi.org>
* configure.ac:
Bump release to 0.8.4.
* README.md:
* NEWS:
* tdiff.spec:
Update changelog, bump release to 0.8.4.
* tdiff.1.html:
* tdiff.1.pdf:
Generate fresh copies with 0.8.4 updates.
2019-06-13 Philippe Troin <phil@fifi.org>
* Makefile.am (EXTRA_DIST): Add
tests/option-follow-symlinks.out.gold.
(TESTS): Add tests/option-follow-symlinks.test.
* tests/option-follow-symlinks.test:
* tests/option-follow-symlinks.out.gold:
Add.
* tdiff.c (dodiff): Don't print any reference to "hard" linked
files when --follow-symlinks is active as symlinked entries will
be skipped by the hard link cache.
* _tdiff.zsh: Detect --flags/--acl/--xattr in --help correctly.
* tdiff.c (show_help): Fix wrong synopsis on -W/--exec-always-diff.
* tdiff.1: Add -O/--follow-symlinks.
* tdiff.bash (_tdiff): Add -O/--follow-symlinks.
* _tdiff.zsh (args): Add -O/--follow-symlinks.
* tdiff.c (struct option_s): Add follow_symlinks.
(show_help): Add -O/--follow_symlinks.
(printopts): Show follow_symlinks.
(dodiff): Pick either stat or lstat to stat the file depending
upon follow_symlinks.
(main): Handle -O/--follow_symlinks.
* _tdiff.zsh (args): Make -V/--version and -h/--help not repeatable.
2019-05-22 Philippe Troin <phil@fifi.org>
* configure.ac:
Bump release to 0.8.3.
* README.md:
* NEWS:
* tdiff.spec:
Update changelog, bump release to 0.8.3.
2019-05-21 Philippe Troin <phil@fifi.org>
* tests/test.lib.sh (sleep_if_coarse_time): Force sleeping when
running under Travis.
* tdiff.c (cmpFiles): Pass pointers to struct stat.
(get_terminal_width): Set errno to zero *before* strtoul().
Change width to correct type.
* genhash.c (gh_stats): Don't divide by zero.
* tdiff.c (getDirList): Always close the file descriptor.
2019-05-12 Philippe Troin <phil@fifi.org>
* configure.ac:
Bump release to 0.8.2.
* README.md:
* NEWS:
* tdiff.spec:
Update changelog, bump release to 0.8.2.
* tdiff.c: HAVE_GETXATTR -> HAVE_LGETXATTR.
* configure.ac: Check for lgetxattr instead of getxattr: We're
using lgetxattr anyways, and MacOSX has an incompatible getxattr
in <sys/xattr.h>.
* .gitignore: Add the files created by build-android.
* build-android: Create.
* tdiff.c: Include in <sys/xattr.h> instead of <attr/xattr.h>.
* configure.ac (HAVE_XATTR): Look in <sys/xattr.h> instead of
<attr/xattr.h>.
2019-05-07 Philippe Troin <phil@fifi.org>
* tdiff.1.html:
* tdiff.1.pdf:
Generate fresh copies.
* tdiff.1:
* configure.ac:
Bump release to 0.8.1.
* README.md:
* NEWS:
* tdiff.spec:
Update changelog, bump release to 0.8.1.
* .gitignore: Add make_door, have_subsecond_times.
* tdiff.1: Elaborate on opening files with O_NOATIME.
* tests/toggle-flag-archived.test (flag): Strip the toggle-
file-name prefix.
* tests/parsing-duplicate-exec.test (duplicate_exec_filter):
Filter out the SVr4 diff "No differences encountered".
* tests/test.lib.sh (sleep_if_coarse_time): Call
have_subsecond_times to find out if the build directory actually
has subsecond times.
* Makefile.am (noinst_PROGRAMS): Add have_subsecond_times.
(have_subsecond_times_SOURCES): Create.
* have_subsecond_times.c: Create.
* Makefile.am (libtdiff_a_SOURCES): Add st_xtime_ns.h.
* st_xtime_ns.h: Create.
* tdiff.c: Move the ST_XTIMENSEC macros to their own st_xtime_ns.h
header.
* tdiff.spec (BuildRequires): Add fakeroot.
* tests/error-unowned-file2-*: Create.
* Makefile.am (EXTRA_DIST, TESTS): Add tests/error-unowned-file2-*.
* tests/error-unowned-file-*: Rename to tests/error-unowned-file1-*.
* Makefile.am (EXTRA_DIST, TESTS): Rename tests/error-unowned-file-*
to tests/errors-unowned-file1-*.
* tests/error-unwritable-*: Rename to tests/error-unowned-*.
* Makefile.am (EXTRA_DIST, TESTS): Rename tests/error-unwritable-*
to tests/errors-unowned-*.
* tests/error-unwritable-directory.test:
* tests/error-unwritable-directory.out.gold:
* tests/error-unwritable-file.test:
* tests/error-unwritable-file.out.gold:
Create.
* Makefile.am (EXTRA_DIST, TESTS): Add tests/error-unwritable.
* tests/test.lib.sh (run_test): Print the tdiff command line.
(run_test): Allow overriding the tdiff arguments by defining
TDIFF_ARG1 and TDIFF_ARG2.
* tdiff.c (getDirList, cmpFiles): When an open/opendir fails with
EPERM and O_NOATIME was in the flags, retry without it. O_NOATIME
is only allowed for root and file owner.
* tests/error-*: Rename to tests/error-unreadable-*.
* Makefile.am (EXTRA_DIST, TESTS): Rename tests/error-* to
tests/error-unreadable-*.
2019-05-03 Philippe Troin <phil@fifi.org>
* tests/parsing-duplicate-exec.test (duplicate_exec_filter):
FreeBSD's sed is really dated, no alternation in regexes.
* Makefile.am (TESTS): Add tests/parsing-*.test.
(EXTRA_DIST): Add tests/parsing-*.out.gold.
* tests/parsing-duplicate-exec.out.gold:
* tests/parsing-duplicate-exec.test:
* tests/parsing-missing-placeholders.out.gold:
* tests/parsing-missing-placeholders.test:
* tests/parsing-missing-semicolon.out.gold:
* tests/parsing-missing-semicolon.test:
* tests/parsing-wrong-preset.out.gold:
* tests/parsing-wrong-preset.test:
Create.
* tests/toggle-*.out.gold: Update.
* tests/*.{test,out.gold}: Rename toggle tests and results to
tests/toggle-*.{test,out.gold}.
* Makefile.am (TESTS): Rename toggle tests tests/*.test to
tests/toggle-*.test.
(EXTRA_DIST): Rename toggle tests results tests/*.out.gold to
tests/toggle-*.out.gold.
* tdiff.c (reportMissing, getAclList, reportMissingFile, dodiff)
(main): Don't use abort(), print a nice error message and exit 4.
* configure.ac (HAVE_NANOSECOND_TIME_RESOLUTION): Fix feature
shell variable name for having st_atimespec stat(2) fields.
This will cause a regression failure on MacOSX which has
st_atimespec but the nanoseconds fields are empty.
* tdiff.1.html:
* tdiff.1.pdf:
Generate fresh copies.
* tdiff.1:
* configure.ac:
Bump release to 0.8.
* README.md:
* NEWS:
* tdiff.spec:
Update changelog, bump release to 0.8.
* tdiff.c (get_exec_args): Exit directly if the ending semicolon
is missing, there are no more arguments to consume and getopt
returns non-sensical values. Remove return value.
(main): Do not check get_exec_args() return value;
* tdiff.spec (files): Use %{_docdir}/%{name}, not just %{_docdir}.
* tests/preset.lib.sh (preset_size_filter): Filter out node1's
size on Solaris.
* tdiff.1: Update: --size and --blocks checks work on all file
types but directories.
* tests/preset.lib.sh (setup): Use sync_if_needed.
When running as root on Solaris, always sleep as device nodes for
some reason only have second st_xtime resolution.
* tests/blocks.test (setup): Use sync_if_needed.
* tests/test.lib.sh (sync_if_needed): Create. Only call sync when
on Solaris.
* Makefile.am (AM_TESTS_ENVIRONMENT): Export TARGET_OS.
* configure.ac: AC_SUBST(TARGET_OS).
* tests/error-file.out.gold: Update.
* tests/error-file.test (setup): Set permissions on all files.
* tests/preset-flags-alltimes.out.gold: Update to reorder
time-related option lists that were changed a bit back but not
updated for the -flags- gold output.
* tdiff.c (CHECK_FLAG): Fix missing semicolon.
* tdiff.1:
* README.md:
Enhance, fix typos.
2019-05-02 Philippe Troin <phil@fifi.org>
* tests/error-directory.out.gold: Update.
* tests/error-directory.test (setup): Create another case where
both directories are unreadable.
* tdiff.c (dodiff): Print a message about directories being
skipped when unreadable.
* tests/error-file.out.gold:
* tests/error-file.test:
Create.
* Makefile.am (TESTS): Add tests/error-file.test.
(EXTRA_DIST): Add tests/error-file.out.gold.
* tdiff.c (cmpFiles): Use exit codes to communicate back to caller
if no differences were found, there was a difference or there was
an error.
(dodiff): When calling cmpFile, interpret result. Print "contents
comparison skipped" upon error instead of just "contents differ".
* Makefile.am (EXTRA_DIST, TESTS): tests/error.*->
tests/error-directory.*.
* tests/error.*: Rename to tests/error-directory.*.
* tests/hardlinks.out.gold (tdiff):
* tests/directories.out.gold (tdiff):
Update, exit code should be 2.
* tdiff.c (reportMissingXattr, reportMissingAcl)
(reportMissingFile, reportMissingHardLink): Return if the value
was found different or not (a discrepancy may not need to be
reported if a toggle option turn it off).
* str_list.h: Update str_list_compare prototype.
* str_list.c (str_list_compare): When missing entries are
detected, delegate signaling an error to the reportMissing
callback, which must now return an int.
* Makefile.am (clean-local): Create, erasing the test directories.
* str_list.c (str_list_compare): Use BUMP_EXIT_CODE
to manipulate exit code.
* tdiff.c (compareXattrs, compareAcls, dodiff): Use BUMP_EXIT_CODE
to manipulate exit code.
* tdiff.h (BUMP_EXIT_CODE): Define.
* tests/mtime.out.gold: Update, error code should be 2.
* tdiff.c (dodiff): Get rid of localerr, just operate on rv.
Report a diff error when mtimes differ.
* str_list.c (str_list_compare): Get rid of the useless localerr.
* tdiff.c (cmpFiles): Don't say open & close twice on open/close
error messages.
* m4/fi_format_man.m4 (FI_FORMAT_MAN): Add rules to optionally
install/uninstall HTML and PDF documentation.
* tdiff.1:
* tests/preset-*alltimes.out.gold:
* tests/atime.test (atime_filter):
* tdiff.c (struct option_s, show_help, printopts, dodiff, main):
* tdiff.bash (_tdiff):
* _tdiff.zsh (args):
Rename -r/-R (--atime) to -y/-Y to free up the -r option.
Reorder time-related option lists.
* tdiff.c (main): Long options for --acl/--noacl were added to long options
structure on wrong feature macro.
* tdiff.1:
* _tdiff.zsh (args):
* tdiff.bash (_tdiff):
* tdiff.c (struct option_s, show_help, printopts, main):
Reorder options consistently.
* tests/mode-and.test (tdiff_options):
* tests/mode-or.test (tdiff_options):
* tdiff.bash (_tdiff):
* tdiff.c (show_help, main):
* _tdiff.zsh (args):
Rename -| to -o and -& to -a.
* tdiff.c (get_octal_arg): Show base on number parsing error.
* tdiff.1: Update the --version description.
* tdiff.c (show_version): Show time granularity (seconds or
nanoseconds).
* tests/preset.lib.sh (setup):
* tests/mtime.test (setup):
* tests/ctime.test (setup):
Use sleep_if_coarse_time instead of sleep.
* tests/test.lib.sh (sleep_if_coarse_time): Create, only sleep if
we don't have nanosecond time resolution.
* Makefile.am (AM_TESTS_ENVIRONMENT): Pass
HAVE_NANOSECOND_TIME_RESOLUTION down to environment.
* configure.ac: AC_SUBST(HAVE_NANOSECOND_TIME_RESOLUTION) for
regressions.
* tdiff.spec (files): Ship %{_docdir} instead of individual %doc
files.
* Makefile.am (EXTRA_DIST): Move README.md to dist_doc_DATA.
(dist_doc_DATA): Define with README, README.md, NEWS.
* _tdiff.zsh:
* tdiff.bash (_tdiff):
Add presets. Remove -a/--all/-A/--no-all.
2019-05-01 Philippe Troin <phil@fifi.org>
* README.md:
* tdiff.1:
Add presets. Remove -a/--all/-A/--no-all.
* tests/preset-missing.test (tdiff_options):
* tests/preset-notimes.test (tdiff_options):
* tests/preset-alltimes.test (tdiff_options):
Use alternate preset names.
* tdiff.c (show_help): Show preset 6 as the default.
(main): Add aliases to preset names: default aliased to notimes,
type aliased to missing.
* tdiff.1: Shuffle the manpage around 3 option subsections
(standard, toggles, miscellaneous).
* tdiff.1: Add language to say that -w/-W/-x turn on -c.
* tests/contents-diff.test (tdiff_options): Drop -c.
(tdiff_long_options): Drop --contents.
--exec turns on -c/--contents, no need to specify it.
* tests/preset-flags-*.out.gold:
* tests/preset-flags-*.test:
Create.
* Makefile.am (TESTS): Add tests/preset-flags-*.test.
(EXTRA_DIST): Add tests/preset-flags-*.out.gold.
* tests/preset.lib.sh (setup): When flags are available, modify a
file's flags.
* tests/preset-xattr-*.out.gold:
* tests/preset-xattr-*.test:
Create.
* Makefile.am (TESTS): Add tests/preset-xattr-*.test.
(EXTRA_DIST): Add tests/preset-xattr-*.out.gold,
tests/require-xattr.lib.sh.
* tests/preset.lib.sh (setup): When xattr are available, modify a
file xattr.
* tests/require-xattr.lib.sh: Create.
* tests/acl.test: Factorize the code for verifying xattrs are
supported in require-xattr.lib.sh.
* tests/preset-acl-*.out.gold:
* tests/preset-acl-*.test:
Create.
* Makefile.am (TESTS): Add tests/preset-acl-*.test.
(EXTRA_DIST): Add tests/preset-acl-*.out.gold,
tests/require-acl.lib.sh.
* tests/preset-notimes.test (contents_filter):
* tests/preset-mtime.test (mtime_filter):
* tests/preset-hardlinks.test (hardlinks_filter):
* tests/preset-contents.test (contents_filter):
* tests/preset-amtimes.test (amtimes_filter):
* tests/preset-alltimes.test (alltimes_filter):
Add preset_acl_filter to filter chain.
* tests/preset-owner.test (owner_filter): Create with
preset_xid_filter and preset_acl_filter.
* tests/preset.lib.sh (setup): When acl are available, modify a
file acl.
(preset_acl_filter): Create, whether to filter or not depends on
having acl support.
* tests/acl.test (acl_filter): Move to test.lib.sh.
(preset_acl_filter): Create, whether to filter or not depends on
having root.
* tests/require-acl.lib.sh: Create.
* tests/acl.test: Factorize the code for verifying ACLs are
supported in require-acl.lib.sh.
* tests/preset-root-*.out.gold:
* tests/preset-root-*.test:
Create.
* tests/preset-owner.test (filter): Use preset_xid_filter.
* tests/preset-notimes.test (contents_filter):
* tests/preset-mtime.test (mtime_filter):
* tests/preset-contents.test (contents_filter):
* tests/preset-amtimes.test (amtimes_filter):
* tests/preset-alltimes.test (alltimes_filter):
Add preset_xid_filter to filter chain.
* tests/preset-hardlinks.test (hardlinks_filter): Define.
(filter): Use hardlinks_filter.
* tests/preset.lib.sh (setup): When running with root, change uid
and gid for a few files, add device files.
(preset_xid_filter): Create, whether to filter or not depends on
having root.
* Makefile.am (TESTS): Add tests/preset-root-*.test.
(EXTRA_DIST): Add tests/preset-root-*.out.gold.
* tdiff.1: Change --major/--minor description noting that the
comparison only works on device files of the same type.
* tests/gid.test (gid_filter):
* tests/uid.test (uid_filter):
Use xid_filter.
* tests/test.lib.sh (xid_filter): Create.
* tests/filters.lib.sh (xtime_filter):
Move from filters.lib.sh to test.lib.sh.
Remove tests/filters.lib.sh.
* Makefile.am (EXTRA_DIST): Remove tests/filters.lib.sh.
* tests/filters.lib.sh (nlink_filter):
* tests/nlink.test (nlink_filter):
Move from filters.lib.sh back to nlink.test.
* tests/preset-alltimes.out.gold:
* tests/preset-amtimes.out.gold:
* tests/preset-contents.out.gold:
* tests/preset-mtime.out.gold:
* tests/preset-notimes.out.gold:
Remove (top-level) nlink for preset_hardlinks_filter.
* tests/preset-alltimes.test (alltimes_filter):
* tests/preset-amtimes.test (amtimes_filter):
* tests/preset-contents.test (contents_filter):
* tests/preset-mtime.test (mtime_filter):
* tests/preset-notimes.test (contents_filter):
preset_filter -> preset_hardlinks_filter.
Add preset_hardlinks_filter.
* tests/preset-hardlinks.test (filter): Use
preset_hardlinks_filter instead of nlink_filter.
* tests/preset.lib.sh (preset_filter): Rename to preset_size_filter.
(preset_hardlinks_filter): Create, needed for HFS which does weird
things with hard link counts.
* tests/preset-alltimes.out.gold:
* tests/preset-amtimes.out.gold:
Drop entry3 atime entry.
* tests/preset.lib.sh (toplevel_atime_filter): Rename to
preset_atime_filter and filter out entry3's atime: on systems
without nanosecond resolution entry3 (which is linked to entry2)
will have been read a first time when compared as entry2, and the
atime will update and won't be reported as different for entry3,
causing a failure.
(preset_reset): Create: The atimes need to be reset in the past
for systems that don't have both NO_ATIME and nanosecond time
resolution: in their case the multiple tdiff passes will reset the
atimes at the same time during the comparison stage.
(reset): Define to preset_reset.
(setup): Add sleeps in between the directory 1 and 2 creations,
and after we're done, which will delay the reset by a second.
Otherwise preset_reset will set the [ma]times in the past, but the
ctimes will be the same as the directory2 files.
* tests/preset-alltimes.test (alltimes_filter):
* tests/preset-amtimes.test (amtimes_filter):
toplevel_atime_filter -> preset_atime_filter.
* tdiff.c: HAVE_ST_XTIMESPEC -> HAVE_ST_ATIMESPEC. Fixes breakage
on systems have have st_xtimespec.
* configure.ac (HAVE_RANDOM): Provide header comment string.
(HAVE_ST_XTIMESPEC): This was replaced by HAVE_ST_ATIMESPEC when
we used the_CHECK_IDENTIFIER() macro.
(HAVE_ST_TIMENSEC): Typo in header comment string.
* m4/fi_check_identifier.m4: Correct header.
* m4/fi_check_egrep.m4 (FI_CHECK_EGREP): Fix whitespace error.
* tests/atime.test (setup): Move the resetting of the directories'
atimes to atime_reset.
(atime_reset): Create.
(reset): Define to atime_reset.
* tests/test.lib.sh (run_test): Run a reset function, if defined,
before each run.
* tests/preset-alltimes.out.gold:
* tests/preset-amtimes.out.gold:
* tests/preset-contents.out.gold:
* tests/preset-hardlinks.out.gold:
* tests/preset-mode.out.gold:
* tests/preset-mtime.out.gold:
* tests/preset-notimes.out.gold:
* tests/preset-owner.out.gold:
Update for FreeBSD, Solaris and the changes to filtering.
* tests/preset-alltimes.test:
* tests/preset-amtimes.test:
* tests/preset-contents.test:
* tests/preset-mtime.test:
* tests/preset-notimes.test:
Filter by entry1_filter and optionally toplevel_atime_filter.
* tests/preset.lib.sh (entry1_filter): Create: Filter out the
directory vs. file blocks and size comparison. The exact block
count and size may be the same (and not part of the diff) or be
different on different file systems.
(toplevel_atime_filter): Create: Filter out the atime on the
top-level directory. They will be the same on Linux with the
various default nodiratime mount options by default, but will be
different on traditional Unix.
(setup): Switch permissions around on entry1, now 700 for dir and
600 for file. Sync after writes for Solaris Bug.
* tests/preset.lib.sh:
* tests/preset-*.test:
Create.
* Makefile.am (TESTS): Add tests/preset-*.test.
(EXTRA_DIST): Add tests/preset.lib.sh, tests/preset-*.out.gold.
2019-04-30 Philippe Troin <phil@fifi.org>
* Makefile.am (EXTRA_DIST): Add tests/filters.lib.sh.
* tests/filters.lib.sh: Created.
* tests/[cam]time.test ([cam]time_filter): Move & generalize to
tests/filters.lib.sh's xtime_filter.
* tests/nlink.test (nlink_filter): Move to tests/filters.lib.sh.
* tests/mode-and.test:
* tests/mode-or.test:
(tdiff_options2, tdiff_long_options2): Use alternate option forms.
* tests/test.lib.sh: Allow up to 3 short option runs and 2 long
option runs.
* tests/*.test: Use presets instead of --all/--no-all.
* tdiff.c (show_help): Remove -a/--all, -A/--no-all. Add
-[p0-9]/--preset.
(applyPresets): Create.
(main): Remove -a/--all, -A/--no-all. Add -[p0-9]/--preset.
* Makefile.am (CLEANFILES): Add tests/*.tmp.* tests/*.out
tests/*~
* m4/fi_project.m4 (FI_PROJECT): Add .*~ to FI_CLEANFILES.
* tests/*.test: Add tdiff_long_options.
* tests/test.lib.sh (run_test): Factorize code.
Run tests twice, once with short options, the second time with
long options if HAVE_GETOPT_LONG.
* Makefile.am (AM_TESTS_ENVIRONMENT): Pass HAVE_GETOPT_LONG.
* configure.ac: AC_SUBST(HAVE_GETOPT_LONG).
* Makefile.am (TESTS, EXTRA_DIST): Rename group tests to gid.
Rename owner tests to uid.
* tests/group.*: Rename to tests/gid.*.
* tests/owner.*: Rename to tests/uid.*.
* README.md:
* _tdiff.zsh:
* tdiff.1:
* tdiff.bash:
* tdiff.c:
* tests/:
* tests/group.out.gold:
* tests/group.test:
* tests/owner.out.gold:
* tests/owner.test:
Change -o/--owner into -u/--uid.
Change --group into --gid.
* tdiff.1: Document --hardlinks option.
* README.md: Document hard link sets feature.
* tdiff.1: Document the -f/--flags options.
* tdiff.1: Bump version to 0.8.
Typographic fixes.
Explain long options naming.
Show which checks are active by default.
* README.md: Typographic fixes.
* tests/hardlinks.out.gold:
* tests/hardlinks.test:
Create.
* Makefile.am (TESTS): Add hardlinks.test.
(EXTRA_DIST): Add hardlinks.out.gold.
* README.md:
* tdiff.1:
Add examples.
* m4/fi_format_man.m4 (FI_FORMAT_MAN): Mark the generated file as
.PRECIOUS. Use a m4 macro for the target name.
* tests/test.lib.sh: Allow the tdiff command to be overridden with
the TDIFF environment variable to run eg. valgrind.
* tdiff.spec (Version):
* configure.ac (AC_INIT):
* README.md (Changelog):
* NEWS:
Update for release 0.7.2.
* tests/error.out.gold: Update for the error rephrasing.
* tests/error.test (readdir_filter): Create, substitute getdents
with readdir in output, and remove the exact error code as it may
differ from system to system.
* tests/error.test: Skip when running as root.
* tests/error.out.gold: Update for forced directory mode.
* tests/error.test (setup): Force the sub-directories mode as they
get in the error output and can vary depending on the running
user's umask.
2019-04-29 Philippe Troin <phil@fifi.org>
* tests/nlinks.out.gold, tests/nlinks.test: Rename to
test/nlink.*, rename nlinks to nlink.
* tdiff.c (struct option_s, show_help, printopts, dodiff, main):
Rename nlinks to nlink.
* tdiff.bash (_tdiff): Rename nlinks to nlink.