Rev 193 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 193 | Rev 259 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* |
1 | /* |
2 | This file is part of a common library |
2 | This file is part of a common library |
3 | Copyright (C) 1990-2009 Toby Thain, toby@telegraphics.com.au |
3 | Copyright (C) 1990-2009 Toby Thain, toby@telegraphics.com.au |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify |
5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by |
6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or |
7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. |
8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, |
10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. |
13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License |
15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software |
16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
17 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | */ |
18 | */ |
19 | 19 | ||
20 | #include "file_compat.h" |
20 | #include "file_compat.h" |
21 | 21 | ||
22 | extern Boolean has_forks; |
22 | extern Boolean has_forks; |
23 | 23 | ||
24 | OSErr getfpos_large(FILEREF refNum,FILEPOS *filePos){ |
24 | OSErr getfpos_large(FILEREF refNum,FILEPOS *filePos){ |
25 | LONG hi = 0; |
25 | LONG hi = 0; |
26 | DWORD res = SetFilePointer(refNum,0,&hi,FILE_CURRENT); |
26 | DWORD res = SetFilePointer(refNum,0,&hi,FILE_CURRENT); |
27 | if(res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) |
27 | if(res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) |
28 | return ioErr; |
28 | return ioErr; |
29 | else{ |
29 | else{ |
30 | *filePos = res | ((FILEPOS)hi << 32); |
30 | *filePos = res | ((FILEPOS)hi << 32); |
31 | return noErr; |
31 | return noErr; |
32 | } |
32 | } |
33 | } |
33 | } |
34 | 34 | ||
35 | OSErr setfpos_large(FILEREF refNum,short posMode,FILEPOS posOff){ |
35 | OSErr setfpos_large(FILEREF refNum,short posMode,FILEPOS posOff){ |
36 | static DWORD method[]={0,FILE_BEGIN,FILE_END,FILE_CURRENT}; |
36 | static DWORD method[]={0,FILE_BEGIN,FILE_END,FILE_CURRENT}; |
37 | LONG hi = posOff >> 32; |
37 | LONG hi = posOff >> 32; |
38 | DWORD res = SetFilePointer(refNum,posOff,&hi,method[posMode]); |
38 | DWORD res = SetFilePointer(refNum,posOff,&hi,method[posMode]); |
39 | return res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR |
39 | return res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR |
40 | ? ioErr : noErr; |
40 | ? ioErr : noErr; |
41 | } |
41 | } |
42 | 42 | ||
43 | OSErr geteof_large(FILEREF refNum,FILEPOS *logEOF){ |
43 | OSErr geteof_large(FILEREF refNum,FILEPOS *logEOF){ |
44 | DWORD hi; |
44 | DWORD hi; |
45 | DWORD res = GetFileSize(refNum,&hi); |
45 | DWORD res = GetFileSize(refNum,&hi); |
46 | if(res == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) |
46 | if(res == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) |
47 | return ioErr; |
47 | return ioErr; |
48 | else{ |
48 | else{ |
49 | *logEOF = res | ((FILEPOS)hi << 32); |
49 | *logEOF = res | ((FILEPOS)hi << 32); |
50 | return noErr; |
50 | return noErr; |
51 | } |
51 | } |
52 | } |
52 | } |