From: nicolas.iooss@m4x.org (Nicolas Iooss) Date: Sun, 23 Mar 2014 22:01:39 +0100 Subject: [refpolicy] [PATCH 3/3] fc_sort: make outfile argument optional In-Reply-To: <1395608499-9916-1-git-send-email-nicolas.iooss@m4x.org> References: <1395608499-9916-1-git-send-email-nicolas.iooss@m4x.org> Message-ID: <1395608499-9916-3-git-send-email-nicolas.iooss@m4x.org> To: refpolicy@oss.tresys.com List-Id: refpolicy.oss.tresys.com When working on fc_sort to try to understand why using /usr/s?bin/... file contexts has been reported not to work properly [1], I found it frustrating not to be able to do "tmp/fc_sort my_filecontexts.fc" and see the result printed on the screen. This patch implements this behavior by making optional the second argument of fc_sort. [1] commit 36e2216f8 of contrib repository, http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-refpolicy.git;a=commit;h=36e2216f82192660d063012e69281f27ba20864b --- support/fc_sort.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/support/fc_sort.c b/support/fc_sort.c index 5aed783..6dc59af 100644 --- a/support/fc_sort.c +++ b/support/fc_sort.c @@ -328,13 +328,13 @@ int main(int argc, char *argv[]) /* Check for the correct number of command line arguments. */ - if (argc != 3) { - fprintf(stderr, "Usage: %s \n",argv[0]); + if (argc < 2 || argc > 3) { + fprintf(stderr, "Usage: %s []\n",argv[0]); return 1; } input_name = argv[1]; - output_name = argv[2]; + output_name = (argc >= 3) ? argv[2] : NULL; i = j = lines = 0; @@ -526,9 +526,13 @@ int main(int argc, char *argv[]) fc_merge_sort(master); /* Open the output file. */ - if (!(out_file = fopen(output_name, "w"))) { - printf("Error: failure opening output file for write.\n"); - return -1; + if (output_name) { + if (!(out_file = fopen(output_name, "w"))) { + printf("Error: failure opening output file for write.\n"); + return -1; + } + } else { + out_file = stdout; } /* Output the sorted file_context linked list to the output file. */ @@ -555,7 +559,9 @@ int main(int argc, char *argv[]) } free(master); - fclose(out_file); + if (output_name) { + fclose(out_file); + } return 0; } -- 1.9.0