summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2001-04-29(usage): Mention shred.Jim Meyering
2001-04-24Include wheel-size.h.Jim Meyering
(WHEEL_START): Adjust definition. (wheel_tab[]): Remove body of definition. Include generated file, wheel.h, instead.
2001-04-23(dd_copy): When using sync with either block or unblock,Jim Meyering
pad with spaces.
2001-04-22fix typo in commentJim Meyering
2001-04-22(decode_switches): Ensure that -1 has no effect when it follows -l.Jim Meyering
2001-04-22fix typo in --help outputJim Meyering
2001-04-22(main): Fix off-by-one error introduced with last change.Jim Meyering
2001-04-22Fix bugs when computing length of large files.Jim Meyering
Add overflow and write error checks. Use uint_fast32_t, not unsigned long, to do checksum calculation, as C99 says uint_fast32_t should be no slower and might be faster. Include <stdio.h> and "system.h" even if CRCTAB is defined, so that the code will compile if CRCTAB is defined. Include "human.h" if CRCTAB is not defined. (uint_fast32_t): Define if it appears that stdint.h didn't. (BIT, remainder, main, crctab): Use uint_fast32_t, not unsigned long, for checksums. (fill_r, remainder, main): Use ANSI prototypes. (fill_r, remainder, main): Omit duplicate code. (main): Use uintmax_t, not unsigned long, for file lengths. Use size_t, not long, for result of fread. Check for overflow when computing file lengths. Check for write error immediately after printing a line, so that we don't write to stdout indefinitely after an error.
2001-04-22(usage): Mention that sync makes dd pad with spaces (rather than NULs)Jim Meyering
when used with block or unblock.
2001-04-21(main): When given two or more arguments but the only oneJim Meyering
that exists is a directory, don't treat it as if it were the only argument. Before, `mkdir d; ls no-dir d 2>/dev/null' would act like `ls d' and produce no output. Now, it prints `d:'.
2001-04-15(default_sort_size): Leave a 1/16 margin for RSS.Jim Meyering
2001-04-14(usage): Tweak --help output: s/line,/newline,/Jim Meyering
2001-04-13(main): Add a comment justifying the use ofJim Meyering
`multi-character' rather than `multibyte' in a diagnostic.
2001-04-13(RLIMIT_AS): Do not define; just use conditionalJim Meyering
code, since RLIMIT_RSS is similar (and is not standardized). (default_sort_size): Don't allocate more than the RSS limit, if this host has such a limit.
2001-04-04Don't inspect MB_LEN_MAX. Paul Eggert says it'sJim Meyering
not always defined correctly.
2001-04-02Include <getopt.h>.Jim Meyering
(usage, main): Add support for long options, and check option syntax as POSIX requires, though (as usual for GNU apps) options can follow file names unless POSIXLY_CORRECT is set. Many diagnostic revamped. (long_options): New constant. (badfieldspec): New arg MSGID. Mark as noreturn. (parse_field_count): New arg MSGID; if null, just return null on error. (new_key): Renamed from key_init. All callers changed. Now allocates the new key.
2001-03-18(usage): Warn that the +N form will be withdrawn.Jim Meyering
2001-03-18(usage): Warn that the +N form will be withdrawn.Jim Meyering
2001-03-17(usage): Tweak the obsolescent usage line so thatJim Meyering
help2man recognizes it as such.
2001-03-17(INT_STRLEN_BOUND): New macro.Jim Meyering
2001-03-17Include mbswidth.h.Jim Meyering
(standard_header, header, test_suite): Remove. (date_format, date_text, file_text, header_width_available): New vars. (long_options, main, init_header, usage): Add new -D or --date-format option. (CHARS_FOR_DATE_AND_PAGE, T_BUF_FMT, T_BUF_SIZE, NO_DATE): Remove. (init_header): Allow arbitrary width for date format. Change "Page %5d" to "Page %d", since the code no longer assumes fixed width. Do not assume that localtime succeeds. (init_header, print_header, usage): Do not truncate headers. (init_header, print_header): Defer width calculations until page is printed, since "Page 100000" is wider than "Page 1". Count columns, not bytes, in page headers. Custom headers take up only the center, not the whole header. (print_header): Use printf rather than fprintf(stdout).
2001-03-13(die): New message arg, to describe failuresJim Meyering
better. All callers changed.
2001-03-13Decrease buffer size when only merging or checking.Jim Meyering
(sort_size): Now the user-specified sort size. (MIN_MERGE_BUFFER_SIZE): New macro. (MIN_SORT_SIZE): Use it. (merge_buffer_size): New variable. (fillbuf): Increase merge_buffer_size if a longer line is encountered. (checkfp, mergefps): Do not allocate a buffer smaller than merge_buffer_size. (sort): Use the default_sort_size if sort_size is zero. (main): Do not set sort_size to default_sort_size.
2001-03-13(sort): If all the input files are empty, create an empty output file.Jim Meyering
2001-03-13(merge): Move declarations of local variables intoJim Meyering
the inner scope where they're used. (sort): Likewise.
2001-03-13Do not include closeout.h.Jim Meyering
(xfopen): Use stdout if *how != 'r'. (mergefps): Remove FPS arg. Open all input files, and close all files when done. If OFP is null, open the output file (but after opening input files). All callers changed. (first_same_file): New function. (sort, merge): Remove arg OFP; we now open the output file as needed. All callers changed. (merge): New arg MAX_MERGE. All callers changed. (sort): For "sort F -o F", close the input before opening the output. (main): Do not use close_stdout; 'sort' and 'merge' now close stdout. (This also fixes a close-stdout-twice bug.) Remove test for overlapping input and output files, as 'sort' no longer needs to worry about overlap, and 'merge' checks for overlap itself. Use first_same_file to inform 'merge' about how much to merge at the top level, to avoid overlap.
2001-03-12`fmt --prefix=S' would not work properly for any string S containingJim Meyering
a byte with the high bit set. (prefix): Declare to be of type unsigned char, not `char'. (get_prefix): Likewise for local, `p'.
2001-03-12(save_stdin): Use mkstemp to create temporary file.Jim Meyering
2001-03-09(usage): Describe %C.Jim Meyering
2001-03-06(S_TYPEISSHM): Rename parameter to reflect its type.Jim Meyering
(main): Pass a `struct stat *', not stat.st_mode to S_TYPEISSHM.
2001-03-04(output_char): Reformat so each statement is on a separate line.Jim Meyering
2001-03-03(die): New function.Jim Meyering
(create_temp_file, xfopen, xfclose, write_bytes, sort_buffer_size, fillbuf, main): Use it to regularize error messages. The only change in behavior is that write_bytes and the final close used to say "write error" but now give just the output file name, which should be enough.
2001-03-03(xfclose): Add FILE arg, and report the file nameJim Meyering
on error. All callers changed.
2001-03-03(main): When fclose (stdin) fails, do not mentionJim Meyering
the output file in the error message; mention "-" instead.
2001-03-03(xfopen): Set have_read_stdin to 1 only if file is "-".Jim Meyering
Use fopen_safer, not fopen, to avoid subtle bugs when fopen returns stdin, stdout, or stderr. (xfclose): stdout is no longer a special case. (main): Close output file, don't just flush it; there might be an error on the close.
2001-03-03(initbuf): If the desired size cannot beJim Meyering
allocated, repeatedly halve it until allocation succeeds.
2001-03-03(parse_field_count): Comment fix.Jim Meyering
2001-03-03Tune allocation and comparison of nodesJim Meyering
representing temp files. This improved CPU performance of 'sort -S 1 *.[ch]' by 17% on my host. (struct tempnode): name member now uses struct hack. (temphead): Now a pointer, not a structure. All uses changed. (create_temp_file): Allocate node using struct hack. (zaptemp): Free node using struct hack. Use pointer comparison, not string comparison.
2001-03-02(eolchar, trim_trailing_blanks): Now static.Jim Meyering
2001-03-02'sort' race condition fixes.Jim Meyering
Defend against a DoS attack where someone else creates a temporary file with the same name as ours. Use mkstemp to do this, supplying our own mkstemp if the system doesn't have one. Also, fix a race condition during cleanup on hosts without sigaction. (NAME_MAX_IN_DIR): Remove. (sigprocmask, sigset_t): New macros, defined only on older hosts. (caught_signals): New var. (xtmpfopen, tempname): Removed. (create_temp_file): New function, combining the functions of the old xtmpfopen and tempname. All callers changed. Use mkstemp to create the file. (sighandler): On hosts without sigaction, ignore signals while cleaning up, instead of letting them interrupt cleanup. (main): Initialize caught_signals. On hosts with sigaction, block all caught signals while handling one. Remove duplicate code.
2001-02-22(keycompare): Move declarations of locals, lena and lenb,Jim Meyering
into the inner scope where they are used.
2001-02-21(main): Remove assignment-in-if-expression.Jim Meyering
In fact, remove t_errno altogether.
2001-02-20(FULL_TIME_OPTION): Renamed from FULL_TIME, forJim Meyering
consistency with the other enum values.
2001-02-20(SI_OPTION): New enum value.Jim Meyering
(long_options): Use it instead of 'H' for --si. (decode_switches): Warn that -H will change soon. (usage): Likewise.
2001-02-20revert last change, until after the releaseJim Meyering
2001-02-20`ls -Fd symlink-to-directory' would print a trailing `/'Jim Meyering
Now it prints a trailing `@'. (gobble_file): Don't clobber lstat stats of command line arguments when using -d and -F (--directory and --classify) options.
2001-02-19(AUTHORS): Add Paul Eggert.Jim Meyering
2001-02-19Fix a race condition: freed storage accessed during a signal handler.Jim Meyering
(struct tempnode.next): Now volatile. (zaptemp): Free the file name after removing it from the temp list, not before, because a signal can arrive between the two actions and cleanup () traverses the list.
2001-02-19Check for input size, and do not overallocate memory.Jim Meyering
Also check for memory quotas. Revamp storage management so that line tables and character data are taken from the same buffer. Line tables are now in reverse order, since they grow down while the character data grow up. (<sys/resource.h>): Include if HAVE_SYS_RESOURCE_H. (struct rlimit, getrlimit): Define a replacement if RLIMIT_DATA is not defined. (RLIMIT_AS): Define to RLIMIT_DATA if not defined. (struct lines): Remove. (struct buffer): New members nlines, line_bytes, eof. Remove member newline_free; no longer needed, since the code no longer runs out of line table space. (SORTALLOC_MIN, SORTALLOC_DEFAULT_MIN): Remove. (sort_size): Renamed from sortalloc; now applies to the sum of the character data and the line table, not just the character data. (MIN_SORT_SIZE, INPUT_FILE_SIZE_GUESS): New macros. (linelength): remove. (specify_sort_size): Don't worry about the distinction between the character data and the line table; that is now the caller's responsibility. (default_sort_size): Return the value, instead of being executed for side effect. Return half of available memory, or 1/16 of total memory, whichever is greater; except do not exceed 1/2 of quota. (sort_buffer_size): New function. (initbuf): New arg LINE_BYTES. Ensure that the line array is properly aligned. Initialize the new set of struct buffer members. (buffer_linelim): New function. (fillbuf): Return int, not size_t, since the callers merely care whether the result is nonzero. New arg FILE so that error messages can report the file name. Keep track of eof. Initialize the line table too, taking its memory from the input buffer's memory; this subsumes the old findlines function and removes the need for worrying about running out of line table entries. (checkfp, mergefps, sortlines, merge, sort): Adjust to the new storage management regime, in particular the fact that line tables are now filled in by fillbuf and are in reverse order. (checkfp): Now takes char *, not const char *, since subroutines require that now. Rewrite to avoid lint and duplicate code. If line length alloc calculation overflows, simply allocate enough memory to hold the line. (mergefps): New arg FILES, used for buffer size calculation and error messages. Rewrite to avoid lint. Do not loop if savealloc*2 overflows. (mergefps, merge): Zap temporary files eagerly rather than lazily; this is needed because we now pass FILES to mergefps. (sortlines): Args now point at end of arrays, not at beginnings. (sort): Do not allocate temporary line array for sortlines; instead, take the space from the same buffer. (main): Adjust to sort_size and default_sort_size changes.
2001-02-19(wc): Rename innermost `buf' to avoid shadowing warning.Jim Meyering
(wc): Rename local `wc' to avoid shadowing function name.