Author: jilles
Date: Sun Mar 26 14:09:25 2017
New Revision: 315985
URL: https://svnweb.freebsd.org/changeset/base/315985

Log:
  diff: Fix mtime of file1 in -u/-c header line.
  
  PR:           218018
  Reviewed by:  bapt
  Differential Revision:        https://reviews.freebsd.org/D10140

Added:
  head/usr.bin/diff/tests/header.out   (contents, props changed)
Modified:
  head/usr.bin/diff/diffreg.c
  head/usr.bin/diff/tests/Makefile
  head/usr.bin/diff/tests/diff_test.sh

Modified: head/usr.bin/diff/diffreg.c
==============================================================================
--- head/usr.bin/diff/diffreg.c Sun Mar 26 13:03:16 2017        (r315984)
+++ head/usr.bin/diff/diffreg.c Sun Mar 26 14:09:25 2017        (r315985)
@@ -1614,7 +1614,7 @@ print_header(const char *file1, const ch
        char buf2[256];
        char end1[10];
        char end2[10];
-       struct tm *tm_ptr1, *tm_ptr2;
+       struct tm tm1, tm2, *tm_ptr1, *tm_ptr2;
        int nsec1 = TIMESPEC_NS (stb1.st_mtime);
        int nsec2 = TIMESPEC_NS (stb2.st_mtime);
 
@@ -1626,8 +1626,8 @@ print_header(const char *file1, const ch
 
        if (cflag)
                time_format = "%c";
-       tm_ptr1 = localtime(&stb1.st_mtime);
-       tm_ptr2 = localtime(&stb2.st_mtime);
+       tm_ptr1 = localtime_r(&stb1.st_mtime, &tm1);
+       tm_ptr2 = localtime_r(&stb2.st_mtime, &tm2);
        strftime(buf1, 256, time_format, tm_ptr1);
        strftime(buf2, 256, time_format, tm_ptr2);
        if (!cflag) {

Modified: head/usr.bin/diff/tests/Makefile
==============================================================================
--- head/usr.bin/diff/tests/Makefile    Sun Mar 26 13:03:16 2017        
(r315984)
+++ head/usr.bin/diff/tests/Makefile    Sun Mar 26 14:09:25 2017        
(r315985)
@@ -19,7 +19,8 @@ ${PACKAGE}FILES+=     \
        simple_p.out \
        unified_p.out \
        unified_c9999.out \
-       unified_9999.out
+       unified_9999.out \
+       header.out
 
 NETBSD_ATF_TESTS_SH+=  netbsd_diff_test
 

Modified: head/usr.bin/diff/tests/diff_test.sh
==============================================================================
--- head/usr.bin/diff/tests/diff_test.sh        Sun Mar 26 13:03:16 2017        
(r315984)
+++ head/usr.bin/diff/tests/diff_test.sh        Sun Mar 26 14:09:25 2017        
(r315985)
@@ -2,6 +2,7 @@
 
 atf_test_case simple
 atf_test_case unified
+atf_test_case header
 
 simple_body()
 {
@@ -46,8 +47,20 @@ unified_body()
                diff -u9999 -L input_c1.in -L input_c2.in 
"$(atf_get_srcdir)/input_c1.in" "$(atf_get_srcdir)/input_c2.in"
 }
 
+header_body()
+{
+       export TZ=UTC
+       : > empty
+       echo hello > hello
+       touch -d 2015-04-03T01:02:03 empty
+       touch -d 2016-12-22T11:22:33 hello
+       atf_check -o "file:$(atf_get_srcdir)/header.out" -s eq:1 \
+               diff -u empty hello
+}
+
 atf_init_test_cases()
 {
        atf_add_test_case simple
        atf_add_test_case unified
+       atf_add_test_case header
 }

Added: head/usr.bin/diff/tests/header.out
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.bin/diff/tests/header.out  Sun Mar 26 14:09:25 2017        
(r315985)
@@ -0,0 +1,4 @@
+--- empty      2015-04-03 01:02:03.000000000 +0000
++++ hello      2016-12-22 11:22:33.000000000 +0000
+@@ -0,0 +1 @@
++hello
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to