Subversion Repositories filter_foundry

Rev

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
}