aboutsummaryrefslogtreecommitdiffstats
path: root/src/prefix-args.c
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1998-01-02 21:48:33 +0000
committerRichard M. Stallman <[email protected]>1998-01-02 21:48:33 +0000
commit5303ab61e0fbf40ed6ec7f421dbd767d5276ac1e (patch)
tree77bb244ded844923ec942842c6127a4b3bcdca10 /src/prefix-args.c
parentfe0066f50fdafe0d93b523ee34420324f4bead0a (diff)
Initial revision
Diffstat (limited to 'src/prefix-args.c')
-rw-r--r--src/prefix-args.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/prefix-args.c b/src/prefix-args.c
new file mode 100644
index 0000000000..8be1558f08
--- /dev/null
+++ b/src/prefix-args.c
@@ -0,0 +1,53 @@
+/* prefix-args.c - echo each argument, prefixed by a string.
+ Jim Blandy <[email protected]> - September 1992
+
+ When using GCC 2 as the linker in the build process, options
+ intended for the linker need to be prefixed with the "-Xlinker"
+ option. If an option takes an argument, we need to use -Xlinker
+ twice - once for the option and once for its argument. For
+ example, to run the linker with the options "-Bstatic" "-e"
+ "_start", you'd need to pass the following options to GCC:
+
+ -Xlinker -Bstatic -Xlinker -e -Xlinker _start.
+
+ The Emacs makefile used to use a Bourne Shell `for' loop to prefix
+ each linker option with "-Xlinker", but 1) the for loop was hairier
+ than one might hope because it had to work when there were no
+ arguments to pass to the linker - the shell barfs on a loop like
+ this:
+
+ for arg in ; do echo -Xlinker "$arg"; done
+
+ and 2) the whole compilation command containing this loop seems to
+ exit with a non-zero status and halt the build under Ultrix.
+
+ If I can't write a completely portable program to do this in C,
+ I'm quitting and taking up gardening. */
+
+#include <stdio.h>
+
+main (argc, argv)
+ int argc;
+ char **argv;
+{
+ char *progname;
+ char *prefix;
+
+ progname = argv[0];
+ argc--, argv++;
+
+ if (argc < 1)
+ {
+ fprintf (stderr, "Usage: %s PREFIX ARGS...\n\
+Echo each ARG preceded by PREFIX and a space.\n", progname);
+ exit (2);
+ }
+
+ prefix = argv[0];
+ argc--, argv++;
+
+ for (; argc > 0; argc--, argv++)
+ printf ("%s %s%c", prefix, argv[0], (argc > 1) ? ' ' : '\n');
+
+ exit (0);
+}