00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "pex-common.h"
00023
00024 #include <stdio.h>
00025 #ifdef HAVE_STRING_H
00026 #include <string.h>
00027 #endif
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 static int first_time = 1;
00045
00046 extern void mpwify_filename PARAMS ((const char *, char *));
00047
00048 int
00049 pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
00050 const char *program;
00051 char * const *argv;
00052 const char *this_pname;
00053 const char *temp_base;
00054 char **errmsg_fmt, **errmsg_arg;
00055 int flags;
00056 {
00057 char tmpprogram[255];
00058 char *cp, *tmpname;
00059 int i;
00060
00061 mpwify_filename (program, tmpprogram);
00062 if (first_time)
00063 {
00064 printf ("Set Failed 0\n");
00065 first_time = 0;
00066 }
00067
00068 fputs ("If {Failed} == 0\n", stdout);
00069
00070
00071 if (flags & PEXECUTE_VERBOSE)
00072 {
00073 fputs ("\tEcho ", stdout);
00074 fputc ('\'', stdout);
00075 fputs (tmpprogram, stdout);
00076 fputc ('\'', stdout);
00077 fputc (' ', stdout);
00078 for (i=1; argv[i]; i++)
00079 {
00080 fputc ('\'', stdout);
00081
00082 if (strchr(argv[i], '/'))
00083 {
00084 tmpname = (char *) xmalloc (256);
00085 mpwify_filename (argv[i], tmpname);
00086 argv[i] = tmpname;
00087 }
00088 for (cp = argv[i]; *cp; cp++)
00089 {
00090
00091 if (strchr("'+", *cp))
00092 fputc ('\266', stdout);
00093 fputc (*cp, stdout);
00094 }
00095 fputc ('\'', stdout);
00096 fputc (' ', stdout);
00097 }
00098 fputs ("\n", stdout);
00099 }
00100 fputs ("\t", stdout);
00101 fputs (tmpprogram, stdout);
00102 fputc (' ', stdout);
00103
00104 for (i=1; argv[i]; i++)
00105 {
00106
00107 if (strchr(argv[i], '/'))
00108 {
00109 tmpname = (char *) xmalloc (256);
00110 mpwify_filename (argv[i], tmpname);
00111 argv[i] = tmpname;
00112 }
00113 if (strchr (argv[i], ' '))
00114 fputc ('\'', stdout);
00115 for (cp = argv[i]; *cp; cp++)
00116 {
00117
00118 if (strchr("'+", *cp))
00119 fputc ('\266', stdout);
00120 fputc (*cp, stdout);
00121 }
00122 if (strchr (argv[i], ' '))
00123 fputc ('\'', stdout);
00124 fputc (' ', stdout);
00125 }
00126
00127 fputs ("\n", stdout);
00128
00129
00130
00131
00132
00133 fputs ("\tSet TmpStatus {Status}\n", stdout);
00134 fputs ("\tIf {TmpStatus} != 0\n", stdout);
00135 fputs ("\t\tSet Failed {TmpStatus}\n", stdout);
00136 fputs ("\tEnd\n", stdout);
00137 fputs ("End\n", stdout);
00138
00139
00140 return 0;
00141 }
00142
00143 int
00144 pwait (pid, status, flags)
00145 int pid;
00146 int *status;
00147 int flags;
00148 {
00149 *status = 0;
00150 return 0;
00151 }
00152
00153
00154
00155
00156 void
00157 pfinish ()
00158 {
00159 printf ("\tExit \"{Failed}\"\n");
00160 }
00161