extern char *mktemp(); /* So the compiler won't complain */
extern char *getenv();
extern void perror();
-FILE *tryopen(); /* This might be a good idea */
-void done();
+
+char *stringappend PARAMS((char *, int, char *));
+void openfiles PARAMS((void));
+void open_extra_files PARAMS((void));
+FILE *tryopen PARAMS((char *, char *)); /* This might be a good idea */
+void done PARAMS((int));
extern char *program_name;
extern int verboseflag;
int fixed_outfiles = 0;
\f
-char*
-stringappend(string1, end1, string2)
-char *string1;
-int end1;
-char *string2;
+char *
+stringappend (char *string1, int end1, char *string2)
{
register char *ostring;
register char *cp, *cp1;
*cp++ = *cp1++;
cp1 = string2;
- while (*cp++ = *cp1++) ;
+ while ((*cp++ = *cp1++))
+ ;
return ostring;
}
/* JF this has been hacked to death. Nowaday it sets up the file names for
the output files, and opens the tmp files and the parser */
void
-openfiles()
+openfiles (void)
{
char *name_base;
register char *cp;
strlwr (infile);
#endif /* MSDOS */
+#if (defined(_WIN32) && !defined(__CYGWIN32__))
+ tmp_base = getenv ("TEMP"); /* Windows95 defines this ... */
+ if (tmp_base == 0)
+ tmp_base = getenv ("Temp"); /* ... while NT prefers this */
+ if (tmp_base == 0)
+ tmp_base = "";
+ strlwr (infile);
+#endif /* _WIN32 && !__CYGWIN32__ */
+
+#if (defined(unix) || defined(__unix) || defined(__unix__))
+ {
+ char *tmp_ptr = getenv("TMPDIR");
+
+ if (tmp_ptr != 0)
+ tmp_base = stringappend (tmp_ptr, strlen (tmp_ptr), "/b.");
+ }
+#endif /* unix || __unix || __unix__ */
+
tmp_len = strlen (tmp_base);
if (spec_outfile)
fdefines = tryopen(tmpdefsfile, "w+");
}
-#ifndef MSDOS
+#if !(defined (MSDOS) || (defined(_WIN32) && !defined(__CYGWIN32__)))
if (! noparserflag)
unlink(actfile);
unlink(tmpattrsfile);
unlink(tmptabfile);
unlink(tmpdefsfile);
-#endif
+#endif /* MSDOS || (_WIN32 && !__CYGWIN32__) */
/* These are opened by `done' or `open_extra_files', if at all */
if (spec_outfile)
This is done when %semantic_parser is seen in the declarations section. */
void
-open_extra_files()
+open_extra_files (void)
{
FILE *ftmp;
int c;
/* JF to make file opening easier. This func tries to open file
NAME with mode MODE, and prints an error message if it fails. */
FILE *
-tryopen(name, mode)
-char *name;
-char *mode;
+tryopen (char *name, char *mode)
{
FILE *ptr;
}
void
-done(k)
-int k;
+done (int k)
{
if (faction)
fclose(faction);
if (k==0) sys$exit(SS$_NORMAL);
sys$exit(SS$_ABORT);
#else
-#ifdef MSDOS
+#if (defined (MSDOS) || (defined(_WIN32) && !defined(__CYGWIN32__)))
if (actfile && ! noparserflag) unlink(actfile);
if (tmpattrsfile) unlink(tmpattrsfile);
if (tmptabfile) unlink(tmptabfile);
if (tmpdefsfile) unlink(tmpdefsfile);
-#endif /* MSDOS */
+#endif /* MSDOS || (_WIN32 && !__CYGWIN32__) */
exit(k);
#endif /* not VMS, or __VMS_POSIX */
}