--- ray/src/util/wrapBSDF.c 2016/02/02 18:02:32 2.17 +++ ray/src/util/wrapBSDF.c 2016/02/02 22:34:00 2.18 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: wrapBSDF.c,v 2.17 2016/02/02 18:02:32 greg Exp $"; +static const char RCSid[] = "$Id: wrapBSDF.c,v 2.18 2016/02/02 22:34:00 greg Exp $"; #endif /* * Wrap BSDF data in valid WINDOW XML file @@ -82,6 +82,8 @@ struct s_dfile { int ndataf = 0; /* number of data files */ +int unlink_datafiles = 0; /* unlink data files when done */ + const char *spectr_file[MAXFILES]; /* custom spectral curve input */ const char top_level_name[] = "WindowElement"; @@ -604,7 +606,14 @@ writeBSDF(const char *caller, ezxml_t fl) fputs(xml+ei, stdout); /* write trailer */ free(xml); /* free string */ fputc('\n', stdout); - return (fflush(stdout) == 0); + if (fflush(stdout) != 0) + return 0; + /* unlink data files if req. */ + for (i = ndataf*(unlink_datafiles != 0); i--; ) + if (data_file[i].fname != stdin_name && + data_file[i].fname[0] != '!') + unlink(data_file[i].fname); + return 1; } /* Insert BSDF data into XML wrapper */ @@ -767,6 +776,9 @@ main(int argc, char *argv[]) return 1; } attr_unit = argv[i]; + continue; + case 'U': /* unlink data files when done */ + unlink_datafiles = 1; continue; case 'a': /* angle basis */ if (++i >= argc)