C:/Users/Dennis/src/lang/russell.orig/src/utilities/exec_cmd.c

Go to the documentation of this file.
00001 #
00002 /*
00003  * command maker:
00004  *
00005  * Prepends and appends a set of default arguments to a command.
00006  *
00007  * Compile a different version of this for each of your favorite commands
00008  * by changing argtbl below.
00009  */
00010 
00011 /*
00012  * table of default arguments:
00013  *
00014  * actual command name
00015  * prepended default args
00016  * 0
00017  * appended default args
00018  * 0
00019  */
00020 
00021 # include <stdio.h>
00022 
00023 char *argtbl[] = {
00024     "/bin/echo",                /* actual command name                      */
00025     "---",
00026     ">>>",
00027     0,                          /* passed args go here                      */
00028     "<<<",
00029     "---",
00030     0,
00031 };
00032 
00033 /*
00034  */
00035 main( argc, argv )
00036 char **argv;
00037 {
00038 char *nargv[512];       /* array of argument pointers constructed for   */
00039                         /* execv(II).  This is much bigger than it need */
00040                         /* be, but ...                                  */
00041 
00042 register int iin, nargc, itbl;
00043 
00044   /* copy prepended default arguments */
00045 
00046     itbl = nargc = 0;
00047     while( argtbl[itbl] )
00048         nargv[nargc++] = argtbl[itbl++];
00049 
00050   /* copy the arguments passed to me */
00051 
00052     iin = 1;
00053     while( iin < argc )
00054         nargv[nargc++] = argv[iin++];
00055 
00056   /* copy default appended arguments */
00057 
00058     itbl++;
00059     while( argtbl[itbl] )
00060         nargv[nargc++] = argtbl[itbl++];
00061 
00062   /* add the trailing null and execv */
00063 
00064     nargv[nargc] = 0;
00065     execv( argtbl[0], nargv );
00066 
00067   /* whoops! */
00068 
00069     fprintf(stderr, "Can't exec %s\n", argtbl[0]);
00070     exit(1);
00071 }

Generated on Fri Jan 25 10:39:48 2008 for russell by  doxygen 1.5.4