summaryrefslogtreecommitdiff
path: root/src/ls.c
AgeCommit message (Collapse)Author
2004-06-15(decode_switches): Pay attention to TABSIZE even if POSIXLY_CORRECTJim Meyering
is set. POSIX reserves upper-case environment variables to the implementation, so it's OK for ls to depend on TABSIZE.
2004-06-01(get_link_name): Update use of xreadlink.Jim Meyering
2004-04-24More signal-handling cleanup for ls.c. Do not allow signals toJim Meyering
happen between arbitrary output bytes, as the restore-default-color sequence can bollix up multibyte chars or color-change sequences in the ordinary output. Instead, process signals only between printing a file name and changing the color back to non_filename_text color. That way, if the signal handler changes the color (to the default), 'ls' will change it back when 'ls' continues (after being suspended). Also, do not bother with signal-handling unless stdout is a controlling terminal; this lets stdio buffer better when "ls --color" is piped or sent to a file. (sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]: New macros. Do not include "full-write.h"; no longer needed. (tcgetpgrp) [! HAVE_TCGETPGRP]: New macro. (put_indicator_direct): Remove. All callers changed to use put_indicator. (caught_signals, interrupt_signal, stop_signal_count): New vars. (restore_default_color): Don't bother checking for put_indicator failure. (sighandler): Don't handle SIGTSTP; that's another handler now. Simply set interrupt_signal to the signal, then exit. (stophandler, process_signals): New functions. (main): Don't output any color changes until _after_ the signal handlers are set up. This fixes a race condition where 'ls' could be interrupted while initializing colors, and leaving the terminal in an undesirable state. Don't mess with signal-handling if standard output is not a controlling terminal. When exiting, restore the default color, then restore the default signal handling, then act on any signals that weren't acted on yet. Do not print //DIRED// etc. in colors; this avoids the need to catch signals when printing them. (print_name_with_quoting): Process signals just before switching color back to non_filename_text.
2004-04-23Avoid segfault on systems for which SIZE_MAX != (size_t) -1.Jim Meyering
(quote_name): Use SIZE_MAX, not -1, in calls of quotearg_buffer. Patch by Mikulas Patocka.
2004-04-21 - ls could incorrectly restore color if multiple signalsJim Meyering
arrived nearly simultaneously. (main): Rewrite signal-catching code to make it similar to other coreutils programs. When processing signals, block all signals that we catch, but do not block signals that we don't catch. Avoid problems with unsigned int warnings. (sighandler) [defined SA_NOCLDSTOP]: Use simpler "signal (sig, SIG_DFL)" rather than sigaction equivalent. (sighandler) [!defined SA_NOCLDSTOP]: Reset signal handler to self, not to SIG_IGN, since SIGTSTP can be received more than once. (main): Use SA_RESTART, as that is simpler than checking for EINTR failures all over the place.
2004-02-02(TIMESPEC_NS): Remove definition.Jim Meyering
2004-01-21(usage): Use EXIT_SUCCESS, not 0, for clarity.Jim Meyering
(main): Don't assume EXIT_FAILURE == 1, as POSIX doesn't require it.
2003-12-24(length_of_file_names_and_frills):Jim Meyering
Remove forward decl; not needed. (print_file_name_and_frills, length_of_file_name_and_frills): With -m, don't output spaces before inum or size. (print_with_commas): Don't output space just before newline.
2003-12-18(format_user): Increment dired_pos via two statements,Jim Meyering
`dired_pos += width; dired_pos++;' rather than one, `dired_pos += width + 1;' since the latter could conceivably overflow. (format_group): Likewise.
2003-12-08(INODE_DIGITS, LOGIN_NAME_MAX, ID_LENGTH_MAX): Remove.Jim Meyering
(format_user_width, format_group_width, unsigned_file_size, format_group): New functions. (block_size_width): Renamed from block_size_size. (inode_number_width, nlink_width, owner_width, group_width, author_width, major_device_number_width, minor_device_number_width, file_size_width): New vars. (clear_files): Initialize them. (gobble_file): Set them. Don't ceiling block_size_width to 7. (print_long_file): Use them. (gobble_file): Use a new local variable 'f' to make the code smaller and more consistent with other functions. (format_user): Output to stdout, not to a buffer, so that we don't have to worry about buffer overrun. Update dired_pos. (print_long_file): Don't put owner, group, author into buffer; just print them directly. Don't assume link counts and major and minor numbers fit into unsigned long int. From Paul Eggert.
2003-11-12(extract_dirs_from_files): Avoid useless copy operations.Jim Meyering
This avoids a warning valgrind about memcpy with overlapping source and destination.
2003-10-25(dev_ino_hash): Adjust to reflectJim Meyering
type changes (unsigned int -> size_t) in hash.c.
2003-10-18Most .c files (AUTHORS): Revert the WRITTEN_BY/AUTHORS changeJim Meyering
of 2003-09-19. Now, AUTHORS is a comma-separated list of strings. Update the call to parse_long_options so that `AUTHORS, NULL' are the last parameters. * src/true.c (main): Append NULL to version_etc argument list. * src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
2003-10-14(decode_switches) [TIOCGWINSZ]: Comment out theJim Meyering
warning-inducing test, ws.ws_col <= SIZE_MAX, since it was always true on Linux.
2003-10-14Fix to avoid a denial-of-service attack if the display width isJim Meyering
enormous. Also, clean up the code a bit by removing duplicate code. (init_column_info): Remove forward decl; no longer needed. (calculate_columns): New function, that contains code that used to be common to print_many_per_line and print_horizontal. (print_many_per_line, print_horizontal): Use it. (decode_switches): Set max_idx here, not in calculate_columns. (print_current_files): Don't call init_column_info; calculate_columns now does that. (init_column_info): Don't allocate a lot more space than is needed to represent the current set of files. Allocate all the new size_t cells in one call to xnmalloc, rather than a row at a time.
2003-10-13(init_column_info): Add another FIXME comment.Jim Meyering
2003-10-13(struct bin_str.len, length_of_file_name_and_frills, indent,Jim Meyering
nfiles, files_index, tabsize, line_length, struct column_info.line_len, struct column_info.col_arr[0], max_idx): Now size_t, not int. (get_funky_string): Return bool indicating success, instead of a negative count to indicate failure. Store number of columns through new parameter OUTPUT_COUNT; that way, they can never go negative. Change equals_end from int to bool. All uses changed. (struct column_info.valid_len): Now bool, not int. All uses changed. (dired_dump_obstack, get_funky_string, clear_files, extract_dirs_from_files, print_current_files, print_many_per_line, print_horizontal, init_column_info, put_indicator, length_of_file_name_and_frills, print_with_commas): Use size_t, not int, for local variables that count sizes. (decode_switches): Decode sizes using xstrtoul, not xstrtol. Check for TIOCGWINSZ returing negative values (or values greater than SIZE_MAX!). (visit_dir, main, parse_ls_color, queue_directory, add_ignore_pattern, init_column_info): Use xmalloc and xnmalloc, not XMALLOC. (gobble_file): Use xnrealloc, not XREALLOC. (print_color_indicator): Remove now-unnecessary cast to size_t.
2003-10-13(print_many_per_line): Add FIXME comment.Jim Meyering
2003-09-28Remove unnecessary casts of alloca, since now it's guaranteed to be (void *).Jim Meyering
2003-09-18(WRITTEN_BY): Rename from AUTHORS.Jim Meyering
Begin each WRITTEN_BY string with `Written by ' and end it with `.'. Mark each WRITTEN_BY string as translatable.
2003-09-18revert previous changeJim Meyering
2003-09-18Update AUTHORS definition to be a comma-separated list of strings and/or updateJim Meyering
the call to parse_long_options so that `AUTHORS, NULL' are the last parameters.
2003-07-27(sort_files): Put `volatile' in the right place.Jim Meyering
2003-07-26(sort_files): Make `func' volatile, so it can't beJim Meyering
clobbered by a `longjmp' into this function.
2003-07-23Don't include headers already included by system.h:Jim Meyering
Don't include stdlib.h.
2003-07-12It appears that the `#pragma alloca' included via "system.h" isJim Meyering
adequate, since join.c uses alloca, yet lacked an in-file #pragma. Remove `#pragma alloca'.
2003-06-17(main): Call initialize_main.Jim Meyering
2003-05-14(usage): Don't use `,' as the thousands separatorJim Meyering
in e.g. 1,000,000 and 1,048,576. Instead, do this: `SIZE may be ..., MB 1000*1000, M 1024*1024 and so on...'
2003-04-11Include <stdlib.h> unconditionally.Jim Meyering
2003-03-07(dired_dump_obstack): Use putchar, not fputs, to output a single character.Jim Meyering
2003-01-27(quote_name): Add fourth parameter, width, into which toJim Meyering
store the screen columns, and return the number of bytes instead. (print_dir): Pass NULL as fourth parameter of quote_name. (print_name_with_quoting): Likewise. (length_of_file_name_and_frills): Get the width from the fourth parameter of quote_name instead of return value.
2003-01-27(decode_switches): If `dired' is set withoutJim Meyering
`format == long_format', then silently reset dired. This doesn't change the behavior of ls (all prior uses of dired were protected by `&& format == long_format'), and lets us... (DIRED_INDENT): ... remove `format == long_format' conjunct. (PUSH_CURRENT_DIRED_POS): Likewise. (main): Likewise.
2003-01-18(Dereference_symlink) [DEREF_COMMAND_LINE_SYMLINK_TO_DIR]: New member.Jim Meyering
(enum) [DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION]: New member. (long_options): Add option --dereference-command-line-symlink-to-dir. (main): Make DEREF_COMMAND_LINE_SYMLINK_TO_DIR be the default, rather than DEREF_COMMAND_LINE_ARGUMENTS, when none of the -d, -F, -l options is specified. (decode_switches): Handle --dereference-command-line-symlink-to-dir. (gobble_file): Honor DEREF_COMMAND_LINE_SYMLINK_TO_DIR. Change --dereference-command-line (-H) to dereference *all* command line arguments, including broken symlinks.
2003-01-18Change ls -H back to the way it was yesterday, since this isJim Meyering
compatible with FreeBSD and the POSIX spec is confusing and somewhat contradictory. (DEREF_COMMAND_LINE_ARGUMENTS): Change name back from DEREF_COMMAND_LINE_SYMLINK_TO_DIR, updating all uses. (long_options): Change the long option name back. (usage): Change the usage back. (gobble_file): When -H is specified, dereference a top-level arg even if it points to a non-directory.
2003-01-15(gobble_file): Fall back on using lstat when required:Jim Meyering
when --dereference (-L) is not specified, and - when operating on a dangling symlink - when operating on command-line-symlink-to-directories This fixes numerous problems. Here are examples: - `ls dangling-symlink' would fail with `no such file...' Now it prints `dangling-symlink'. - `ls -i symlink' would mistakenly print the inode of the referent. Now it prints the inode of the symlink. Likewise for --size (-s). Based on a patch from Michael Stone. Reported by Deepak Goel as Debian bug #173793.
2003-01-15Rename ls's --dereference-command-line (-H)Jim Meyering
option to --dereference-command-line-symlink-to-dir. [enum Dereference_symlink] (DEREF_COMMAND_LINE_SYMLINK_TO_DIR): Rename from DEREF_COMMAND_LINE_ARGUMENTS. Update all uses. (long_options): Rename the option. (usage): Say that --dereference-... changes how ls treats only symlinks to directories specified on the command line.
2003-01-14(gobble_file): Fix a bug introduced in 4.5.4 that made itJim Meyering
so that ls --color would no longer highlight the names of files with the execute bit set when not specified on the command line. Patch by Michael Stone. Reported by Stephen Depooter as Debian bug 175135.
2003-01-03Include "dev-ino.h".Jim Meyering
[struct dev_ino]: Remove declaration.
2002-12-15Remove all uses of `PARAMS'.Jim Meyering
2002-12-15Remove declaration of nstrftime.Jim Meyering
Include strftime.h instead.
2002-12-06(gobble_file): Also stat the file if it's aJim Meyering
regular file and --indicator-style=classify (aka -F).
2002-12-01ls is now more efficient: it no longer needs to stat each directoryJim Meyering
entry on systems with valid dirent.d_type. (print_dir): Add DT_LNK and DT_REG. (main): Make --recursive set format_needs_type, not format_needs_stat. (gobble_file): Remove a FIXME comment, now that this is fixed.
2002-12-01(gobble_file): Remove the block of code that causedJim Meyering
`ls --color -F symlink-to-dir' to list the files in `symlink-to-dir/.'. Now, it prints `symlink-to-dir@', (just like `ls -F symlink-to-dir') but with the addition of highlighting.
2002-11-23(decode_switches): Use case-sensitive matching toJim Meyering
decode the QUOTING_STYLE environment variable. This is more consistent with the documentation, and with --quoting-style.
2002-11-12(HAVE_SYMLINKS): Remove unnecessary macro definition.Jim Meyering
Replace sole use with equivalent `#ifdef S_ISLNK'. Inconsistency reported by Dmitry V. Levin.
2002-11-10(sighandler): Handle SIGTSTP specially.Jim Meyering
Based on suggestions from Solar Designer and Dmitry V. Levin. Add comments.
2002-11-10(restore_default_color_handler, sigtstp_handler): Remove functions.Jim Meyering
(sighandler): New function, based on the one in sort.c. (main): Use sigaction, if possible; otherwise signal. Handle these signals: SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM, SIGTSTP. Don't register our handler if the signal is already being ignored.
2002-11-09correct indentationJim Meyering
2002-11-09ls --color: restore terminal state (color) upon signal.Jim Meyering
Include "full-write.h" and <signal.h>. (restore_default_color, restore_default_color_handler): New functions. (sigtstp_handler, put_indicator_direct): New functions. (main) [print_with_color]: Register signal handlers. Patch mostly by Solar Designer and Stanislav Ievlev.
2002-11-06(print_long_format, print_file_name_and_frills):Jim Meyering
Use primitives from inttostr.h, not human.h, to print large numbers simply. (human_output_opts): New var. (output_block_size): Now uintmax_t, not int, to handle larger block sizes. All uses changed. (file_output_block_size): New var, to distinguish file sizes from other sizes. (decode_switches): Set it.