109 # ifdef __DEF_Time |
109 # ifdef __DEF_Time |
110 # define Time __DEF_Time |
110 # define Time __DEF_Time |
111 # endif |
111 # endif |
112 |
112 |
113 # define __HANDLEVal(o) (HANDLE)__externalAddressVal(o) |
113 # define __HANDLEVal(o) (HANDLE)__externalAddressVal(o) |
|
114 |
|
115 # ifndef DO_WRAP_CALLS |
|
116 # define STX_C_CALL0(__f__) __f__((__a1__)) |
|
117 # define STX_C_CALL1(__f__, __a1__) __f__((__a1__)) |
|
118 # define STX_C_CALL2(__f__, __a1__, __a2__) __f__((__a1__), (__a2__)) |
|
119 # define STX_C_CALL3(__f__, __a1__, __a2__, __a3__) __f__((__a1__), (__a2__), (__a3__)) |
|
120 # define STX_API_CALL0(__f__) __f__((__a1__)) |
|
121 # define STX_API_CALL1(__f__, __a1__) __f__((__a1__)) |
|
122 # define STX_API_CALL2(__f__, __a1__, __a2__) __f__((__a1__), (__a2__)) |
|
123 # define STX_API_CALL3(__f__, __a1__, __a2__, __a3__) __f__((__a1__), (__a2__), (__a3__)) |
|
124 # else |
|
125 # define STX_C_CALL0(__f__) __STX_C_CALL0((void*)__f__) |
|
126 # define STX_C_CALL1(__f__, __a1__) __STX_C_CALL1((void*)__f__, (void*)(__a1__)) |
|
127 # define STX_C_CALL2(__f__, __a1__, __a2__) __STX_C_CALL2((void*)__f__, (void*)(__a1__), (void*)(__a2__)) |
|
128 # define STX_C_CALL3(__f__, __a1__, __a2__, __a3__) __STX_C_CALL3((void*)__f__, (void*)(__a1__), (void*)(__a2__), (void*)(__a3__)) |
|
129 # define STX_API_CALL0(__f__) __STX_API_CALL0((void*)__f__) |
|
130 # define STX_API_CALL1(__f__, __a1__) __STX_API_CALL1((void*)__f__, (void*)(__a1__)) |
|
131 # define STX_API_CALL2(__f__, __a1__, __a2__) __STX_API_CALL2((void*)__f__, (void*)(__a1__), (void*)(__a2__)) |
|
132 # define STX_API_CALL3(__f__, __a1__, __a2__, __a3__) __STX_API_CALL3((void*)__f__, (void*)(__a1__), (void*)(__a2__), (void*)(__a3__)) |
|
133 # endif |
114 |
134 |
115 #endif /* WIN32 */ |
135 #endif /* WIN32 */ |
116 |
136 |
117 %} |
137 %} |
118 ! ! |
138 ! ! |
505 |
525 |
506 if (__INST(hitEOF) != true && (dirP = __INST(dirPointer)) != nil) { |
526 if (__INST(hitEOF) != true && (dirP = __INST(dirPointer)) != nil) { |
507 __INST(lastErrorNumber) = nil; |
527 __INST(lastErrorNumber) = nil; |
508 d = __HANDLEVal(dirP); |
528 d = __HANDLEVal(dirP); |
509 |
529 |
510 # ifdef DO_WRAP_CALLS |
530 do { |
511 rslt = __STX_API_CALL2( (void*)FindNextFile, (void *)d, (void *)&data ); |
531 __threadErrno = 0; |
512 # else |
532 rslt = STX_API_CALL2( FindNextFile, d, &data ); |
513 rslt = FindNextFile(d, &data); |
533 } while ((rslt < 0) && (__threadErrno == EINTR)); |
514 # endif |
534 |
515 if (rslt) { |
535 if (rslt > 0) { |
516 nextEntry = __MKSTRING( data.cFileName ); |
536 nextEntry = __MKSTRING( data.cFileName ); |
517 } else { |
537 } else { |
518 __INST(hitEOF) = true; |
538 __INST(hitEOF) = true; |
519 } |
539 } |
520 } |
540 } |
611 int l = __stringSize(path); |
631 int l = __stringSize(path); |
612 |
632 |
613 if (l < (sizeof(pattern)-4)) { |
633 if (l < (sizeof(pattern)-4)) { |
614 strncpy(pattern, __stringVal(path), l); |
634 strncpy(pattern, __stringVal(path), l); |
615 strcpy(pattern+l, "\\*"); |
635 strcpy(pattern+l, "\\*"); |
616 # ifdef DO_WRAP_CALLS |
636 |
617 d = __STX_API_CALL2( (void*)FindFirstFile, (void *)pattern, (void *)&data ); |
637 do { |
618 # else |
638 __threadErrno = 0; |
619 d = FindFirstFile(pattern, &data); |
639 d = STX_API_CALL2( FindFirstFile, pattern, &data ); |
620 # endif |
640 } while ((d < 0) && (__threadErrno == EINTR)); |
|
641 |
621 if (d == INVALID_HANDLE_VALUE) { |
642 if (d == INVALID_HANDLE_VALUE) { |
622 __INST(lastErrorNumber) = __MKSMALLINT(GetLastError()); |
643 __INST(lastErrorNumber) = __MKSMALLINT(GetLastError()); |
623 } else { |
644 } else { |
624 __INST(dirPointer) = dp = __MKEXTERNALADDRESS(d); __STORE(self, dp); |
645 __INST(dirPointer) = dp = __MKEXTERNALADDRESS(d); __STORE(self, dp); |
625 entry = __MKSTRING( data.cFileName ); |
646 entry = __MKSTRING( data.cFileName ); |