1 | /********** |
2 | This library is free software; you can redistribute it and/or modify it under |
3 | the terms of the GNU Lesser General Public License as published by the |
4 | Free Software Foundation; either version 3 of the License, or (at your |
5 | option) any later version. (See <http://www.gnu.org/copyleft/lesser.html>.) |
6 | |
7 | This library is distributed in the hope that it will be useful, but WITHOUT |
8 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
9 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for |
10 | more details. |
11 | |
12 | You should have received a copy of the GNU Lesser General Public License |
13 | along with this library; if not, write to the Free Software Foundation, Inc., |
14 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
15 | **********/ |
16 | // "liveMedia" |
17 | // Copyright (c) 1996-2020 Live Networks, Inc. All rights reserved. |
18 | // Common routines for opening/closing named output files |
19 | // Implementation |
20 | |
21 | #if (defined(__WIN32__) || defined(_WIN32)) && !defined(_WIN32_WCE) |
22 | #include <io.h> |
23 | #include <fcntl.h> |
24 | #endif |
25 | #ifndef _WIN32_WCE |
26 | #include <sys/stat.h> |
27 | #endif |
28 | #include <string.h> |
29 | |
30 | #include "OutputFile.hh" |
31 | |
32 | FILE* OpenOutputFile(UsageEnvironment& env, char const* fileName) { |
33 | FILE* fid; |
34 | |
35 | // Check for special case 'file names': "stdout" and "stderr" |
36 | if (strcmp(fileName, "stdout" ) == 0) { |
37 | fid = stdout; |
38 | #if (defined(__WIN32__) || defined(_WIN32)) && !defined(_WIN32_WCE) |
39 | _setmode(_fileno(stdout), _O_BINARY); // convert to binary mode |
40 | #endif |
41 | } else if (strcmp(fileName, "stderr" ) == 0) { |
42 | fid = stderr; |
43 | #if (defined(__WIN32__) || defined(_WIN32)) && !defined(_WIN32_WCE) |
44 | _setmode(_fileno(stderr), _O_BINARY); // convert to binary mode |
45 | #endif |
46 | } else { |
47 | fid = fopen(fileName, "wb" ); |
48 | } |
49 | |
50 | if (fid == NULL) { |
51 | env.setResultMsg("unable to open file \"" , fileName, "\"" ); |
52 | } |
53 | |
54 | return fid; |
55 | } |
56 | |
57 | void CloseOutputFile(FILE* fid) { |
58 | // Don't close 'stdout' or 'stderr', in case we want to use it again later. |
59 | if (fid != NULL && fid != stdout && fid != stderr) fclose(fid); |
60 | } |
61 | |