summary refs log tree commit diff
diff options
context:
space:
mode:
-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;