Subversion Repositories filter_foundry

Rev

Rev 193 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
259 daniel-mar 1
/*
2
        This file is part of a common library
3
    Copyright (C) 1990-2009 Toby Thain, toby@telegraphics.com.au
4
 
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
7
    the Free Software Foundation; either version 2 of the License, or
8
    (at your option) any later version.
9
 
10
    This program is distributed in the hope that it will be useful,
11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
    GNU General Public License for more details.
14
 
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
17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
*/
19
 
20
#include "file_compat.h"
21
 
22
extern Boolean has_forks;
23
 
24
OSErr getfpos_large(FILEREF refNum,FILEPOS *filePos){
25
        LONG hi = 0;
26
        DWORD res = SetFilePointer(refNum,0,&hi,FILE_CURRENT);
27
        if(res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR)
28
                return ioErr;
29
        else{
30
                *filePos = res | ((FILEPOS)hi << 32);
31
                return noErr;
32
        }
33
}
34
 
35
OSErr setfpos_large(FILEREF refNum,short posMode,FILEPOS posOff){
36
        static DWORD method[]={0,FILE_BEGIN,FILE_END,FILE_CURRENT};
37
        LONG hi = posOff >> 32;
38
        DWORD res = SetFilePointer(refNum,posOff,&hi,method[posMode]);
39
        return res == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR
40
                ? ioErr : noErr;
41
}
42
 
43
OSErr geteof_large(FILEREF refNum,FILEPOS *logEOF){
44
        DWORD hi;
45
        DWORD res = GetFileSize(refNum,&hi);
46
        if(res == INVALID_FILE_SIZE && GetLastError() != NO_ERROR)
47
                return ioErr;
48
        else{
49
                *logEOF = res | ((FILEPOS)hi << 32);
50
                return noErr;
51
        }
52
}