1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0026585: Eliminate compile warnings obtained by building occt with vc14: 'type cast' pointer truncation and 'type cast' truncation

- Class OSD_EnvironmentIterator is removed (not used, and would definitely fail under Windows if tried)
- Methods UserId() and GroupId() removed from OSD_FileNode (cannot be made portable, as there is no integer IDs of user and group on Windows)
- Draw_ProgressIndicator corrected to properly pass address via Tcl
- OSD_File.cxx: local function is refactored to avoid senseless encoding / decoding of results
- OSD_Process::UserId() method removed, as it cannot be made cross-platform (no integer IDs on Windows)
- OSD_Thread: use WinAPI conversion functions to avoid warnings
- OSD_WNT.cxx: recursion counter passed via function argument instead of TLS
- TDF_LabelMapHasher revised to use correct hasher function for an address
This commit is contained in:
abv
2015-10-09 11:29:18 +03:00
committed by bugmaster
parent 2f220b97b7
commit 682993040a
19 changed files with 77 additions and 679 deletions

View File

@@ -10,8 +10,6 @@ OSD_Disk.cxx
OSD_Disk.hxx
OSD_Environment.cxx
OSD_Environment.hxx
OSD_EnvironmentIterator.cxx
OSD_EnvironmentIterator.hxx
OSD_Error.cxx
OSD_Error.hxx
OSD_ErrorList.hxx

View File

@@ -1,177 +0,0 @@
// Copyright (c) 1998-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _WIN32
//---------- All Systems except windowsNT : ----------------------------------
#include <OSD_Environment.hxx>
#include <OSD_EnvironmentIterator.hxx>
#include <OSD_OSDError.hxx>
#include <OSD_WhoAmI.hxx>
//const OSD_WhoAmI Iam = OSD_WEnvironmentIterator;
#ifdef __APPLE__
#import <TargetConditionals.h>
#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
extern char **environ;
#else
#include <crt_externs.h>
#define environ (*_NSGetEnviron())
#endif
#else
extern char **environ;
#endif
OSD_EnvironmentIterator::OSD_EnvironmentIterator(){
myCount = 0;
}
// For Windows NT compatibility
void OSD_EnvironmentIterator::Destroy () {}
// Is there another environment variable entry ?
Standard_Boolean OSD_EnvironmentIterator::More(){
if (environ[myCount+1] == NULL) return(Standard_False);
else return(Standard_True);
}
// Find next environment variable
void OSD_EnvironmentIterator::Next(){
if (More()) myCount++;
}
OSD_Environment OSD_EnvironmentIterator::Values(){
TCollection_AsciiString name,value;
name = environ[myCount]; // Copy environment variable
// Pour DEBUG cout << name << endl;
value = &environ[myCount][name.Search("=")]; // Gets its value
if (name.Length() != 0){
name = name.Token("="); // Gets its name
}
OSD_Environment result(name,value);
return(result);
}
void OSD_EnvironmentIterator::Reset(){
myError.Reset();
}
Standard_Boolean OSD_EnvironmentIterator::Failed()const{
return( myError.Failed());
}
void OSD_EnvironmentIterator::Perror() {
myError.Perror();
}
Standard_Integer OSD_EnvironmentIterator::Error()const{
return( myError.Error());
}
#else
//------------------------------------------------------------------------
//------------------- Windows NT sources for OSD_Directory --------------
//------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <OSD_Environment.hxx>
#include <OSD_EnvironmentIterator.hxx>
#include <OSD_OSDError.hxx>
OSD_EnvironmentIterator :: OSD_EnvironmentIterator () {
myEnv = GetEnvironmentStrings ();
myCount = ( Standard_Integer )myEnv;
} // end constructor
void OSD_EnvironmentIterator :: Destroy () {
FreeEnvironmentStrings ( ( LPTSTR )myEnv );
} // end OSD_EnvironmentIterator :: Destroy
Standard_Boolean OSD_EnvironmentIterator :: More () {
return *( ( Standard_CString )myCount ) ? Standard_True : Standard_False;
} // end OSD_EnvironmentIterator :: More
void OSD_EnvironmentIterator :: Next () {
if ( More () ) {
while ( *( Standard_CString )myCount ) ++myCount;
++myCount;
} // end if
} // end OSD_EnvironmentIterator :: Next
OSD_Environment OSD_EnvironmentIterator :: Values () {
TCollection_AsciiString env, name, value;
env = ( Standard_CString )myCount;
name = env.Token ( TEXT( "=" ), 1 );
value = env.Token ( TEXT( "=" ), 2 );
if ( env.Value ( 1 ) == TEXT( '=' ) ) name.Insert ( 1, TEXT( '=' ) );
return OSD_Environment ( name, value );
} // end OSD_EnvironmentIterator :: Values
Standard_Boolean OSD_EnvironmentIterator :: Failed () const {
return myError.Failed ();
} // end OSD_EnvironmentIterator :: Failed
void OSD_EnvironmentIterator :: Reset () {
myError.Reset ();
} // end OSD_EnvironmentIterator :: Reset
void OSD_EnvironmentIterator :: Perror () {
myError.Perror ();
} // end OSD_EnvironmentIterator :: Perror
Standard_Integer OSD_EnvironmentIterator :: Error () const {
return myError.Error ();
} // end OSD_EnvironmentIterator :: Error
#endif

View File

@@ -1,99 +0,0 @@
// Created on: 1992-09-11
// Created by: Stephan GARNAUD
// Copyright (c) 1992-1999 Matra Datavision
// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _OSD_EnvironmentIterator_HeaderFile
#define _OSD_EnvironmentIterator_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <Standard_Address.hxx>
#include <Standard_Integer.hxx>
#include <OSD_Error.hxx>
#include <Standard_Boolean.hxx>
class OSD_OSDError;
class OSD_Environment;
//! This allows consultation of every environment variable.
//! There is no specific order of results.
class OSD_EnvironmentIterator
{
public:
DEFINE_STANDARD_ALLOC
//! Instantiates Object as Iterator;
Standard_EXPORT OSD_EnvironmentIterator();
Standard_EXPORT void Destroy();
~OSD_EnvironmentIterator()
{
Destroy();
}
//! Returns TRUE if there are other environment variables.
Standard_EXPORT Standard_Boolean More();
//! Sets the iterator to the next item.
//! Returns the item value corresponding to the current
//! position of the iterator.
Standard_EXPORT void Next();
//! Returns the next environment variable found.
Standard_EXPORT OSD_Environment Values();
//! Returns TRUE if an error occurs
Standard_EXPORT Standard_Boolean Failed() const;
//! Resets error counter to zero
Standard_EXPORT void Reset();
//! Raises OSD_Error
Standard_EXPORT void Perror();
//! Returns error number if 'Failed' is TRUE.
Standard_EXPORT Standard_Integer Error() const;
protected:
private:
Standard_Address myEnv;
Standard_Integer myCount;
OSD_Error myError;
};
#endif // _OSD_EnvironmentIterator_HeaderFile

View File

@@ -852,7 +852,7 @@ BOOL __fastcall _osd_wnt_sd_to_protection (
BOOL __fastcall _osd_print (const Standard_PCharacter, const wchar_t* );
static void __fastcall _test_raise ( HANDLE, Standard_CString );
static DWORDLONG __fastcall _get_line ( Standard_PCharacter&, DWORD );
static Standard_Integer __fastcall _get_line (Standard_PCharacter& buffer, DWORD dwBuffSize, LONG& theSeekPos);
static int __fastcall _get_buffer ( HANDLE, Standard_PCharacter&, DWORD, BOOL, BOOL );
static DWORD __fastcall _get_access_mask ( OSD_SingleProtection );
static DWORD __fastcall _get_dir_access_mask ( OSD_SingleProtection prt );
@@ -1068,14 +1068,12 @@ void OSD_File :: ReadLine (
const Standard_Integer NByte, Standard_Integer& NbyteRead
) {
DWORDLONG status;
DWORD dwBytesRead;
DWORD dwDummy;
Standard_Character peekChar;
Standard_PCharacter ppeekChar;
Standard_PCharacter cBuffer;
Standard_CString eos;
DWORD dwSeekPos;
LONG aSeekPos;
if ( OSD_File::KindOfFile ( ) == OSD_DIRECTORY ) {
Standard_ProgramError::Raise("OSD_File::Read : it is a directory");
@@ -1096,7 +1094,7 @@ void OSD_File :: ReadLine (
if ( myIO & FLAG_FILE ) {
if (!ReadFile (myFileHandle, cBuffer, (DWORD)NByte, &dwBytesRead, NULL)) { // an error occured
if (!ReadFile (myFileHandle, cBuffer, NByte, &dwBytesRead, NULL)) { // an error occured
_osd_wnt_set_error ( myError, OSD_WFile );
Buffer.Clear ();
@@ -1110,16 +1108,10 @@ void OSD_File :: ReadLine (
} else {
myIO &= ~FLAG_EOF ; // if the file increased since last read (LD)
status = _get_line ( cBuffer, dwBytesRead );
NbyteRead = _get_line (cBuffer, dwBytesRead, aSeekPos);
dwSeekPos = LODWORD( status );
eos = ( Standard_CString )HIDWORD( status );
#ifdef VAC
if ( (__int64) status == (__int64) -1 ) { // last character in the buffer is <CR> -
#else
if ( status == 0xFFFFFFFFFFFFFFFF ) { // last character in the buffer is <CR> -
// peek next character to see if it is a <LF>
#endif
if ( NbyteRead == -1 ) // last character in the buffer is <CR> -
{ // peek next character to see if it is a <LF>
if (!ReadFile (myFileHandle, ppeekChar, 1, &dwDummy, NULL)) {
_osd_wnt_set_error ( myError, OSD_WFile );
@@ -1137,13 +1129,9 @@ void OSD_File :: ReadLine (
NbyteRead = dwBytesRead;
} else {
if ( dwSeekPos != 0 )
SetFilePointer (myFileHandle, (LONG)dwSeekPos, NULL, FILE_CURRENT);
NbyteRead = ( Standard_Integer )( eos - cBuffer );
} else if ( aSeekPos != 0 )
{
SetFilePointer (myFileHandle, aSeekPos, NULL, FILE_CURRENT);
}
} // end else
@@ -1167,18 +1155,10 @@ void OSD_File :: ReadLine (
} else {
status = _get_line ( cBuffer, dwBytesRead );
dwSeekPos = LODWORD( status );
eos = ( Standard_CString )HIDWORD( status );
#ifdef VAC
if ( (__int64) status == (__int64) -1 ) { // last character in the buffer is <CR> -
#else
if ( status == 0xFFFFFFFFFFFFFFFF ) { // last character in the buffer is <CR> -
// peek next character to see if it is a <LF>
#endif
NbyteRead = _get_line (cBuffer, dwBytesRead, aSeekPos);
if (NbyteRead == -1) // last character in the buffer is <CR> -
{ // peek next character to see if it is a <LF>
NbyteRead = dwBytesRead; // (LD) always fits this case.
dwDummy = _get_buffer (myFileHandle, ppeekChar, 1, TRUE, myIO & FLAG_SOCKET);
@@ -1195,13 +1175,9 @@ void OSD_File :: ReadLine (
myIO |= FLAG_EOF;
} else {
if ( dwSeekPos != 0 )
dwBytesRead = dwBytesRead + dwSeekPos;
NbyteRead = ( Standard_Integer )( eos - cBuffer );
} else if (aSeekPos != 0)
{
dwBytesRead = dwBytesRead + aSeekPos;
}
// Don't rewrite datas in cBuffer.
@@ -1957,12 +1933,11 @@ static void __fastcall _test_raise ( HANDLE hFile, Standard_CString str ) {
} // end _test_raise
// Modified so that we have <nl> at end of line if we have read <nl> or <cr>
// by LD 17 dec 98 for B4.4
// Returns number of bytes in the string (including end \n, but excluding \r);
//
static Standard_Integer __fastcall _get_line (Standard_PCharacter& buffer, DWORD dwBuffSize, LONG& theSeekPos)
{
static DWORDLONG __fastcall _get_line ( Standard_PCharacter& buffer, DWORD dwBuffSize ) {
DWORDLONG retVal;
Standard_PCharacter ptr;
buffer[ dwBuffSize ] = 0;
@@ -1970,55 +1945,30 @@ static DWORDLONG __fastcall _get_line ( Standard_PCharacter& buffer, DWORD dwBuf
while ( *ptr != 0 ) {
if ( *ptr == '\n' ) {
ptr++ ; // jump newline char.
*ptr = 0 ;
retVal = ptr - buffer - dwBuffSize;
retVal &= 0x0000000FFFFFFFF;// import 32-bit to 64-bit
#ifdef VAC
retVal = (DWORDLONG) ( (unsigned __int64) retVal | (((unsigned __int64) ptr) << 32) );
#else
retVal |= ( ( ( DWORDLONG )( DWORD )ptr ) << 32 );
#endif
return retVal;
} else if ( *ptr == '\r' && ptr[ 1 ] == '\n' ) {
*(ptr++) = '\n' ; // Substitue carriage return by newline.
*ptr = 0 ;
retVal = ptr + 1 - buffer - dwBuffSize;
retVal &= 0x0000000FFFFFFFF;// import 32-bit to 64-bit
#ifdef VAC
retVal = (DWORDLONG) ( (unsigned __int64) retVal | (((unsigned __int64) ptr) << 32) );
#else
retVal |= ( ( ( DWORDLONG )( DWORD )ptr ) << 32 );
#endif
return retVal;
} else if ( *ptr == '\r' && ptr[ 1 ] == 0 ) {
if ( *ptr == '\n' )
{
ptr++ ; // jump newline char.
*ptr = 0 ;
theSeekPos = (LONG)(ptr - buffer - dwBuffSize);
return (Standard_Integer)(ptr - buffer);
}
else if ( *ptr == '\r' && ptr[ 1 ] == '\n' )
{
*(ptr++) = '\n' ; // Substitue carriage return by newline.
*ptr = 0 ;
theSeekPos = (LONG)(ptr + 1 - buffer - dwBuffSize);
return (Standard_Integer)(ptr - buffer);
}
else if ( *ptr == '\r' && ptr[ 1 ] == 0 ) {
*ptr = '\n' ; // Substitue carriage return by newline
#ifdef VAC
return (DWORDLONG) (__int64) (-1);
#else
return 0xFFFFFFFFFFFFFFFF;
#endif
return -1;
}
++ptr;
} // end while
#ifdef VAC
retVal = (DWORDLONG) ( ( (unsigned __int64) ((DWORD) buffer + dwBuffSize) ) << 32 );
retVal = (DWORDLONG) ( (unsigned __int64) retVal & (((unsigned __int64) 0xFFFFFFFF) << 32) );
#else
retVal = ( ( ( DWORDLONG )( ( DWORD )buffer + dwBuffSize ) ) << 32 );
retVal &= 0xFFFFFFFF00000000;
#endif
return retVal;
theSeekPos = 0;
return dwBuffSize;
} // end _get_line
static int __fastcall _get_buffer (

View File

@@ -282,50 +282,6 @@ int status;
if (status == -1) myError.SetValue (errno, Iam, "SetProtection");
}
// Returns User Id
Standard_Integer OSD_FileNode::UserId(){
struct stat buffer;
// if (myPath.Name().Length()==0)
// OSD_OSDError::Raise("OSD_FileNode::UserId : no name was given");
// if (Failed()) Perror();
/* Get File Informations */
TCollection_AsciiString aBuffer;
myPath.SystemName ( aBuffer );
stat ( aBuffer.ToCString(), &buffer );
return ( buffer.st_uid );
}
// Returns Group Id
Standard_Integer OSD_FileNode::GroupId(){
struct stat buffer;
// if (myPath.Name().Length()==0)
// OSD_OSDError::Raise("OSD_FileNode::GroupId : no name was given");
// if (Failed()) Perror();
/* Get File Informations */
TCollection_AsciiString aBuffer;
myPath.SystemName ( aBuffer );
stat ( aBuffer.ToCString(), &buffer );
return ( buffer.st_gid );
}
// return the date of last access of file/directory
Quantity_Date OSD_FileNode::CreationMoment(){
@@ -806,81 +762,6 @@ Quantity_Date OSD_FileNode::CreationMoment () {
} // end OSD_FileNode :: CreationMoment
//=======================================================================
//function : UserId
//purpose :
//=======================================================================
Standard_Integer OSD_FileNode::UserId () {
PSID pSIDowner = NULL;
PSID retVal = NULL;
BOOL fDefaulted;
TCollection_AsciiString fName;
PSECURITY_DESCRIPTOR pSD;
myPath.SystemName ( fName );
TCollection_ExtendedString fNameW(fName);
TEST_RAISE( "UserId" );
if ( ( pSD = GetFileSecurityEx (
(const wchar_t*) fNameW.ToExtString (),
OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION
)
) != NULL &&
GetSecurityDescriptorOwner ( pSD, &pSIDowner, &fDefaulted ) &&
pSIDowner != NULL
)
retVal = CopySidEx ( pSIDowner );
else
_osd_wnt_set_error ( myError, OSD_WFileNode );
if ( pSD != NULL )
FreeFileSecurity ( pSD );
return ( Standard_Integer )retVal;
} // end OSD_FileNode :: UserId
//=======================================================================
//function : GroupId
//purpose :
//=======================================================================
Standard_Integer OSD_FileNode::GroupId () {
PGROUP_SID retVal = NULL;
TCollection_AsciiString fName;
PSECURITY_DESCRIPTOR pSD;
myPath.SystemName ( fName );
TCollection_ExtendedString fNameW(fName);
TEST_RAISE( "GroupId" );
if ( ( pSD = GetFileSecurityEx (
(const wchar_t*) fNameW.ToExtString (),
OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION
)
) != NULL
) {
retVal = AllocGroupSid ( pSD );
FreeFileSecurity ( pSD );
} else
_osd_wnt_set_error ( myError, OSD_WFileNode );
return ( Standard_Integer )retVal;
} // end OSD_FileNode :: GroupId
//=======================================================================
//function : Failed
//purpose :

View File

@@ -74,12 +74,6 @@ public:
//! same value.
Standard_EXPORT Quantity_Date CreationMoment();
//! Returns User Identification.
Standard_EXPORT Standard_Integer UserId();
//! Returns Group Identification.
Standard_EXPORT Standard_Integer GroupId();
//! Returns TRUE if an error occurs
Standard_EXPORT Standard_Boolean Failed() const;

View File

@@ -85,12 +85,6 @@ Standard_Integer OSD_Process::ProcessId(){
return (getpid());
}
Standard_Integer OSD_Process::UserId(){
return (getuid());
}
TCollection_AsciiString OSD_Process::UserName(){
struct passwd *infos;
infos = getpwuid(getuid());
@@ -272,32 +266,6 @@ Quantity_Date OSD_Process :: SystemDate () {
} // end OSD_Process :: SystemDate
Standard_Integer OSD_Process :: UserId () {
PSID retVal = NULL;
HANDLE hProcessToken = INVALID_HANDLE_VALUE;
PTOKEN_OWNER pTKowner = NULL;
if ( !OpenProcessToken (
GetCurrentProcess (),
TOKEN_QUERY, &hProcessToken
) ||
( pTKowner = ( PTOKEN_OWNER )GetTokenInformationEx (
hProcessToken, TokenOwner
)
) == NULL ||
( retVal = CopySidEx ( pTKowner -> Owner ) ) == NULL
)
_osd_wnt_set_error ( myError, OSD_WProcess );
if ( hProcessToken != INVALID_HANDLE_VALUE ) CloseHandle ( hProcessToken );
if ( pTKowner != NULL ) FreeTokenInformation ( pTKowner );
return ( Standard_Integer )retVal;
} // end OSD_Process :: UserId
TCollection_AsciiString OSD_Process :: UserName ()
{
Standard_PCharacter pBuff = new char[UNLEN + 1];

View File

@@ -51,9 +51,6 @@ public:
//! Gets system date.
Standard_EXPORT Quantity_Date SystemDate();
//! Returns the 'User Id'.
Standard_EXPORT Standard_Integer UserId();
//! Returns the user name.
Standard_EXPORT TCollection_AsciiString UserName();

View File

@@ -137,7 +137,7 @@ static DWORD WINAPI WNTthread_func (LPVOID data)
WNTthread_data *adata = (WNTthread_data*)data;
void* ret = adata->func ( adata->data );
free ( adata );
return (DWORD)ret;
return PtrToLong (ret);
}
#endif
@@ -243,7 +243,7 @@ Standard_Boolean OSD_Thread::Wait (Standard_Address &result) const
// and convert result of the thread execution to Standard_Address
DWORD anExitCode;
if ( GetExitCodeThread ( myThread, &anExitCode ) )
result = (Standard_Address)anExitCode;
result = ULongToPtr (anExitCode);
return Standard_True;
#else
@@ -273,7 +273,7 @@ Standard_Boolean OSD_Thread::Wait (const Standard_Integer time, Standard_Address
{
DWORD anExitCode;
if ( GetExitCodeThread ( myThread, &anExitCode ) )
result = (Standard_Address)anExitCode;
result = ULongToPtr (anExitCode);
return Standard_True;
}
else if (ret == WAIT_TIMEOUT)

View File

@@ -28,13 +28,11 @@
/***/
static void Init ( void );
/***/
static DWORD dwLevel;
/***/
class Init_OSD_WNT { // provides initialization
public:
Init_OSD_WNT () { Init (); dwLevel = TlsAlloc (); }
Init_OSD_WNT () { Init (); }
}; // end Init_OSD_WNT
@@ -897,7 +895,7 @@ void FreeAce ( PVOID pACE ) {
/* Returns : TRUE on success, FALSE otherwise */
/******************************************************************************/
/***/
BOOL MoveDirectory ( LPCWSTR oldDir, LPCWSTR newDir ) {
static BOOL MoveDirectory ( LPCWSTR oldDir, LPCWSTR newDir, DWORD& theRecurseLevel ) {
PWIN32_FIND_DATAW pFD;
LPWSTR pName;
@@ -909,12 +907,10 @@ BOOL MoveDirectory ( LPCWSTR oldDir, LPCWSTR newDir ) {
BOOL fFind;
BOOL retVal = FALSE;
DIR_RESPONSE response;
DWORD level;
if ( ( level = ( DWORD )TlsGetValue ( dwLevel ) ) == NULL ) {
if (theRecurseLevel == 0) {
++level;
TlsSetValue ( dwLevel, ( LPVOID )level );
++theRecurseLevel;
fFind = FALSE;
driveSrc = driveDst = pathSrc = pathDst = NULL;
@@ -968,16 +964,14 @@ retry:
if ( fFind ) {
--level;
TlsSetValue ( dwLevel, ( LPVOID )level );
--theRecurseLevel;
return retVal;
} // end if
} else {
++level;
TlsSetValue ( dwLevel, ( LPVOID )level );
++theRecurseLevel;
} // end else
@@ -1039,7 +1033,7 @@ retry:
if ( pFD -> dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
retVal = MoveDirectory ( pFullNameSrc, pFullNameDst );
retVal = MoveDirectory ( pFullNameSrc, pFullNameDst, theRecurseLevel );
if (!retVal) break;
} else {
@@ -1121,12 +1115,18 @@ retry_2:
} /* end if */
--level;
TlsSetValue ( dwLevel, ( LPVOID )level );
--theRecurseLevel;
return retVal;
} /* end MoveDirectory */
BOOL MoveDirectory (LPCWSTR oldDir, LPCWSTR newDir)
{
DWORD aRecurseLevel = 0;
return MoveDirectory (oldDir, newDir, aRecurseLevel);
}
/***/
/******************************************************************************/
/* Function : CopyDirectory */