1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* ***** BEGIN LICENSE BLOCK ***** 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * http://www.mozilla.org/MPL/ 9 * 10 * Software distributed under the License is distributed on an "AS IS" basis, 11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 12 * for the specific language governing rights and limitations under the 13 * License. 14 * 15 * The Original Code is mozilla.org code. 16 * 17 * The Initial Developer of the Original Code is 18 * Netscape Communications Corporation. 19 * Portions created by the Initial Developer are Copyright (C) 1998 20 * the Initial Developer. All Rights Reserved. 21 * 22 * Contributor(s): 23 * 24 * Alternatively, the contents of this file may be used under the terms of 25 * either the GNU General Public License Version 2 or later (the "GPL"), or 26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 27 * in which case the provisions of the GPL or the LGPL are applicable instead 28 * of those above. If you wish to allow use of your version of this file only 29 * under the terms of either the GPL or the LGPL, and not to allow others to 30 * use your version of this file under the terms of the MPL, indicate your 31 * decision by deleting the provisions above and replace them with the notice 32 * and other provisions required by the GPL or the LGPL. If you do not delete 33 * the provisions above, a recipient may use your version of this file under 34 * the terms of any one of the MPL, the GPL or the LGPL. 35 * 36 * ***** END LICENSE BLOCK ***** */ 37 38 #include "xp.h" 39 40 // file utils 41 42 BOOL XP_IsFile(char * szFileName) 43 { 44 #ifdef XP_WIN 45 OFSTRUCT of; 46 return (HFILE_ERROR != OpenFile(szFileName, &of, OF_EXIST)); 47 #endif 48 #ifdef XP_UNIX 49 struct stat s; 50 return (stat(szFileName, &s) != -1); 51 #endif 52 #ifdef XP_MAC /* HACK */ 53 return 1; 54 #endif 55 } 56 57 void XP_DeleteFile(char * szFileName) 58 { 59 #ifdef XP_WIN 60 DeleteFile(szFileName); 61 #else 62 remove(szFileName); 63 #endif 64 } 65 66 XP_HFILE XP_CreateFile(char * szFileName) 67 { 68 #ifdef XP_WIN 69 OFSTRUCT of; 70 HFILE hFile = OpenFile(szFileName, &of, OF_CREATE | OF_WRITE); 71 return (hFile != HFILE_ERROR) ? hFile : NULL; 72 #else 73 return (XP_HFILE)fopen(szFileName, "w+"); 74 #endif 75 } 76 77 XP_HFILE XP_OpenFile(char * szFileName) 78 { 79 #ifdef XP_WIN 80 OFSTRUCT of; 81 HFILE hFile = OpenFile(szFileName, &of, OF_READ | OF_WRITE); 82 return (hFile != HFILE_ERROR) ? hFile : NULL; 83 #else 84 return (XP_HFILE)fopen(szFileName, "r+"); 85 #endif 86 } 87 88 void XP_CloseFile(XP_HFILE hFile) 89 { 90 if(hFile != NULL) 91 { 92 #ifdef XP_WIN 93 CloseHandle((HANDLE)hFile); 94 #else 95 fclose(hFile); 96 #endif 97 } 98 } 99 100 DWORD XP_WriteFile(XP_HFILE hFile, const void * pBuf, int iSize) 101 { 102 #ifdef XP_WIN 103 DWORD dwRet; 104 WriteFile((HANDLE)hFile, pBuf, iSize, &dwRet, NULL); 105 return dwRet; 106 #else 107 return (DWORD)fwrite(pBuf, iSize, 1, hFile); 108 #endif 109 } 110 111 void XP_FlushFileBuffers(XP_HFILE hFile) 112 { 113 #ifdef XP_WIN 114 FlushFileBuffers((HANDLE)hFile); 115 #else 116 fflush(hFile); 117 #endif 118 } 119 120 // misc utils 121 122 void * XP_GetSymbol(XP_HLIB hLib, char * szProcName) 123 { 124 #ifdef XP_WIN 125 return (void *)GetProcAddress(hLib, szProcName); 126 #endif 127 } 128