[GRASS-SVN] r62086 - grass/trunk/general/g.list

svn_grass at osgeo.org svn_grass at osgeo.org
Thu Sep 25 08:31:40 PDT 2014


Author: hcho
Date: 2014-09-25 08:31:40 -0700 (Thu, 25 Sep 2014)
New Revision: 62086

Modified:
   grass/trunk/general/g.list/main.c
Log:
g.list: Add output= support for pretty/full printing; Redirect non-pretty/full output to pager

Modified: grass/trunk/general/g.list/main.c
===================================================================
--- grass/trunk/general/g.list/main.c	2014-09-25 14:49:41 UTC (rev 62085)
+++ grass/trunk/general/g.list/main.c	2014-09-25 15:31:40 UTC (rev 62086)
@@ -68,7 +68,7 @@
     struct Popen pager;
     FILE *fp;
     char *separator;
-    int use_region;
+    int use_region, use_pager;
     struct Cell_head window;
 
     G_gisinit(argv[0]);
@@ -158,10 +158,6 @@
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
 
-    if ((flag.pretty->answer || flag.full->answer) && opt.output->answer)
-        G_fatal_error(_("-%c/-%c and %s= are mutually exclusive"),
-		      flag.pretty->key, flag.full->key, opt.output->key);
-
     if ((flag.pretty->answer || flag.full->answer) && opt.region->answer)
         G_fatal_error(_("-%c/-%c and %s= are mutually exclusive"),
 		      flag.pretty->key, flag.full->key, opt.region->key);
@@ -284,13 +280,17 @@
 	}
     }
 
-    if (flag.pretty->answer || flag.full->answer) {
+    use_pager = !opt.output->answer || !opt.output->answer[0] ||
+		strcmp(opt.output->answer, "-") == 0;
+
+    if (use_pager)
 	fp = G_open_pager(&pager);
-	dup2(fileno(fp), STDOUT_FILENO);
-    }
     else
 	fp = G_open_option_file(opt.output);
 
+    if (flag.pretty->answer || flag.full->answer)
+	dup2(fileno(fp), STDOUT_FILENO);
+
     for (i = 0; i < num_types; i++) {
 	const struct list *elem;
 
@@ -331,15 +331,15 @@
 	}
     }
 
-    if (flag.pretty->answer || flag.full->answer) {
+    if (flag.pretty->answer || flag.full->answer)
 	fclose(stdout);
+    else if (any)
+	fprintf(fp, "\n");
+
+    if (use_pager)
 	G_close_pager(&pager);
-    }
-    else {
-	if (any)
-	    fprintf(fp, "\n");
+    else
 	G_close_option_file(fp);
-    }
 
     if (filter)
 	G_free_ls_filter(filter);



More information about the grass-commit mailing list