Author: pschweitzer
Date: Fri May 6 21:06:31 2016
New Revision: 71270
URL: http://svn.reactos.org/svn/reactos?rev=71270&view=rev
Log:
[FASTFAT]
In case we're performing an in-place move (ie, in the same directory), if short name matches before and after, keep it.
This avoids that a file with long file name sees its short name changing on normally 'non-effect' renames.
For instance, in case of case-change only rename, short name will now be preserved.
See ya, you 7y old bug :-)
CORE-3875 #resolve #comment Fixed with r71270
Modified:
trunk/reactos/drivers/filesystems/fastfat/dirwr.c
trunk/reactos/drivers/filesystems/fastfat/vfat.h
Modified: trunk/reactos/drivers/filesystems/fastfat/dirwr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat/dirwr.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat/dirwr.c [iso-8859-1] Fri May 6 21:06:31 2016
@@ -345,6 +345,18 @@
{
break;
}
+ else if (MoveContext)
+ {
+ ASSERT(*Fcb);
+ if (strncmp((char *)SearchContext.DirEntry.Fat.ShortName, (char *)(*Fcb)->entry.Fat.ShortName, 11) == 0)
+ {
+ if (MoveContext->InPlace)
+ {
+ ASSERT(SearchContext.DirEntry.Fat.FileSize == MoveContext->FileSize);
+ break;
+ }
+ }
+ }
}
if (i == 100) /* FIXME : what to do after this ? */
{
@@ -947,6 +959,7 @@
OldParent = pFcb->parentFcb;
CcPurgeCacheSection(&OldParent->SectionObjectPointers, NULL, 0, FALSE);
+ MoveContext.InPlace = (OldParent == ParentFcb);
/* Add our new entry with our cluster */
Status = VfatAddEntry(DeviceExt,
Modified: trunk/reactos/drivers/filesystems/fastfat/vfat.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat/vfat.h [iso-8859-1] Fri May 6 21:06:31 2016
@@ -488,6 +488,7 @@
ULONG FileSize;
USHORT CreationDate;
USHORT CreationTime;
+ BOOLEAN InPlace;
} VFAT_MOVE_CONTEXT, *PVFAT_MOVE_CONTEXT;
FORCEINLINE
Author: spetreolle
Date: Fri May 6 20:20:02 2016
New Revision: 71269
URL: http://svn.reactos.org/svn/reactos?rev=71269&view=rev
Log:
[IERNONCE]
Add the romanian resource to the repository.
CORE-11111 #resolve
Fix build.
Added:
trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc (with props)
Added: trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iernonce/lang/ro…
==============================================================================
--- trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc (added)
+++ trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc [iso-8859-1] Fri May 6 20:20:02 2016
@@ -0,0 +1,27 @@
+LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
+
+STRINGTABLE
+BEGIN
+ IDS_INVALIDFORMAT "Formatul %1 RunEx sau RunOnceEx a fost nevalid. DupÄ numele funcÈiei este necesar caracterul barÄ-verticalÄ (â|â) iar funcÈia trebuie sÄ accepte parametri WinMain()."
+ IDS_LOADERROR "A survenit o eroare la încÄrcarea %1. Se poate ca fiÈierul sÄ nu fi fost instalat sau sÄ fie corupt."
+ IDS_CALLERROR "A survenit o eroare sau excepÈie în apelul funcÈiei %1 în %2."
+ IDS_INCORRECTFORMAT "Formatul comenzii RunEx sau RunOnceEx nu este corect: %1. Comanda de execuÈie trebuie sÄ Ã®nceapÄ cu â||â."
+ IDS_NOEXPORT "Nu se poate apela funcÈia %1 în fiÈierul %2 deoarece funcÈia nu existÄ sau nu este exportatÄ."
+ IDS_EXECUTEERROR "A survenit o eroare sau excepÈie în execuÈia %1."
+ IDS_NOFUNCTION "Nu se poate gÄsi funcÈia %1 în fiÈierul %2."
+ IDS_NODEPENDENCY "Nu se poate încÄrca fiÈierul dependenÈÄ %1."
+ IDS_SETUPERROR "A survenit o eroare la configurarea %1. AceastÄ eroare a fost înregistratÄ, instalarea va continua"
+ IDS_INCOMPLETE "Instalarea precedentÄ a aplicaÈiei nu a fost completÄ.\n\nAutentificaÈi-vÄ cu un cont de Administrator pentru a completa instalarea."
+ IDS_SETUP "Instalare ReactOS"
+ IDS_SERVICEERROR "Unele servicii nu au fost pornite. Instalarea necesitÄ repornirea sistemului pentru a porni serviciile."
+END
+
+IDD_DIALOG DIALOGEX 0, 0, 206, 166
+STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_POPUP | WS_VISIBLE | WS_CAPTION
+CAPTION "Instalare ReactOS"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ LTEXT "Se instaleazÄ urmÄtoarele elemente ale ReactOS:", -1, 36, 13, 163, 11
+ LISTBOX IDC_LB_ITEMS, 36, 32, 163, 127, LBS_NOTIFY | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP
+ ICON IDI_ICON, -1, 7, 7, 20, 20
+END
Propchange: trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/dll/win32/iernonce/lang/ro-RO.rc
------------------------------------------------------------------------------
svn:mime-type = text/plain
Author: mjansen
Date: Thu May 5 14:13:29 2016
New Revision: 71263
URL: http://svn.reactos.org/svn/reactos?rev=71263&view=rev
Log:
[NTOSKRNL] Fix NtApphelpCacheControl image lookup failure return codes when validating file times.
Also silence some debug outputs in the normal usage flow.
Modified:
trunk/reactos/ntoskrnl/ps/apphelp.c
Modified: trunk/reactos/ntoskrnl/ps/apphelp.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/apphelp.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/apphelp.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ps/apphelp.c [iso-8859-1] Thu May 5 14:13:29 2016
@@ -546,14 +546,14 @@
Entry = RtlLookupElementGenericTableAvl(&ApphelpShimCache, &Lookup);
if (Entry == NULL)
{
- DPRINT1("SHIMS: ApphelpCacheLookupEntry: could not find %wZ\n", ImageName);
+ DPRINT("SHIMS: ApphelpCacheLookupEntry: could not find %wZ\n", ImageName);
goto Cleanup;
}
- DPRINT1("SHIMS: ApphelpCacheLookupEntry: found %wZ\n", ImageName);
+ DPRINT("SHIMS: ApphelpCacheLookupEntry: found %wZ\n", ImageName);
if (ImageHandle == INVALID_HANDLE_VALUE)
{
- DPRINT1("SHIMS: ApphelpCacheLookupEntry: ok\n");
+ DPRINT("SHIMS: ApphelpCacheLookupEntry: ok\n");
/* just return if we know it, do not query file info */
Status = STATUS_SUCCESS;
}
@@ -564,7 +564,7 @@
Lookup.Persistent.DateTime.QuadPart == Entry->Persistent.DateTime.QuadPart &&
Lookup.Persistent.FileSize.QuadPart == Entry->Persistent.FileSize.QuadPart)
{
- DPRINT1("SHIMS: ApphelpCacheLookupEntry: found & validated\n");
+ DPRINT("SHIMS: ApphelpCacheLookupEntry: found & validated\n");
Status = STATUS_SUCCESS;
/* move it to the front to keep it alive */
RemoveEntryList(&Entry->List);
@@ -572,7 +572,8 @@
}
else
{
- DPRINT1("SHIMS: ApphelpCacheLookupEntry: file info mismatch\n");
+ DPRINT1("SHIMS: ApphelpCacheLookupEntry: file info mismatch (%lx)\n", Status);
+ Status = STATUS_NOT_FOUND;
/* Could not read file info, or it did not match, drop it from the cache */
ApphelpCacheRemoveEntryNolock(Entry);
}
@@ -642,7 +643,7 @@
&NodeOrParent, &SearchResult);
if (Lookup)
{
- DPRINT1("SHIMS: ApphelpCacheUpdateEntry: Entry already exists, reusing it\n");
+ DPRINT("SHIMS: ApphelpCacheUpdateEntry: Entry already exists, reusing it\n");
/* Unlink the found item, so we can put it back at the front,
and copy the earlier obtained file info*/
RemoveEntryList(&Lookup->List);
@@ -651,7 +652,7 @@
}
else
{
- DPRINT1("SHIMS: ApphelpCacheUpdateEntry: Inserting new Entry\n");
+ DPRINT("SHIMS: ApphelpCacheUpdateEntry: Inserting new Entry\n");
/* Insert a new entry, with its own copy of the ImageName */
ApphelpDuplicateUnicodeString(&Entry.Persistent.ImageName, ImageName);
Lookup = RtlInsertElementGenericTableFullAvl(&ApphelpShimCache,
@@ -705,7 +706,7 @@
PLIST_ENTRY ListEntry;
PSHIM_CACHE_ENTRY Entry;
- DPRINT1("SHIMS: NtApphelpCacheControl( Dumping entries, newset to oldest )\n");
+ DPRINT1("SHIMS: NtApphelpCacheControl( Dumping entries, newest to oldest )\n");
ApphelpCacheAcquireLock();
ListEntry = ApphelpShimCacheAge.Flink;
while (ListEntry != &ApphelpShimCacheAge)
@@ -741,19 +742,19 @@
switch (Service)
{
case ApphelpCacheServiceLookup:
- DPRINT1("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceLookup )\n");
+ DPRINT("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceLookup )\n");
Status = ApphelpValidateData(ServiceData, &ImageName, &Handle);
if (NT_SUCCESS(Status))
Status = ApphelpCacheLookupEntry(&ImageName, Handle);
break;
case ApphelpCacheServiceRemove:
- DPRINT1("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceRemove )\n");
+ DPRINT("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceRemove )\n");
Status = ApphelpValidateData(ServiceData, &ImageName, &Handle);
if (NT_SUCCESS(Status))
Status = ApphelpCacheRemoveEntry(&ImageName);
break;
case ApphelpCacheServiceUpdate:
- DPRINT1("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceUpdate )\n");
+ DPRINT("SHIMS: NtApphelpCacheControl( ApphelpCacheServiceUpdate )\n");
Status = ApphelpCacheAccessCheck();
if (NT_SUCCESS(Status))
{