Rev 359 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 359 | Rev 548 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /**************************************************************************** |
1 | /**************************************************************************** |
2 | * |
2 | * |
3 | * Open Watcom Project |
3 | * Open Watcom Project |
4 | * |
4 | * |
5 | * Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved. |
5 | * Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved. |
6 | * |
6 | * |
7 | * ======================================================================== |
7 | * ======================================================================== |
8 | * |
8 | * |
9 | * This file contains Original Code and/or Modifications of Original |
9 | * This file contains Original Code and/or Modifications of Original |
10 | * Code as defined in and that are subject to the Sybase Open Watcom |
10 | * Code as defined in and that are subject to the Sybase Open Watcom |
11 | * Public License version 1.0 (the 'License'). You may not use this file |
11 | * Public License version 1.0 (the 'License'). You may not use this file |
12 | * except in compliance with the License. BY USING THIS FILE YOU AGREE TO |
12 | * except in compliance with the License. BY USING THIS FILE YOU AGREE TO |
13 | * ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is |
13 | * ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is |
14 | * provided with the Original Code and Modifications, and is also |
14 | * provided with the Original Code and Modifications, and is also |
15 | * available at www.sybase.com/developer/opensource. |
15 | * available at www.sybase.com/developer/opensource. |
16 | * |
16 | * |
17 | * The Original Code and all software distributed under the License are |
17 | * The Original Code and all software distributed under the License are |
18 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER |
18 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER |
19 | * EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM |
19 | * EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM |
20 | * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF |
20 | * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF |
21 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR |
21 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR |
22 | * NON-INFRINGEMENT. Please see the License for the specific language |
22 | * NON-INFRINGEMENT. Please see the License for the specific language |
23 | * governing rights and limitations under the License.* |
23 | * governing rights and limitations under the License.* |
24 | * ======================================================================== |
24 | * ======================================================================== |
25 | * |
25 | * |
26 | * Description: low level lseek without file extend for Windows NT |
26 | * Description: low level lseek without file extend for Windows NT |
27 | * |
27 | * |
28 | ****************************************************************************/ |
28 | ****************************************************************************/ |
29 | 29 | ||
30 | 30 | ||
31 | #include "variety.h" |
31 | #include "variety.h" |
32 | #include |
32 | #include |
33 | #include |
33 | #include |
34 | #include "iomode.h" |
34 | #include "iomode.h" |
35 | #include "rtcheck.h" |
35 | #include "rtcheck.h" |
36 | #include "seterrno.h" |
36 | #include "seterrno.h" |
37 | #include "lseek.h" |
37 | #include "lseek.h" |
38 | #include "handleio.h" |
38 | #include "handleio.h" |
39 | 39 | ||
40 | /* |
40 | /* |
41 | DWORD SetFilePointer( |
41 | DWORD SetFilePointer( |
42 | HANDLE hFile, // handle to file |
42 | HANDLE hFile, // handle to file |
43 | LONG lDistanceToMove, // bytes to move pointer |
43 | LONG lDistanceToMove, // bytes to move pointer |
44 | PLONG lpDistanceToMoveHigh, // bytes to move pointer |
44 | PLONG lpDistanceToMoveHigh, // bytes to move pointer |
45 | DWORD dwMoveMethod // starting point |
45 | DWORD dwMoveMethod // starting point |
46 | ); |
46 | ); |
47 | */ |
47 | */ |
48 | 48 | ||
49 | #ifndef INVALID_SET_FILE_POINTER |
49 | #ifndef INVALID_SET_FILE_POINTER |
50 | #define INVALID_SET_FILE_POINTER 0xFFFFFFFF |
50 | #define INVALID_SET_FILE_POINTER 0xFFFFFFFF |
51 | #endif |
51 | #endif |
- | 52 | ||
- | 53 | typedef struct |
|
- | 54 | { |
|
- | 55 | char *name; |
|
- | 56 | unsigned int offset; |
|
- | 57 | }__file_handle; |
|
- | 58 | ||
- | 59 | typedef struct |
|
- | 60 | { DWORD attr; |
|
- | 61 | DWORD flags; |
|
- | 62 | DWORD cr_time; |
|
- | 63 | DWORD cr_date; |
|
- | 64 | DWORD acc_time; |
|
- | 65 | DWORD acc_date; |
|
- | 66 | DWORD mod_time; |
|
- | 67 | DWORD mod_date; |
|
- | 68 | DWORD size; |
|
- | 69 | DWORD size_high; |
|
- | 70 | } FILEINFO; |
|
- | 71 | ||
- | 72 | int _stdcall get_fileinfo(const char *name,FILEINFO* pinfo); |
|
52 | 73 | ||
53 | _WCRTLINK long __lseek( int hid, long offset, int origin ) |
74 | _WCRTLINK long __lseek( int hid, long offset, int origin ) |
54 | { |
75 | { |
55 | DWORD rc; |
76 | __file_handle *fh; |
- | 77 | long rc; |
|
56 | 78 | ||
57 | __handle_check( hid, -1 ); |
79 | __handle_check( hid, -1 ); |
58 | rc = offset; |
80 | fh = (__file_handle*) __getOSHandle( hid ); |
59 | 81 | ||
- | 82 | switch(origin) |
|
- | 83 | { |
|
- | 84 | case SEEK_SET: |
|
- | 85 | rc = offset; |
|
- | 86 | break; |
|
- | 87 | case SEEK_CUR: |
|
60 | // rc = SetFilePointer( __getOSHandle( hid ), offset, 0, origin ); |
88 | rc = fh->offset + offset; |
- | 89 | break; |
|
- | 90 | case SEEK_END: |
|
- | 91 | { |
|
- | 92 | FILEINFO info; |
|
61 | // if( rc == INVALID_SET_FILE_POINTER ) { |
93 | get_fileinfo(fh->name,&info); |
62 | // return( __set_errno_nt() ); |
94 | rc = offset + info.size; |
- | 95 | break; |
|
63 | // } |
96 | } |
- | 97 | default: |
|
- | 98 | return -1; |
|
- | 99 | }; |
|
- | 100 | ||
- | 101 | fh->offset = rc; |
|
- | 102 | ||
64 | return( rc ); |
103 | return( rc ); |
65 | } |
104 | } |
66 | 105 |