commit:     304ec5224b39f6d7ac2c731bd9b4c0fd4f5c0af8
Author:     Nicolas Iooss <nicolas.iooss <AT> m4x <DOT> org>
AuthorDate: Sun Mar 23 21:01:39 2014 +0000
Commit:     Sven Vermeulen <swift <AT> gentoo <DOT> org>
CommitDate: Tue Apr  8 15:20:50 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-refpolicy.git;a=commit;h=304ec522

fc_sort: make outfile argument optional

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 <infile> <outfile>\n",argv[0]);
+       if (argc < 2 || argc > 3) {
+               fprintf(stderr, "Usage: %s <infile> [<outfile>]\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;
 }

Reply via email to