DirectoryStream.st
changeset 6259 164d7efc1eb2
parent 5245 fb27aee25da6
child 6266 b12e2e6a84d7
equal deleted inserted replaced
6258:435600a44e73 6259:164d7efc1eb2
   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 );
   691 ! !
   712 ! !
   692 
   713 
   693 !DirectoryStream class methodsFor:'documentation'!
   714 !DirectoryStream class methodsFor:'documentation'!
   694 
   715 
   695 version
   716 version
   696     ^ '$Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.50 2000-02-07 19:26:12 cg Exp $'
   717     ^ '$Header: /cvs/stx/stx/libbasic/DirectoryStream.st,v 1.51 2001-12-05 14:57:07 cg Exp $'
   697 ! !
   718 ! !