summary refs log tree commit diff
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-10-27 12:02:05 +0100
committerChristian Neukirchen <chneukirchen@gmail.com>2015-10-27 12:02:05 +0100
commitad057ce306790a6bf54808cb7c06a37111a8baa3 (patch)
treeea1d4b82c005165d5831a833c17c64fcab1a1524
parente97e13815be73f6a7cc56de4812077c38b09ee92 (diff)
downloadxe-ad057ce306790a6bf54808cb7c06a37111a8baa3.tar.gz
xe-ad057ce306790a6bf54808cb7c06a37111a8baa3.tar.xz
xe-ad057ce306790a6bf54808cb7c06a37111a8baa3.zip
default command: printf %s\n
-rw-r--r--README.md2
-rw-r--r--xa.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/README.md b/README.md
index 20aab72..f806369 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,8 @@ Over apply:
 * `-a`: take arguments from commandline, starting after the first `--`.
 * `-A`: take arguments from commandline, starting after the first *argsep*.
 
+If no argument is passed, default to "printf %s\n".
+
 ## Return code
 
 Like GNU and OpenBSD xargs:
diff --git a/xa.c b/xa.c
index 666ec3e..fd1857b 100644
--- a/xa.c
+++ b/xa.c
@@ -211,7 +211,8 @@ main(int argc, char *argv[])
 				break;
 			}
 
-	cmd = calloc(argc-optind+maxatonce+1+(sflag ? 4 : 0), sizeof (char *));
+	cmd = calloc(argc-optind+maxatonce+1+
+	    (optind==cmdend ? 2 : 0)+(sflag ? 4 : 0), sizeof (char *));
 	if (!cmd)
 		exit(1);
 
@@ -225,6 +226,11 @@ main(int argc, char *argv[])
 			cmd[l++] = xstrdup("-");
 		}
 
+		if (optind == cmdend) {
+			cmd[l++] = xstrdup("printf");
+			cmd[l++] = xstrdup("%s\\n");
+		}
+
 		if (maxatonce == 1) {
 			// substitute {}
 			int substituted = 0;