customised ccache support: read the CCACHE_OUTFILES env variable and if exists, the names of all generated files are written to the filename specified in the env variable

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10898 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-11-03 12:51:45 +00:00
commit 6fb0f48935
27 changed files with 111 additions and 83 deletions

View file

@ -92,12 +92,12 @@ DohEncoding(name, fn) Register a format encoding for Printf
Currently Available datatypes Currently Available datatypes
------------------------------ ------------------------------
NewString(char *initial) Strings NewString(char *initial) Strings
NewHash() Hash NewHash() Hash
NewList() List NewList() List
NewVoid(void *ptr, void (*del)(void *)) Void NewVoid(void *ptr, void (*del)(void *)) Void
NewFile(char *file, char *mode) File NewFile(char *filename, char *mode, List *newfiles) File
NewCallable(DOH *(*func)(DOH *, DOH *)) Callable object NewCallable(DOH *(*func)(DOH *, DOH *)) Callable object
Odds and ends: Odds and ends:

View file

@ -297,7 +297,7 @@ extern char *DohStrchr(const DOHString_or_char *s1, int ch);
* Files * Files
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
extern DOHFile *DohNewFile(DOH *file, const char *mode); extern DOHFile *DohNewFile(DOH *filename, const char *mode, DOHList *outfiles);
extern DOHFile *DohNewFileFromFile(FILE *f); extern DOHFile *DohNewFileFromFile(FILE *f);
extern DOHFile *DohNewFileFromFd(int fd); extern DOHFile *DohNewFileFromFd(int fd);
extern void DohFileErrorDisplay(DOHString * filename); extern void DohFileErrorDisplay(DOHString * filename);

View file

@ -228,15 +228,16 @@ static DohObjInfo DohFileType = {
* NewFile() * NewFile()
* *
* Create a new file from a given filename and mode. * Create a new file from a given filename and mode.
* If newfiles is non-zero, the filename is added to the list of new files.
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
DOH *DohNewFile(DOH *fn, const char *mode) { DOH *DohNewFile(DOH *filename, const char *mode, DOHList *newfiles) {
DohFile *f; DohFile *f;
FILE *file; FILE *file;
char *filename; char *filen;
filename = Char(fn); filen = Char(filename);
file = fopen(filename, mode); file = fopen(filen, mode);
if (!file) if (!file)
return 0; return 0;
@ -245,6 +246,8 @@ DOH *DohNewFile(DOH *fn, const char *mode) {
fclose(file); fclose(file);
return 0; return 0;
} }
if (newfiles)
Append(newfiles, filename);
f->filep = file; f->filep = file;
f->fd = 0; f->fd = 0;
f->closeondel = 1; f->closeondel = 1;

View file

@ -1590,7 +1590,7 @@ int ALLEGROCL::top(Node *n) {
Printf(cl_filename, "%s%s.cl", SWIG_output_directory(), module_name); Printf(cl_filename, "%s%s.cl", SWIG_output_directory(), module_name);
f_cl = NewFile(cl_filename, "w"); f_cl = NewFile(cl_filename, "w", SWIG_output_files());
if (!f_cl) { if (!f_cl) {
Printf(stderr, "Unable to open %s for writing\n", cl_filename); Printf(stderr, "Unable to open %s for writing\n", cl_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1599,7 +1599,7 @@ int ALLEGROCL::top(Node *n) {
Generate_Wrapper = CPlusPlus || CWrap; Generate_Wrapper = CPlusPlus || CWrap;
if (Generate_Wrapper) { if (Generate_Wrapper) {
f_cxx = NewFile(cxx_filename, "w"); f_cxx = NewFile(cxx_filename, "w", SWIG_output_files());
if (!f_cxx) { if (!f_cxx) {
Close(f_cl); Close(f_cl);
Delete(f_cl); Delete(f_cl);

View file

@ -119,15 +119,14 @@ int CFFI::top(Node *n) {
Printf(lisp_filename, "%s%s.lisp", SWIG_output_directory(), module); Printf(lisp_filename, "%s%s.lisp", SWIG_output_directory(), module);
File *f_lisp = NewFile(lisp_filename, "w"); File *f_lisp = NewFile(lisp_filename, "w", SWIG_output_files());
NewFile(lisp_filename, "w");
if (!f_lisp) { if (!f_lisp) {
FileErrorDisplay(lisp_filename); FileErrorDisplay(lisp_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
if (CPlusPlus || CWrap) { if (CPlusPlus || CWrap) {
f_cxx = NewFile(cxx_filename, "w"); f_cxx = NewFile(cxx_filename, "w", SWIG_output_files());
if (!f_cxx) { if (!f_cxx) {
Close(f_lisp); Close(f_lisp);
Delete(f_lisp); Delete(f_lisp);
@ -137,7 +136,7 @@ int CFFI::top(Node *n) {
String *clos_filename = NewString(""); String *clos_filename = NewString("");
Printf(clos_filename, "%s%s-clos.lisp", SWIG_output_directory(), module); Printf(clos_filename, "%s%s-clos.lisp", SWIG_output_directory(), module);
f_clos = NewFile(clos_filename, "w"); f_clos = NewFile(clos_filename, "w", SWIG_output_files());
if (!f_clos) { if (!f_clos) {
Close(f_lisp); Close(f_lisp);
Delete(f_lisp); Delete(f_lisp);

View file

@ -188,7 +188,7 @@ int CHICKEN::top(Node *n) {
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -251,7 +251,7 @@ int CHICKEN::top(Node *n) {
Printf(f_init, "#endif\n"); Printf(f_init, "#endif\n");
Printf(chicken_filename, "%s%s.scm", SWIG_output_directory(), module); Printf(chicken_filename, "%s%s.scm", SWIG_output_directory(), module);
if ((f_scm = NewFile(chicken_filename, "w")) == 0) { if ((f_scm = NewFile(chicken_filename, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(chicken_filename); FileErrorDisplay(chicken_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }

View file

@ -79,7 +79,7 @@ int CLISP::top(Node *n) {
Printf(output_filename, "%s%s.lisp", SWIG_output_directory(), module); Printf(output_filename, "%s%s.lisp", SWIG_output_directory(), module);
} }
f_cl = NewFile(output_filename, "w+"); f_cl = NewFile(output_filename, "w+", SWIG_output_files());
if (!f_cl) { if (!f_cl) {
FileErrorDisplay(output_filename); FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -286,7 +286,7 @@ public:
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -297,7 +297,7 @@ public:
Printf(stderr, "Unable to determine outfile_h\n"); Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime_h = NewFile(outfile_h, "w"); f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) { if (!f_runtime_h) {
FileErrorDisplay(outfile_h); FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -396,7 +396,7 @@ public:
// Generate the intermediary class // Generate the intermediary class
{ {
String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), imclass_name); String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), imclass_name);
File *f_im = NewFile(filen, "w"); File *f_im = NewFile(filen, "w", SWIG_output_files());
if (!f_im) { if (!f_im) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -440,7 +440,7 @@ public:
// Generate the C# module class // Generate the C# module class
{ {
String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), module_class_name); String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), module_class_name);
File *f_module = NewFile(filen, "w"); File *f_module = NewFile(filen, "w", SWIG_output_files());
if (!f_module) { if (!f_module) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1155,7 +1155,7 @@ public:
} else { } else {
// Global enums are defined in their own file // Global enums are defined in their own file
String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), symname); String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), symname);
File *f_enum = NewFile(filen, "w"); File *f_enum = NewFile(filen, "w", SWIG_output_files());
if (!f_enum) { if (!f_enum) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1734,7 +1734,7 @@ public:
} }
String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), proxy_class_name); String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), proxy_class_name);
f_proxy = NewFile(filen, "w"); f_proxy = NewFile(filen, "w", SWIG_output_files());
if (!f_proxy) { if (!f_proxy) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -2960,7 +2960,7 @@ public:
void emitTypeWrapperClass(String *classname, SwigType *type) { void emitTypeWrapperClass(String *classname, SwigType *type) {
String *swigtype = NewString(""); String *swigtype = NewString("");
String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), classname); String *filen = NewStringf("%s%s.cs", SWIG_output_directory(), classname);
File *f_swigtype = NewFile(filen, "w"); File *f_swigtype = NewFile(filen, "w", SWIG_output_files());
if (!f_swigtype) { if (!f_swigtype) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -174,7 +174,7 @@ public:
} }
} else if (strcmp(argv[i], "-procdoc") == 0) { } else if (strcmp(argv[i], "-procdoc") == 0) {
if (argv[i + 1]) { if (argv[i + 1]) {
procdoc = NewFile(argv[i + 1], (char *) "w"); procdoc = NewFile(argv[i + 1], "w", SWIG_output_files());
if (!procdoc) { if (!procdoc) {
FileErrorDisplay(argv[i + 1]); FileErrorDisplay(argv[i + 1]);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -299,7 +299,7 @@ public:
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -499,7 +499,7 @@ public:
SWIG_output_directory(), SWIG_output_directory(),
primitive_name); primitive_name);
Delete(primitive_name); Delete(primitive_name);
File *scmstubfile = NewFile(fname, (char *) "w"); File *scmstubfile = NewFile(fname, "w", SWIG_output_files());
if (!scmstubfile) { if (!scmstubfile) {
FileErrorDisplay(fname); FileErrorDisplay(fname);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -530,7 +530,7 @@ public:
String *fname = NewStringf("%s%s.scm", SWIG_output_directory(), String *fname = NewStringf("%s%s.scm", SWIG_output_directory(),
module_name); module_name);
File *goopsfile = NewFile(fname, (char *) "w"); File *goopsfile = NewFile(fname, "w", SWIG_output_files());
if (!goopsfile) { if (!goopsfile) {
FileErrorDisplay(fname); FileErrorDisplay(fname);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -293,7 +293,7 @@ public:
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -304,7 +304,7 @@ public:
Printf(stderr, "Unable to determine outfile_h\n"); Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime_h = NewFile(outfile_h, "w"); f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) { if (!f_runtime_h) {
FileErrorDisplay(outfile_h); FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -420,7 +420,7 @@ public:
// Generate the intermediary class // Generate the intermediary class
{ {
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), imclass_name); String *filen = NewStringf("%s%s.java", SWIG_output_directory(), imclass_name);
File *f_im = NewFile(filen, "w"); File *f_im = NewFile(filen, "w", SWIG_output_files());
if (!f_im) { if (!f_im) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -471,7 +471,7 @@ public:
// Generate the Java module class // Generate the Java module class
{ {
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), module_class_name); String *filen = NewStringf("%s%s.java", SWIG_output_directory(), module_class_name);
File *f_module = NewFile(filen, "w"); File *f_module = NewFile(filen, "w", SWIG_output_files());
if (!f_module) { if (!f_module) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -523,7 +523,7 @@ public:
// Generate the Java constants interface // Generate the Java constants interface
if (Len(module_class_constants_code) != 0) { if (Len(module_class_constants_code) != 0) {
String *filen = NewStringf("%s%sConstants.java", SWIG_output_directory(), module_class_name); String *filen = NewStringf("%s%sConstants.java", SWIG_output_directory(), module_class_name);
File *f_module = NewFile(filen, "w"); File *f_module = NewFile(filen, "w", SWIG_output_files());
if (!f_module) { if (!f_module) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1210,7 +1210,7 @@ public:
} else { } else {
// Global enums are defined in their own file // Global enums are defined in their own file
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), symname); String *filen = NewStringf("%s%s.java", SWIG_output_directory(), symname);
File *f_enum = NewFile(filen, "w"); File *f_enum = NewFile(filen, "w", SWIG_output_files());
if (!f_enum) { if (!f_enum) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1742,7 +1742,7 @@ public:
} }
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), proxy_class_name); String *filen = NewStringf("%s%s.java", SWIG_output_directory(), proxy_class_name);
f_proxy = NewFile(filen, "w"); f_proxy = NewFile(filen, "w", SWIG_output_files());
if (!f_proxy) { if (!f_proxy) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -2798,7 +2798,7 @@ public:
void emitTypeWrapperClass(String *classname, SwigType *type) { void emitTypeWrapperClass(String *classname, SwigType *type) {
String *swigtype = NewString(""); String *swigtype = NewString("");
String *filen = NewStringf("%s%s.java", SWIG_output_directory(), classname); String *filen = NewStringf("%s%s.java", SWIG_output_directory(), classname);
File *f_swigtype = NewFile(filen, "w"); File *f_swigtype = NewFile(filen, "w", SWIG_output_files());
if (!f_swigtype) { if (!f_swigtype) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -213,7 +213,7 @@ public:
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
/* Open the output file */ /* Open the output file */
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -180,6 +180,7 @@ static String *dependencies_target = 0;
static int external_runtime = 0; static int external_runtime = 0;
static String *external_runtime_name = 0; static String *external_runtime_name = 0;
enum { STAGE1=1, STAGE2=2, STAGE3=4, STAGE4=8, STAGEOVERFLOW=16 }; enum { STAGE1=1, STAGE2=2, STAGE3=4, STAGE4=8, STAGEOVERFLOW=16 };
static List *all_output_files = 0;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// check_suffix(char *name) // check_suffix(char *name)
@ -300,6 +301,11 @@ void SWIG_config_cppext(const char *ext) {
cpp_extension = (char *) ext; cpp_extension = (char *) ext;
} }
List *SWIG_output_files() {
assert(all_output_files);
return all_output_files;
}
void SWIG_setfeature(const char *cfeature, const char *cvalue) { void SWIG_setfeature(const char *cfeature, const char *cvalue) {
Hash *features_hash = Swig_cparse_features(); Hash *features_hash = Swig_cparse_features();
String *name = NewString(""); String *name = NewString("");
@ -363,7 +369,7 @@ static void SWIG_dump_runtime() {
} }
} }
runtime = NewFile(outfile, "w"); runtime = NewFile(outfile, "w", SWIG_output_files());
if (!runtime) { if (!runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -867,6 +873,7 @@ int SWIG_main(int argc, char *argv[], Language *l) {
} }
libfiles = NewList(); libfiles = NewList();
all_output_files = NewList();
/* Check for SWIG_FEATURES environment variable */ /* Check for SWIG_FEATURES environment variable */
@ -940,20 +947,21 @@ int SWIG_main(int argc, char *argv[], Language *l) {
if (!s) { if (!s) {
fprintf(stderr, "Unable to locate '%s' in the SWIG library.\n", input_file); fprintf(stderr, "Unable to locate '%s' in the SWIG library.\n", input_file);
} else { } else {
FILE *f = fopen(outfile, "r"); FILE *f = Swig_open(outfile);
if (f) { if (f) {
fclose(f); fclose(f);
fprintf(stderr, "File '%s' already exists. Checkout aborted.\n", outfile); fprintf(stderr, "File '%s' already exists. Checkout aborted.\n", outfile);
} else { } else {
f = fopen(outfile, "w"); File *f_outfile = NewFile(outfile, "w", SWIG_output_files());
if (!f) { if (!f_outfile) {
fprintf(stderr, "Unable to create file '%s'\n", outfile); FileErrorDisplay(outfile);
} else { SWIG_exit(EXIT_FAILURE);
if (Verbose) } else {
fprintf(stdout, "'%s' checked out from the SWIG library.\n", input_file); if (Verbose)
fputs(Char(s), f); fprintf(stdout, "'%s' checked out from the SWIG library.\n", outfile);
fclose(f); Printv(f_outfile, s, NIL);
} Close(f_outfile);
}
} }
} }
} else { } else {
@ -1019,14 +1027,14 @@ int SWIG_main(int argc, char *argv[], Language *l) {
outfile = NewString(outfile_name); outfile = NewString(outfile_name);
} }
if (dependencies_file && Len(dependencies_file) != 0) { if (dependencies_file && Len(dependencies_file) != 0) {
f_dependencies_file = NewFile(dependencies_file, "w"); f_dependencies_file = NewFile(dependencies_file, "w", SWIG_output_files());
if (!f_dependencies_file) { if (!f_dependencies_file) {
FileErrorDisplay(dependencies_file); FileErrorDisplay(dependencies_file);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
} else if (!depend_only) { } else if (!depend_only) {
String *filename = NewStringf("%s_wrap.%s", Swig_file_basename(input_file), depends_extension); String *filename = NewStringf("%s_wrap.%s", Swig_file_basename(input_file), depends_extension);
f_dependencies_file = NewFile(filename, "w"); f_dependencies_file = NewFile(filename, "w", SWIG_output_files());
if (!f_dependencies_file) { if (!f_dependencies_file) {
FileErrorDisplay(filename); FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1173,6 +1181,21 @@ int SWIG_main(int argc, char *argv[], Language *l) {
if (memory_debug) if (memory_debug)
DohMemoryDebug(); DohMemoryDebug();
char *outfiles = getenv("CCACHE_OUTFILES");
if (outfiles) {
File *f_outfiles = NewFile(outfiles, "w", 0);
if (!f_outfiles) {
Printf(stderr, "Failed to write list of output files to the filename '%s' specified in CCACHE_OUTFILES environment variable - ", outfiles);
FileErrorDisplay(f_outfiles);
SWIG_exit(EXIT_FAILURE);
} else {
int i;
for (i = 0; i < Len(all_output_files); i++)
Printf(f_outfiles, "%s\n", Getitem(all_output_files, i));
Close(f_outfiles);
}
}
// Deletes // Deletes
Delete(libfiles); Delete(libfiles);
Preprocessor_delete(); Preprocessor_delete();

View file

@ -542,7 +542,7 @@ MODULA3():
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
File *openWriteFile(String *name) { File *openWriteFile(String *name) {
File *file = NewFile(name, "w"); File *file = NewFile(name, "w", SWIG_output_files());
if (!file) { if (!file) {
FileErrorDisplay(name); FileErrorDisplay(name);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -902,7 +902,7 @@ MODULA3():
/* Initialize all of the output files */ /* Initialize all of the output files */
outfile = Getattr(n, "outfile"); outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -2382,7 +2382,7 @@ MODULA3():
} }
String *filen = NewStringf("%s%s.m3", Swig_file_dirname(outfile), proxy_class_name); String *filen = NewStringf("%s%s.m3", Swig_file_dirname(outfile), proxy_class_name);
f_proxy = NewFile(filen, "w"); f_proxy = NewFile(filen, "w", SWIG_output_files());
if (!f_proxy) { if (!f_proxy) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -3762,7 +3762,7 @@ MODULA3():
void emitTypeWrapperClass(String *classname, SwigType *type) { void emitTypeWrapperClass(String *classname, SwigType *type) {
String *filen = NewStringf("%s%s.m3", Swig_file_dirname(outfile), classname); String *filen = NewStringf("%s%s.m3", Swig_file_dirname(outfile), classname);
File *f_swigtype = NewFile(filen, "w"); File *f_swigtype = NewFile(filen, "w", SWIG_output_files());
if (!f_swigtype) { if (!f_swigtype) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -129,7 +129,7 @@ public:
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -214,7 +214,7 @@ public:
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -293,12 +293,12 @@ public:
Printv(mlifile, module, ".mli", NIL); Printv(mlifile, module, ".mli", NIL);
String *mlfilen = NewStringf("%s%s", SWIG_output_directory(), mlfile); String *mlfilen = NewStringf("%s%s", SWIG_output_directory(), mlfile);
if ((f_mlout = NewFile(mlfilen, "w")) == 0) { if ((f_mlout = NewFile(mlfilen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(mlfilen); FileErrorDisplay(mlfilen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
String *mlifilen = NewStringf("%s%s", SWIG_output_directory(), mlifile); String *mlifilen = NewStringf("%s%s", SWIG_output_directory(), mlifile);
if ((f_mliout = NewFile(mlifilen, "w")) == 0) { if ((f_mliout = NewFile(mlifilen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(mlifilen); FileErrorDisplay(mlifilen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }

View file

@ -87,7 +87,7 @@ public:
String *module = Getattr(n, "name"); String *module = Getattr(n, "name");
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -222,7 +222,7 @@ public:
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -315,7 +315,7 @@ public:
pmfile = NewStringf("%s.pm", m); pmfile = NewStringf("%s.pm", m);
} }
String *filen = NewStringf("%s%s", SWIG_output_directory(), pmfile); String *filen = NewStringf("%s%s", SWIG_output_directory(), pmfile);
if ((f_pm = NewFile(filen, "w")) == 0) { if ((f_pm = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }

View file

@ -258,7 +258,7 @@ public:
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
/* main output file */ /* main output file */
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -302,7 +302,7 @@ public:
Printv(filen, SWIG_output_directory(), module, ".php", NIL); Printv(filen, SWIG_output_directory(), module, ".php", NIL);
phpfilename = NewString(filen); phpfilename = NewString(filen);
f_phpcode = NewFile(filen, "w"); f_phpcode = NewFile(filen, "w", SWIG_output_files());
if (!f_phpcode) { if (!f_phpcode) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -381,7 +381,7 @@ public:
/* Create the .h file too */ /* Create the .h file too */
filen = NewStringEmpty(); filen = NewStringEmpty();
Printv(filen, SWIG_output_directory(), "php_", module, ".h", NIL); Printv(filen, SWIG_output_directory(), "php_", module, ".h", NIL);
f_h = NewFile(filen, "w"); f_h = NewFile(filen, "w", SWIG_output_files());
if (!f_h) { if (!f_h) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -123,7 +123,7 @@ public:
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
/* Open the output file */ /* Open the output file */
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -513,7 +513,7 @@ public:
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
String *outfile_h = !no_header_file ? Getattr(n, "outfile_h") : 0; String *outfile_h = !no_header_file ? Getattr(n, "outfile_h") : 0;
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -521,7 +521,7 @@ public:
if (directorsEnabled()) { if (directorsEnabled()) {
if (!no_header_file) { if (!no_header_file) {
f_runtime_h = NewFile(outfile_h, "w"); f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) { if (!f_runtime_h) {
FileErrorDisplay(outfile_h); FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -662,7 +662,7 @@ public:
module = interface; module = interface;
else else
Insert(module, 0, "_"); Insert(module, 0, "_");
if ((f_shadow_py = NewFile(filen, "w")) == 0) { if ((f_shadow_py = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }

View file

@ -878,7 +878,7 @@ int R::DumpCode(Node *n) {
Printf(stderr, "Writing S code to %s\n", output_filename); Printf(stderr, "Writing S code to %s\n", output_filename);
#endif #endif
File *scode = NewFile(output_filename, "w"); File *scode = NewFile(output_filename, "w", SWIG_output_files());
if (!scode) { if (!scode) {
FileErrorDisplay(output_filename); FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -893,7 +893,7 @@ int R::DumpCode(Node *n) {
Close(scode); Close(scode);
// Delete(scode); // Delete(scode);
String *outfile = Getattr(n,"outfile"); String *outfile = Getattr(n,"outfile");
File *runtime = NewFile(outfile,"w"); File *runtime = NewFile(outfile,"w", SWIG_output_files());
if (!runtime) { if (!runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -920,7 +920,7 @@ int R::DumpCode(Node *n) {
if(outputNamespaceInfo) { if(outputNamespaceInfo) {
output_filename = NewString(""); output_filename = NewString("");
Printf(output_filename, "%sNAMESPACE", SWIG_output_directory()); Printf(output_filename, "%sNAMESPACE", SWIG_output_directory());
File *ns = NewFile(output_filename, "w"); File *ns = NewFile(output_filename, "w", SWIG_output_files());
if (!ns) { if (!ns) {
FileErrorDisplay(output_filename); FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -992,7 +992,7 @@ public:
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -1003,7 +1003,7 @@ public:
Printf(stderr, "Unable to determine outfile_h\n"); Printf(stderr, "Unable to determine outfile_h\n");
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }
f_runtime_h = NewFile(outfile_h, "w"); f_runtime_h = NewFile(outfile_h, "w", SWIG_output_files());
if (!f_runtime_h) { if (!f_runtime_h) {
FileErrorDisplay(outfile_h); FileErrorDisplay(outfile_h);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -59,7 +59,7 @@ public:
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
Replaceall(outfile, "_wrap.cxx", ".lisp"); Replaceall(outfile, "_wrap.cxx", ".lisp");
Replaceall(outfile, "_wrap.c", ".lisp"); Replaceall(outfile, "_wrap.c", ".lisp");
out = NewFile(outfile, "w"); out = NewFile(outfile, "w", SWIG_output_files());
if (!out) { if (!out) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -317,6 +317,9 @@ void SWIG_config_file(const String_or_char *);
const String *SWIG_output_directory(); const String *SWIG_output_directory();
void SWIG_config_cppext(const char *ext); void SWIG_config_cppext(const char *ext);
/* get the list of generated files */
List *SWIG_output_files();
void SWIG_library_directory(const char *); void SWIG_library_directory(const char *);
int emit_num_arguments(ParmList *); int emit_num_arguments(ParmList *);
int emit_num_required(ParmList *); int emit_num_required(ParmList *);

View file

@ -136,7 +136,7 @@ public:
/* Initialize all of the output files */ /* Initialize all of the output files */
String *outfile = Getattr(n, "outfile"); String *outfile = Getattr(n, "outfile");
f_runtime = NewFile(outfile, "w"); f_runtime = NewFile(outfile, "w", SWIG_output_files());
if (!f_runtime) { if (!f_runtime) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -177,7 +177,7 @@ public:
Insert(module, 0, "_"); Insert(module, 0, "_");
if ((f_shadow = NewFile(filen, "w")) == 0) { if ((f_shadow = NewFile(filen, "w", SWIG_output_files())) == 0) {
FileErrorDisplay(filen); FileErrorDisplay(filen);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
} }

View file

@ -229,7 +229,7 @@ int UFFI::top(Node *n) {
Printf(output_filename, "%s%s.cl", SWIG_output_directory(), module); Printf(output_filename, "%s%s.cl", SWIG_output_directory(), module);
f_cl = NewFile(output_filename, "w"); f_cl = NewFile(output_filename, "w", SWIG_output_files());
if (!f_cl) { if (!f_cl) {
FileErrorDisplay(output_filename); FileErrorDisplay(output_filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);

View file

@ -47,7 +47,7 @@ public:
iX++; iX++;
Swig_mark_arg(iX); Swig_mark_arg(iX);
String *outfile = NewString(argv[iX]); String *outfile = NewString(argv[iX]);
out = NewFile(outfile, "w"); out = NewFile(outfile, "w", SWIG_output_files());
if (!out) { if (!out) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -82,7 +82,7 @@ public:
Replaceall(outfile, ".cxx", ".xml"); Replaceall(outfile, ".cxx", ".xml");
Replaceall(outfile, ".cpp", ".xml"); Replaceall(outfile, ".cpp", ".xml");
Replaceall(outfile, ".c", ".xml"); Replaceall(outfile, ".c", ".xml");
out = NewFile(outfile, "w"); out = NewFile(outfile, "w", SWIG_output_files());
if (!out) { if (!out) {
FileErrorDisplay(outfile); FileErrorDisplay(outfile);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);
@ -301,7 +301,7 @@ void Swig_print_xml(DOH *obj, String *filename) {
if (!filename) { if (!filename) {
out = stdout; out = stdout;
} else { } else {
out = NewFile(filename, "w"); out = NewFile(filename, "w", SWIG_output_files());
if (!out) { if (!out) {
FileErrorDisplay(filename); FileErrorDisplay(filename);
SWIG_exit(EXIT_FAILURE); SWIG_exit(EXIT_FAILURE);