Package: coreutils;
Reported by: Jim Meyering <jim <at> meyering.net>
Date: Wed, 3 Nov 2010 18:56:02 UTC
Severity: normal
Done: Pádraig Brady <P <at> draigBrady.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jim Meyering <jim <at> meyering.net> To: Pádraig Brady <P <at> draigBrady.com> Cc: Paul Eggert <eggert <at> cs.ucla.edu>, Eric Blake <eblake <at> redhat.com>, 7325 <at> debbugs.gnu.org Subject: bug#7325: new test failure due to non-portability of printf formats like %05.3s Date: Fri, 12 Nov 2010 14:55:51 +0100
Pádraig Brady wrote: >>>>> How about something like this instead? >>>>> >>>>> %.X => precision is 9 (until POSIX goes sub-nanosecond :-) >>>>> %.5X => precision is 5 >>>>> %.*X => precision determined by fstimeprec >>>>> >>>>> Then there's no reason for the "overrides" case. >>>> >>>> Good idea. I prefer that. >> ... >> >> Regardless, of syntax, can any of you suggest a good way to test this? >> I can think of a few, but each has disadvantages. >> >> - mount an ext2 file system and ensure that there are no nanoseconds >> Pro: works all the time, as long as ext2 is an option >> Con: root-only and requires mkfs.ext2 >> >> Code: >> dd if=/dev/zero of=blob count=2 seek=2M > /dev/null || skip=1 >> mkdir mnt || skip=1 >> mkfs -t ext2 -F blob \ >> || skip_test_ "failed to create ext2 file system" >> mount -oloop blob mnt || skip=1 Insert "cd mnt", of course. >> touch -d '1970-01-01 18:43:33.5000000000' k || fail=1 >> test "$(stat -c '%.*Y' k)" = 63813 || fail=1 >> >> - require a modern file system type and run a loop like this, >> hoping to find a time stamp with fewer than "normal" digits of >> nanosecond precision. >> >> $ for i in $(seq 10); do rm -f k; touch -d '1970-01-01 18:43:33.5000000000' k; /cu/src/stat -c "%.*Y" k; done >> 63813.500000000 >> 63813.50000000 >> 63813.500000000 >> 63813.500000000 >> 63813.500000000 >> 63813.50000000 >> 63813.500000000 >> 63813.500000000 >> 63813.500000000 >> 63813.500000000 >> >> Pro: does not require mount privileges >> Con: I suppose it may fail some of the time, no matter how many >> iterations we perform. >> > > I prefer the latter. > It's quick to run so do it 100 times > > require_nanosecond_fs_ > > # Set this to avoid problems with weird time zones. > TZ=UTC0 > export TZ > > # Use a time stamp near the Epoch to avoid trouble with leap seconds. > touch -d '1970-01-01 18:43:33.5' k || framework_failure_ > > prec=$(for i in $(seq 100); do > touch -a k; stat -c "%.*Y" k > done | cut -d. -f2 | wc -L) > test "$prec" = 9 || fail=1 Thanks, but I'm dubious. I ran 1000 iterations of something similar (wc -L computes max length. min length would have worked). touch -d '1970-01-01 18:43:33.5' k for j in $(seq 1000); do printf "$j " for i in $(seq 100); do touch -a k stat -c "%.*Y" k done | grep -c -v '\.500000000$' done |tee out Here's the output. Note that only on the 794'th iteration did I see the first (and only) 0. At this point, I'm leaning towards using the root-only test. iteration #-of-files-with-shortened-NS-count ########### 1 12 2 10 3 11 4 11 5 10 6 14 7 10 8 13 9 7 10 8 11 8 12 11 13 8 14 10 15 11 16 8 17 9 18 11 19 11 20 11 21 10 22 9 23 12 24 10 25 8 26 6 27 10 28 9 29 10 30 11 31 9 32 11 33 9 34 11 35 11 36 9 37 9 38 12 39 11 40 10 41 11 42 10 43 11 44 11 45 10 46 9 47 10 48 10 49 10 50 11 51 15 52 11 53 11 54 10 55 8 56 8 57 9 58 8 59 10 60 9 61 10 62 12 63 10 64 12 65 10 66 7 67 5 68 11 69 9 70 8 71 10 72 12 73 9 74 12 75 8 76 12 77 13 78 12 79 6 80 9 81 9 82 11 83 10 84 11 85 12 86 9 87 9 88 11 89 11 90 10 91 10 92 12 93 9 94 7 95 12 96 7 97 14 98 16 99 13 100 10 101 6 102 14 103 6 104 8 105 12 106 12 107 10 108 9 109 10 110 12 111 11 112 11 113 11 114 10 115 10 116 8 117 7 118 10 119 13 120 9 121 10 122 10 123 9 124 12 125 9 126 9 127 9 128 5 129 13 130 10 131 8 132 12 133 9 134 12 135 13 136 11 137 10 138 9 139 10 140 11 141 9 142 10 143 12 144 13 145 10 146 5 147 8 148 7 149 7 150 7 151 8 152 7 153 8 154 8 155 12 156 11 157 13 158 6 159 11 160 11 161 9 162 10 163 12 164 8 165 11 166 11 167 11 168 5 169 12 170 7 171 13 172 10 173 10 174 12 175 5 176 11 177 10 178 11 179 11 180 9 181 9 182 11 183 9 184 12 185 10 186 9 187 12 188 9 189 5 190 5 191 9 192 8 193 9 194 10 195 9 196 10 197 12 198 10 199 16 200 12 201 9 202 5 203 14 204 9 205 9 206 9 207 11 208 10 209 9 210 11 211 11 212 10 213 7 214 10 215 12 216 8 217 14 218 5 219 9 220 6 221 13 222 10 223 12 224 9 225 10 226 12 227 7 228 12 229 10 230 9 231 11 232 10 233 10 234 6 235 12 236 10 237 9 238 10 239 13 240 12 241 11 242 8 243 7 244 10 245 12 246 9 247 14 248 10 249 8 250 9 251 10 252 8 253 9 254 8 255 12 256 9 257 9 258 9 259 10 260 7 261 12 262 7 263 9 264 7 265 14 266 8 267 12 268 11 269 8 270 12 271 14 272 11 273 12 274 12 275 11 276 9 277 10 278 5 279 14 280 8 281 13 282 9 283 13 284 12 285 9 286 9 287 9 288 10 289 6 290 11 291 13 292 11 293 12 294 11 295 12 296 9 297 10 298 13 299 9 300 9 301 12 302 10 303 9 304 10 305 9 306 12 307 10 308 10 309 7 310 7 311 10 312 10 313 11 314 10 315 11 316 10 317 9 318 11 319 12 320 9 321 15 322 12 323 8 324 10 325 9 326 12 327 12 328 11 329 8 330 10 331 12 332 7 333 9 334 13 335 10 336 9 337 14 338 9 339 8 340 16 341 5 342 6 343 20 344 13 345 9 346 8 347 11 348 9 349 11 350 13 351 11 352 11 353 11 354 10 355 12 356 11 357 10 358 10 359 9 360 14 361 8 362 13 363 12 364 8 365 15 366 13 367 11 368 7 369 12 370 13 371 10 372 9 373 9 374 12 375 12 376 10 377 12 378 14 379 8 380 9 381 8 382 11 383 9 384 18 385 8 386 10 387 7 388 13 389 10 390 14 391 6 392 10 393 8 394 11 395 12 396 11 397 12 398 8 399 12 400 11 401 11 402 9 403 12 404 6 405 11 406 6 407 11 408 13 409 7 410 15 411 13 412 6 413 13 414 4 415 14 416 12 417 7 418 9 419 7 420 11 421 9 422 10 423 10 424 12 425 11 426 12 427 11 428 7 429 10 430 7 431 12 432 8 433 10 434 13 435 11 436 15 437 13 438 13 439 6 440 12 441 8 442 11 443 12 444 12 445 7 446 4 447 11 448 10 449 11 450 7 451 6 452 12 453 12 454 11 455 11 456 9 457 9 458 11 459 11 460 9 461 10 462 8 463 7 464 14 465 5 466 11 467 9 468 10 469 13 470 9 471 7 472 10 473 13 474 12 475 8 476 11 477 11 478 11 479 10 480 5 481 12 482 7 483 8 484 11 485 12 486 12 487 7 488 11 489 13 490 9 491 11 492 10 493 12 494 8 495 12 496 12 497 11 498 8 499 11 500 11 501 11 502 6 503 13 504 9 505 6 506 7 507 11 508 9 509 15 510 13 511 18 512 7 513 9 514 12 515 9 516 12 517 10 518 11 519 9 520 8 521 9 522 11 523 11 524 11 525 13 526 5 527 7 528 9 529 10 530 10 531 10 532 15 533 12 534 6 535 12 536 9 537 9 538 6 539 8 540 11 541 9 542 10 543 9 544 9 545 11 546 8 547 9 548 9 549 9 550 10 551 10 552 12 553 8 554 12 555 4 556 11 557 7 558 11 559 11 560 12 561 13 562 12 563 8 564 10 565 9 566 12 567 11 568 11 569 11 570 7 571 9 572 13 573 7 574 12 575 12 576 10 577 11 578 11 579 14 580 12 581 12 582 12 583 10 584 13 585 12 586 9 587 12 588 10 589 8 590 11 591 9 592 10 593 10 594 11 595 12 596 9 597 10 598 10 599 12 600 7 601 11 602 10 603 9 604 13 605 11 606 9 607 16 608 11 609 10 610 10 611 15 612 8 613 9 614 11 615 11 616 11 617 9 618 3 619 13 620 8 621 11 622 7 623 10 624 8 625 14 626 6 627 13 628 14 629 5 630 8 631 9 632 12 633 5 634 18 635 8 636 10 637 10 638 8 639 11 640 10 641 8 642 10 643 9 644 10 645 12 646 9 647 10 648 11 649 14 650 11 651 10 652 11 653 7 654 15 655 7 656 10 657 10 658 10 659 12 660 7 661 10 662 9 663 8 664 11 665 10 666 10 667 8 668 9 669 7 670 12 671 8 672 9 673 7 674 13 675 9 676 13 677 10 678 4 679 10 680 14 681 10 682 14 683 4 684 13 685 11 686 11 687 5 688 11 689 10 690 10 691 7 692 9 693 12 694 7 695 11 696 12 697 7 698 13 699 13 700 8 701 11 702 11 703 7 704 9 705 13 706 15 707 11 708 10 709 11 710 8 711 10 712 12 713 11 714 7 715 10 716 5 717 12 718 7 719 10 720 11 721 7 722 11 723 7 724 5 725 12 726 12 727 12 728 8 729 5 730 13 731 14 732 9 733 13 734 10 735 12 736 12 737 7 738 10 739 12 740 10 741 11 742 11 743 9 744 7 745 9 746 13 747 9 748 6 749 8 750 10 751 12 752 14 753 7 754 8 755 16 756 10 757 7 758 7 759 7 760 4 761 13 762 7 763 13 764 11 765 10 766 10 767 15 768 8 769 9 770 13 771 10 772 15 773 8 774 6 775 9 776 13 777 6 778 14 779 3 780 11 781 10 782 13 783 9 784 7 785 8 786 8 787 9 788 12 789 12 790 13 791 8 792 14 793 15 794 0 795 8 796 8 797 12 798 15 799 10 800 13 801 11 802 14 803 7 804 9 805 8 806 16 807 9 808 10 809 15 810 4 811 5 812 3 813 10 814 6 815 8 816 5 817 5 818 15 819 14 820 16 821 19 822 6 823 21 824 13 825 12 826 18 827 7 828 7 829 14 830 11 831 15 832 7 833 7 834 8 835 7 836 12 837 9 838 14 839 9 840 8 841 7 842 15 843 5 844 9 845 14 846 8 847 3 848 12 849 13 850 12 851 10 852 12 853 16 854 9 855 12 856 10 857 10 858 15 859 8 860 11 861 12 862 13 863 10 864 19 865 9 866 15 867 6 868 14 869 9 870 7 871 8 872 14 873 9 874 4 875 5 876 11 877 12 878 6 879 10 880 14 881 8 882 6 883 11 884 12 885 5 886 9 887 7 888 9 889 8 890 10 891 10 892 9 893 8 894 9 895 15 896 8 897 10 898 14 899 8 900 8 901 6 902 13 903 5 904 11 905 13 906 7 907 14 908 9 909 11 910 13 911 6 912 13 913 8 914 9 915 8 916 12 917 11 918 9 919 9 920 16 921 11 922 2 923 11 924 11 925 10 926 12 927 13 928 6 929 6 930 9 931 10 932 9 933 14 934 12 935 11 936 9 937 8 938 13 939 9 940 13 941 12 942 8 943 9 944 12 945 16 946 16 947 8 948 11 949 6 950 11 951 13 952 11 953 10 954 3 955 8 956 12 957 7 958 8 959 14 960 13 961 10 962 9 963 13 964 17 965 9 966 9 967 15 968 7 969 10 970 6 971 11 972 13 973 10 974 11 975 11 976 7 977 6 978 12 979 13 980 5 981 10 982 10 983 10 984 8 985 8 986 12 987 11 988 11 989 11 990 16 991 8 992 5 993 6 994 7 995 5 996 11 997 5 998 4 999 5 1000 7
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.