diff --git a/usr.bin/sort/file.c b/usr.bin/sort/file.c index 59752012eda2..58a97826916e 100644 --- a/usr.bin/sort/file.c +++ b/usr.bin/sort/file.c @@ -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) { diff --git a/usr.bin/sort/file.h b/usr.bin/sort/file.h index f3a7d3abc022..724928a7c050 100644 --- a/usr.bin/sort/file.h +++ b/usr.bin/sort/file.h @@ -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); diff --git a/usr.bin/sort/sort.c b/usr.bin/sort/sort.c index 5edc5af6703e..bbe8af4607bd 100644 --- a/usr.bin/sort/sort.c +++ b/usr.bin/sort/sort.c @@ -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); }