Only in dokan-0321094src/src/dokan_mirror: dokan.lib
diff -c dokan-0321094src/src/dokan_mirror/mirror.c orig-dokan-0321094src/dokan_mirror/mirror.c
*** dokan-0321094src/src/dokan_mirror/mirror.c	Mon May 26 21:22:23 2008
--- orig-dokan-0321094src/dokan_mirror/mirror.c	Sun May 25 23:18:44 2008
***************
*** 28,34 ****
  #include "fileinfo.h"
  
  static WCHAR RootDirectory[MAX_PATH] = L"C:";
- static BOOLEAN isNoLockOnSource = FALSE;
  
  static void
  GetFilePath(
--- 28,33 ----
***************
*** 111,116 ****
--- 110,116 ----
  	MirrorCheckFlag(AccessMode, STANDARD_RIGHTS_WRITE);
  	MirrorCheckFlag(AccessMode, STANDARD_RIGHTS_EXECUTE);
  
+ 
  	// when filePath is a directory, flags is changed to the file be opened
  	if (GetFileAttributes(filePath) & FILE_ATTRIBUTE_DIRECTORY) {
  		FlagsAndAttributes |= FILE_FLAG_BACKUP_SEMANTICS;
***************
*** 146,170 ****
  	MirrorCheckFlag(FlagsAndAttributes, SECURITY_EFFECTIVE_ONLY);
  	MirrorCheckFlag(FlagsAndAttributes, SECURITY_SQOS_PRESENT);
  
! 	if (isNoLockOnSource) {
! 		handle = CreateFile(
! 			filePath,
! 			GENERIC_READ | GENERIC_WRITE,
! 			FILE_SHARE_READ | FILE_SHARE_WRITE,
! 			NULL, // security attribute
! 			CreationDisposition,
! 			FlagsAndAttributes,// |FILE_FLAG_NO_BUFFERING,
! 			NULL); // template file handle
! 	} else {
! 		handle = CreateFile(
! 			filePath,
! 			AccessMode,//GENERIC_READ|GENERIC_WRITE|GENERIC_EXECUTE,
! 			ShareMode,
! 			NULL, // security attribute
! 			CreationDisposition,
! 			FlagsAndAttributes,// |FILE_FLAG_NO_BUFFERING,
! 			NULL); // template file handle
! 	}
  
  	if (handle == INVALID_HANDLE_VALUE) {
  		DWORD error = GetLastError();
--- 146,159 ----
  	MirrorCheckFlag(FlagsAndAttributes, SECURITY_EFFECTIVE_ONLY);
  	MirrorCheckFlag(FlagsAndAttributes, SECURITY_SQOS_PRESENT);
  
! 	handle = CreateFile(
! 		filePath,
! 		AccessMode,//GENERIC_READ|GENERIC_WRITE|GENERIC_EXECUTE,
! 		ShareMode,
! 		NULL, // security attribute
! 		CreationDisposition,
! 		FlagsAndAttributes,// |FILE_FLAG_NO_BUFFERING,
! 		NULL); // template file handle
  
  	if (handle == INVALID_HANDLE_VALUE) {
  		DWORD error = GetLastError();
***************
*** 821,860 ****
  int __cdecl
  main(ULONG argc, PCHAR argv[])
  {
- 	ULONG argNo = 0;
  	PDOKAN_OPTIONS dokanOptions = (PDOKAN_OPTIONS)malloc(sizeof(DOKAN_OPTIONS));
  
  	if (argc < 3) {
! 		fprintf(stderr, "mirror.exe [OPTION] RootDirectory DriveLetter [ThreadCount]\n"
! 						"\n"
! 						"  -noLockOnSource\tForce to use GENERIC_READ | GENERIC_WRITE and\n"
! 						"\t\t\tFILE_SHARE_READ | FILE_SHARE_WRITE at CreateFile.\n"
! 						"\t\t\tUse this option if you want to launch an application\n"
! 						"\t\t\tfrom the mirror drive.\n");
  		return -1;
  	}
  
  	ZeroMemory(dokanOptions, sizeof(DOKAN_OPTIONS));
  
! 	argNo = 1;
! 	if (argv[argNo][0] == '-') {
! 		if (strcmp("-noLockOnSource", argv[argNo]) == 0) {
! 			isNoLockOnSource = TRUE;
! 			argNo++;
! 		} else {
! 			fprintf(stderr, "Illegal option : %s\n", argv[argNo]);
! 			return -1;
! 		}
! 	}
! 
! 	mbstowcs(RootDirectory, argv[argNo], strlen(argv[argNo]));
  	wprintf(L"RootDirectory: %ls\n", RootDirectory);
- 	argNo++;
  
! 	dokanOptions->DriveLetter = argv[argNo++][0];
  
! 	if (argc > argNo)
! 		dokanOptions->ThreadCount = atoi(argv[argNo++]);
  	else
  		dokanOptions->ThreadCount = 1;
  	dokanOptions->DebugMode = 1;
--- 810,831 ----
  int __cdecl
  main(ULONG argc, PCHAR argv[])
  {
  	PDOKAN_OPTIONS dokanOptions = (PDOKAN_OPTIONS)malloc(sizeof(DOKAN_OPTIONS));
  
  	if (argc < 3) {
! 		fprintf(stderr, "dokan.exe RootDirectory DriveLetter [ThreadCount]\n");
  		return -1;
  	}
  
  	ZeroMemory(dokanOptions, sizeof(DOKAN_OPTIONS));
  
! 	mbstowcs(RootDirectory, argv[1], strlen(argv[1]));
  	wprintf(L"RootDirectory: %ls\n", RootDirectory);
  
! 	dokanOptions->DriveLetter = argv[2][0];
  
! 	if (argc == 4)
! 		dokanOptions->ThreadCount = atoi(argv[3]);
  	else
  		dokanOptions->ThreadCount = 1;
  	dokanOptions->DebugMode = 1;

