7
int slashdrivesub(char *ln)
9
* replaces \\c\ with c:\, returns change in string length
10
* this version required for older cygwins
13
char *sp, *lp=ln, ctmp;
17
sp = strstr(lp, "\\\\");
18
if (sp && strlen(sp) > 3)
20
if (sp[2] == 'a' || sp[2] == 'b' || sp[2] == 'c' || sp[2] == 'd' ||
21
sp[2] == 'e' || sp[2] == 'f' || sp[2] == 'g' || sp[2] == 'h')
29
for (lp=sp+3; *lp = lp[1]; lp++);
43
int cygdrivesub(char *ln)
45
* replaces \cygdrive\c\ with c:\, returns change in string length
46
* this version works cygnus version 1.1.0
52
while(sp = strstr(ln, "\\cygdrive\\"))
59
while (*sp = sp[9]) sp++;
61
return( slashdrivesub(ln) - (i*9) );
64
void slashsub(char *ln)
66
* changes forward slash of unix to backslash of windoze
70
for (i=0; ln[i]; i++) if (ln[i] == '/') ln[i] = '\\';
73
void doto2dotobj(char *ln)
75
* changes all occurences of unix's .o extension to windoze-friendly obj
83
if (ln[i] == '.' && ln[i+1] == 'o' && isspace(ln[i+2]))
94
sprintf(ln, "%s", ln2);
102
fprintf(stdout, "%s\n", ln);
108
typedef struct wOrDs WORDS;
115
void KillWords(WORDS *wp)
128
WORDS *AddWord(WORDS *wbas, char *wrd, int wlen)
133
wp = malloc(sizeof(WORDS));
135
wp->word = malloc( (wlen+1) * sizeof(char) );
136
for (i=0; i != wlen; i++) wp->word[i] = wrd[i];
142
WORDS *AddFile(WORDS *wbase, char *fnam)
147
if (fnam[len-1] = 'f' && fnam[len-2] == '.');
149
for (i=len-3; i > 0; i--)
151
if (fnam[i] == ' ' || fnam[i] == '/' || fnam[i] == '\\')
157
wbase = AddWord(wbase, fnam+i, len-i-2);
162
int RenameFiles(WORDS *wbase)
167
for (wp=wbase; wp; wp = wp->next)
169
sprintf(ln, "MOVE %s.obj %s.o\n", wp->word, wp->word);
170
fprintf(stdout, "%s", ln);
171
if (system(ln)) return(1);
176
main(int nargs, char **args)
178
char ln[4096], *cptr=NULL;
179
int i, j, k, ierr, ic;
180
int COMP=0, RENAME=0;
183
ic = sprintf(ln, "\"%s\" ", DEFDF);
185
ic += sprintf(ln+ic, "/iface:cref ");
187
for (i=1; i < nargs; i++)
189
if (args[i][0] == '-') /* compiler flag */
191
if (args[i][1] == 'o') /* handle renaming, guess exe not .obj */
194
k = strlen(args[++i]);
195
j = sprintf(ln+ic, "/Fe%s.exe ", args[i]);
199
else if (args[i][1] == 'l') /* library to link against */
201
j = sprintf(ln+ic, "/link:DEFAULTLIB:%s", &args[i][2]);
206
if (args[i][1] == 'c') COMP=1;
207
j = sprintf(ln+ic, "/%s ", &args[i][1]);
211
else /* must be files, not flags */
213
j = sprintf(ln+ic, "%s ", args[i]);
214
if (j > 3 && ln[ic+j-2] == 'f' && ln[ic+j-3] == '.')
215
{ /* add this file to list of files to be moved to .o */
216
wbase = AddFile(wbase, args[i]);
222
sprintf(ln+ic, "\n");
224
if (RENAME && COMP) /* gotta use different rename command if not exe */
226
cptr = strstr(ln, "/Fe");
229
cptr = strstr(cptr, ".exe");
231
cptr[0] = cptr[1] = cptr[2] = cptr[3] = ' ';
233
fprintf(stdout, "%s", ln);
235
if (!ierr && COMP && !RENAME) /* rename the .obj to .o */
236
ierr = RenameFiles(wbase);