sort(1): Fix -m when only implicit stdin is used for input
Observe: printf "a\nb\nc\n" > /tmp/foo # Next command results in no output cat /tmp/foo | sort -m # Next command results in proper output cat /tmp/foo | sort -m - # Also works: sort -m /tmp/foo Some const'ification was done to simplify the actual solution of adding "-" explicitly to the file list if we didn't have any file arguments left over. PR: 190099 MFC after: 1 week
This commit is contained in:
parent
36180cd53d
commit
7137597e15
@ -227,7 +227,7 @@ file_list_init(struct file_list *fl, bool tmp)
|
||||
* Add a file name to the list
|
||||
*/
|
||||
void
|
||||
file_list_add(struct file_list *fl, char *fn, bool allocate)
|
||||
file_list_add(struct file_list *fl, const char *fn, bool allocate)
|
||||
{
|
||||
|
||||
if (fl && fn) {
|
||||
@ -1115,7 +1115,7 @@ file_headers_merge(size_t fnum, struct file_header **fh, FILE *f_out)
|
||||
* stdout.
|
||||
*/
|
||||
static void
|
||||
merge_files_array(size_t argc, char **argv, const char *fn_out)
|
||||
merge_files_array(size_t argc, const char **argv, const char *fn_out)
|
||||
{
|
||||
|
||||
if (argv && fn_out) {
|
||||
|
@ -66,7 +66,7 @@ struct file_reader;
|
||||
*/
|
||||
struct file_list
|
||||
{
|
||||
char **fns;
|
||||
const char * *fns;
|
||||
size_t count;
|
||||
size_t sz;
|
||||
bool tmp;
|
||||
@ -108,7 +108,7 @@ char *new_tmp_file_name(void);
|
||||
void tmp_file_atexit(const char *tmp_file);
|
||||
|
||||
void file_list_init(struct file_list *fl, bool tmp);
|
||||
void file_list_add(struct file_list *fl, char *fn, bool allocate);
|
||||
void file_list_add(struct file_list *fl, const char *fn, bool allocate);
|
||||
void file_list_populate(struct file_list *fl, int argc, char **argv, bool allocate);
|
||||
void file_list_clean(struct file_list *fl);
|
||||
|
||||
|
@ -1299,7 +1299,11 @@ main(int argc, char **argv)
|
||||
struct file_list fl;
|
||||
|
||||
file_list_init(&fl, false);
|
||||
file_list_populate(&fl, argc, argv, true);
|
||||
/* No file arguments remaining means "read from stdin." */
|
||||
if (argc == 0)
|
||||
file_list_add(&fl, "-", true);
|
||||
else
|
||||
file_list_populate(&fl, argc, argv, true);
|
||||
merge_files(&fl, outfile);
|
||||
file_list_clean(&fl);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user