Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jun 2018 21:11:29 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r335742 - stable/11/usr.bin/sort
Message-ID:  <201806272111.w5RLBTWe003652@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans
Date: Wed Jun 27 21:11:28 2018
New Revision: 335742
URL: https://svnweb.freebsd.org/changeset/base/335742

Log:
  MFC r335404: 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

Modified:
  stable/11/usr.bin/sort/file.c
  stable/11/usr.bin/sort/file.h
  stable/11/usr.bin/sort/sort.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.bin/sort/file.c
==============================================================================
--- stable/11/usr.bin/sort/file.c	Wed Jun 27 21:09:55 2018	(r335741)
+++ stable/11/usr.bin/sort/file.c	Wed Jun 27 21:11:28 2018	(r335742)
@@ -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) {
@@ -1116,7 +1116,7 @@ file_headers_merge(size_t fnum, struct file_header **f
  * 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) {

Modified: stable/11/usr.bin/sort/file.h
==============================================================================
--- stable/11/usr.bin/sort/file.h	Wed Jun 27 21:09:55 2018	(r335741)
+++ stable/11/usr.bin/sort/file.h	Wed Jun 27 21:11:28 2018	(r335742)
@@ -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);
 

Modified: stable/11/usr.bin/sort/sort.c
==============================================================================
--- stable/11/usr.bin/sort/sort.c	Wed Jun 27 21:09:55 2018	(r335741)
+++ stable/11/usr.bin/sort/sort.c	Wed Jun 27 21:11:28 2018	(r335742)
@@ -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);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806272111.w5RLBTWe003652>