* Sync up to trunk head (r65481).
authorAmine Khaldi <amine.khaldi@reactos.org>
Tue, 25 Nov 2014 12:43:36 +0000 (12:43 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Tue, 25 Nov 2014 12:43:36 +0000 (12:43 +0000)
svn path=/branches/shell-experiments/; revision=65482

293 files changed:
base/applications/calc/lang/no-NO.rc
base/applications/calc/lang/sv-SE.rc
base/applications/network/net/lang/es-ES.rc
base/applications/rapps/README.ENG
base/applications/rapps/README.RUS
base/applications/rapps/available.c
base/applications/rapps/lang/bg-BG.rc
base/applications/rapps/lang/cs-CZ.rc
base/applications/rapps/lang/de-DE.rc
base/applications/rapps/lang/en-US.rc
base/applications/rapps/lang/es-ES.rc
base/applications/rapps/lang/fr-FR.rc
base/applications/rapps/lang/he-IL.rc
base/applications/rapps/lang/it-IT.rc
base/applications/rapps/lang/ja-JP.rc
base/applications/rapps/lang/no-NO.rc
base/applications/rapps/lang/pl-PL.rc
base/applications/rapps/lang/pt-BR.rc
base/applications/rapps/lang/ro-RO.rc
base/applications/rapps/lang/ru-RU.rc
base/applications/rapps/lang/sk-SK.rc
base/applications/rapps/lang/sq-AL.rc
base/applications/rapps/lang/sv-SE.rc
base/applications/rapps/lang/tr-TR.rc
base/applications/rapps/lang/uk-UA.rc
base/applications/rapps/lang/zh-CN.rc
base/applications/rapps/lang/zh-TW.rc
base/applications/rapps/rapps.h
base/applications/rapps/rapps/7zip.txt
base/applications/rapps/rapps/abiword.txt
base/applications/rapps/rapps/abiword26.txt
base/applications/rapps/rapps/abyss.txt
base/applications/rapps/rapps/ac97forvirtualbox.txt
base/applications/rapps/rapps/audiograbber.txt
base/applications/rapps/rapps/bittorrent.txt
base/applications/rapps/rapps/bochs.txt
base/applications/rapps/rapps/boswars.txt
base/applications/rapps/rapps/boundaround.txt
base/applications/rapps/rapps/christmasbound.txt
base/applications/rapps/rapps/chromium.txt
base/applications/rapps/rapps/cnt.txt
base/applications/rapps/rapps/codeblocks.txt
base/applications/rapps/rapps/codeblocks_gcc.txt
base/applications/rapps/rapps/codeblocks_gcc_2.txt
base/applications/rapps/rapps/comctl32ocx.txt
base/applications/rapps/rapps/devcpp_tdm_gcc_x64.txt
base/applications/rapps/rapps/diablo2.txt
base/applications/rapps/rapps/dosblaster.txt
base/applications/rapps/rapps/dosbox.txt
base/applications/rapps/rapps/doublecommander.txt
base/applications/rapps/rapps/dplus.txt
base/applications/rapps/rapps/dvdwritenow.txt
base/applications/rapps/rapps/excelview.txt
base/applications/rapps/rapps/fap.txt
base/applications/rapps/rapps/fira.txt
base/applications/rapps/rapps/firefox.txt
base/applications/rapps/rapps/firefox2.txt
base/applications/rapps/rapps/firefox3.txt
base/applications/rapps/rapps/firefox36.txt
base/applications/rapps/rapps/foxit.txt
base/applications/rapps/rapps/freebasic.txt
base/applications/rapps/rapps/ghostscript.txt
base/applications/rapps/rapps/ghostview.txt
base/applications/rapps/rapps/glidewrapzbag.txt
base/applications/rapps/rapps/globulation2.txt
base/applications/rapps/rapps/hover.txt
base/applications/rapps/rapps/hxd.txt
base/applications/rapps/rapps/indiftpd.txt
base/applications/rapps/rapps/inkscape.txt
base/applications/rapps/rapps/irfanview.txt
base/applications/rapps/rapps/irfanviewplugins.txt
base/applications/rapps/rapps/kdewin.txt
base/applications/rapps/rapps/kyodai.txt
base/applications/rapps/rapps/lazaruside.txt
base/applications/rapps/rapps/lbreakout2.txt
base/applications/rapps/rapps/lgeneral.txt
base/applications/rapps/rapps/librecad.txt
base/applications/rapps/rapps/libreoffice.txt
base/applications/rapps/rapps/libreofficehelp.txt
base/applications/rapps/rapps/lmarbles.txt
base/applications/rapps/rapps/mcwin32.txt
base/applications/rapps/rapps/mfc40.txt
base/applications/rapps/rapps/miktex.txt
base/applications/rapps/rapps/mirandaim.txt
base/applications/rapps/rapps/mirc.txt
base/applications/rapps/rapps/mirc6.txt
base/applications/rapps/rapps/mono2.txt
base/applications/rapps/rapps/mpc.txt
base/applications/rapps/rapps/mpxplay.txt
base/applications/rapps/rapps/msxml3.txt
base/applications/rapps/rapps/net11.txt
base/applications/rapps/rapps/net20.txt
base/applications/rapps/rapps/net20sp2.txt
base/applications/rapps/rapps/nirlauncher.txt
base/applications/rapps/rapps/npp.txt
base/applications/rapps/rapps/offbyone.txt
base/applications/rapps/rapps/openoffice.txt
base/applications/rapps/rapps/openoffice2.4.txt
base/applications/rapps/rapps/openttd.txt
base/applications/rapps/rapps/opera.txt
base/applications/rapps/rapps/opera9.txt
base/applications/rapps/rapps/peazip.txt
base/applications/rapps/rapps/pengupop.txt
base/applications/rapps/rapps/photofiltre.txt
base/applications/rapps/rapps/pingus.txt
base/applications/rapps/rapps/pptview.txt
base/applications/rapps/rapps/precisecalc.txt
base/applications/rapps/rapps/pspad.txt
base/applications/rapps/rapps/ptanks.txt
base/applications/rapps/rapps/putty.txt
base/applications/rapps/rapps/python.txt
base/applications/rapps/rapps/python2.txt
base/applications/rapps/rapps/qb64sdl.txt
base/applications/rapps/rapps/qmmp.txt
base/applications/rapps/rapps/remood.txt
base/applications/rapps/rapps/reshack.txt
base/applications/rapps/rapps/rocks.txt
base/applications/rapps/rapps/rosbe.txt
base/applications/rapps/rapps/rosbeamd64.txt
base/applications/rapps/rapps/rosbearm.txt
base/applications/rapps/rapps/sambatng.txt
base/applications/rapps/rapps/sbforvmware.txt
base/applications/rapps/rapps/scite.txt
base/applications/rapps/rapps/scummvm.txt
base/applications/rapps/rapps/sdl_mixer.txt
base/applications/rapps/rapps/sdl_runtime.txt
base/applications/rapps/rapps/seamonkey.txt
base/applications/rapps/rapps/smplayer.txt
base/applications/rapps/rapps/snoopy.txt
base/applications/rapps/rapps/steam.txt
base/applications/rapps/rapps/sumatrapdf.txt
base/applications/rapps/rapps/summerbound.txt
base/applications/rapps/rapps/superdxb.txt
base/applications/rapps/rapps/superfinder.txt
base/applications/rapps/rapps/supertux.txt
base/applications/rapps/rapps/tahoma.txt
base/applications/rapps/rapps/thunderbird.txt
base/applications/rapps/rapps/thunderbird3.txt
base/applications/rapps/rapps/tileworld.txt
base/applications/rapps/rapps/totalcommander.txt
base/applications/rapps/rapps/tuxpaint.txt
base/applications/rapps/rapps/ultravnc.txt
base/applications/rapps/rapps/utorrent.txt
base/applications/rapps/rapps/vb5run.txt
base/applications/rapps/rapps/vb6run.txt
base/applications/rapps/rapps/vc2005sp1run.txt
base/applications/rapps/rapps/vc2008sp1run.txt
base/applications/rapps/rapps/vc2010run.txt
base/applications/rapps/rapps/vc6run.txt
base/applications/rapps/rapps/vlc.txt
base/applications/rapps/rapps/winboard.txt
base/applications/rapps/rapps/wme9.txt
base/applications/rapps/rapps/wordview.txt
base/applications/rapps/rapps/zaz.txt
base/applications/rapps/resource.h
base/applications/taskmgr/CMakeLists.txt
base/applications/taskmgr/column.c
base/applications/taskmgr/column.h
base/applications/taskmgr/lang/bg-BG.rc
base/applications/taskmgr/lang/cs-CZ.rc
base/applications/taskmgr/lang/da-DK.rc
base/applications/taskmgr/lang/de-DE.rc
base/applications/taskmgr/lang/el-GR.rc
base/applications/taskmgr/lang/en-US.rc
base/applications/taskmgr/lang/es-ES.rc
base/applications/taskmgr/lang/fr-FR.rc
base/applications/taskmgr/lang/he-IL.rc
base/applications/taskmgr/lang/hu-HU.rc
base/applications/taskmgr/lang/id-ID.rc
base/applications/taskmgr/lang/it-IT.rc
base/applications/taskmgr/lang/ja-JP.rc
base/applications/taskmgr/lang/ko-KR.rc
base/applications/taskmgr/lang/nl-NL.rc
base/applications/taskmgr/lang/no-NO.rc
base/applications/taskmgr/lang/pl-PL.rc
base/applications/taskmgr/lang/pt-BR.rc
base/applications/taskmgr/lang/ro-RO.rc
base/applications/taskmgr/lang/ru-RU.rc
base/applications/taskmgr/lang/sk-SK.rc
base/applications/taskmgr/lang/sq-AL.rc
base/applications/taskmgr/lang/sv-SE.rc
base/applications/taskmgr/lang/tr-TR.rc
base/applications/taskmgr/lang/uk-UA.rc
base/applications/taskmgr/lang/zh-CN.rc
base/applications/taskmgr/lang/zh-TW.rc
base/applications/taskmgr/perfdata.c
base/applications/taskmgr/perfdata.h
base/applications/taskmgr/perfpage.c
base/applications/taskmgr/procpage.c
base/applications/taskmgr/resource.h
base/applications/taskmgr/taskmgr.c
base/setup/welcome/lang/da-DK.rc
base/shell/cmd/lang/no-NO.rc
base/shell/cmd/lang/sv-SE.rc
base/shell/explorer-old/explorer-el.rc
base/shell/explorer-old/explorer-zh.rc
dll/cpl/access/lang/bg-BG.rc
dll/cpl/access/lang/cs-CZ.rc
dll/cpl/access/lang/el-GR.rc
dll/cpl/access/lang/en-US.rc
dll/cpl/access/lang/es-ES.rc
dll/cpl/access/lang/fr-FR.rc
dll/cpl/access/lang/he-IL.rc
dll/cpl/access/lang/hu-HU.rc
dll/cpl/access/lang/id-ID.rc
dll/cpl/access/lang/nl-NL.rc
dll/cpl/access/lang/no-NO.rc
dll/cpl/access/lang/pl-PL.rc
dll/cpl/access/lang/sk-SK.rc
dll/cpl/access/lang/sq-AL.rc
dll/cpl/mmsys/lang/nl-NL.rc
dll/ntdll/def/ntdll.spec
dll/win32/kernel32/client/console/console.c
dll/win32/kernel32/client/console/init.c
dll/win32/kernel32/client/proc.c
dll/win32/kernel32/include/console.h
dll/win32/syssetup/lang/nl-NL.rc
drivers/filesystems/ntfs/attrib.c
drivers/filesystems/ntfs/dirctl.c
drivers/filesystems/ntfs/fcb.c
drivers/filesystems/ntfs/finfo.c
drivers/filesystems/ntfs/mft.c
drivers/filesystems/ntfs/ntfs.h
drivers/storage/scsiport/scsiport.c
drivers/wdm/audio/legacy/wdmaud/wdmaud.rc
include/ddk/nt_vdd.h
include/psdk/ntdef.h
include/psdk/setupapi.h
include/psdk/winnt.h
include/psdk/winternl.h
include/reactos/subsys/win/conmsg.h
include/xdk/ntbasedef.h
include/xdk/winnt_old.h
lib/fast486/common.c
lib/fast486/common.inl
lib/fast486/opcodes.c
lib/rtl/message.c
lib/sdk/nt/entry_point.c
ntoskrnl/cc/pin.c
ntoskrnl/io/pnpmgr/plugplay.c
ntoskrnl/mm/mminit.c
ntoskrnl/mm/section.c
ntoskrnl/po/poshtdwn.c
ntoskrnl/po/power.c
subsystems/ntvdm/CMakeLists.txt
subsystems/ntvdm/bios/bios32/bios32.c
subsystems/ntvdm/bios/vidbios.c
subsystems/ntvdm/bios/vidbios.h
subsystems/ntvdm/clock.c
subsystems/ntvdm/cpu/cpu.c
subsystems/ntvdm/dos/dem.c
subsystems/ntvdm/dos/dos32krnl/dos.c
subsystems/ntvdm/dos/dos32krnl/dos.h
subsystems/ntvdm/emulator.c
subsystems/ntvdm/hardware/dma.c [new file with mode: 0644]
subsystems/ntvdm/hardware/dma.h [new file with mode: 0644]
subsystems/ntvdm/hardware/pic.c
subsystems/ntvdm/hardware/pit.c [moved from subsystems/ntvdm/hardware/timer.c with 99% similarity]
subsystems/ntvdm/hardware/pit.h [moved from subsystems/ntvdm/hardware/timer.h with 96% similarity]
subsystems/ntvdm/hardware/sound/speaker.c [moved from subsystems/ntvdm/hardware/speaker.c with 99% similarity]
subsystems/ntvdm/hardware/sound/speaker.h [moved from subsystems/ntvdm/hardware/speaker.h with 100% similarity]
subsystems/ntvdm/hardware/video/vga.c [moved from subsystems/ntvdm/hardware/vga.c with 100% similarity]
subsystems/ntvdm/hardware/video/vga.h [moved from subsystems/ntvdm/hardware/vga.h with 100% similarity]
subsystems/ntvdm/ntvdm.c
subsystems/ntvdm/ntvdm.spec
subsystems/ntvdm/vddsup.c
subsystems/win32/csrsrv/thredsup.c
win32ss/gdi/ntgdi/xformobj.c
win32ss/user/ntuser/desktop.c
win32ss/user/ntuser/keyboard.c
win32ss/user/ntuser/main.c
win32ss/user/ntuser/message.c
win32ss/user/ntuser/msgqueue.c
win32ss/user/ntuser/msgqueue.h
win32ss/user/ntuser/simplecall.c
win32ss/user/ntuser/timer.c
win32ss/user/ntuser/winsta.c
win32ss/user/ntuser/winsta.h
win32ss/user/winsrv/consrv.cmake
win32ss/user/winsrv/consrv/condrv/coninput.c
win32ss/user/winsrv/consrv/condrv/console.c
win32ss/user/winsrv/consrv/console.c
win32ss/user/winsrv/consrv/console.h
win32ss/user/winsrv/consrv/consrv.h
win32ss/user/winsrv/consrv/frontends/gui/conwnd.c
win32ss/user/winsrv/consrv/frontends/gui/conwnd.h
win32ss/user/winsrv/consrv/frontends/gui/guiterm.c
win32ss/user/winsrv/consrv/handle.c
win32ss/user/winsrv/consrv/include/conio_winsrv.h
win32ss/user/winsrv/consrv/init.c
win32ss/user/winsrv/consrv/procinit.h
win32ss/user/winsrv/consrv/shutdown.c [new file with mode: 0644]
win32ss/user/winsrv/winsrv.h [new file with mode: 0644]

index 168ba2b..f69437c 100644 (file)
@@ -405,7 +405,7 @@ BEGIN
     BEGIN
         MENUITEM "Emner i hjelp", IDM_HELP_HELP
         MENUITEM SEPARATOR
-        MENUITEM "Om Reactos Kalkulator", IDM_HELP_ABOUT
+        MENUITEM "Om ReactOS Kalkulator", IDM_HELP_ABOUT
     END
 END
 
index bc812a1..e91e2e5 100644 (file)
@@ -412,7 +412,7 @@ BEGIN
     BEGIN
         MENUITEM "Visa hjälp", IDM_HELP_HELP
         MENUITEM SEPARATOR
-        MENUITEM "Om Reactos Kalkylator", IDM_HELP_ABOUT
+        MENUITEM "Om ReactOS Kalkylator", IDM_HELP_ABOUT
     END
 END
 
index f781994..fc3e12f 100644 (file)
@@ -68,59 +68,59 @@ BEGIN
       HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |\n\
       SHARE | START | STATISTICS | STOP | TIME | USE | NET USER | VIEW ]\n"
 
-    IDS_ACCOUNTS_FORCE_LOGOFF "Force logoff after"
-    IDS_ACCOUNTS_LOGOFF_SECONDS "%lu seconds"
-    IDS_ACCOUNTS_MIN_PW_AGE "Minimum password age (in days)"
-    IDS_ACCOUNTS_MAX_PW_AGE "Maximum password age (in days)"
-    IDS_ACCOUNTS_MIN_PW_LENGTH "Minimum password length"
-    IDS_ACCOUNTS_PW_HIST_LENGTH "Password history length"
-    IDS_ACCOUNTS_LOCKOUT_THRESHOLD "Lockout threshold"
-    IDS_ACCOUNTS_LOCKOUT_DURATION "Lockout duration (in minutes)"
-    IDS_ACCOUNTS_LOCKOUT_WINDOW "Lockout observation window (in minutes)"
-    IDS_ACCOUNTS_COMPUTER_ROLE "Computer role"
-    IDS_ACCOUNTS_PRIMARY_SERVER "Primary server"
-    IDS_ACCOUNTS_BACKUP_SERVER "Backup server"
-    IDS_ACCOUNTS_STANDALONE_SERVER "Standalone server"
-    IDS_ACCOUNTS_WORKSTATION "Workstation"
+    IDS_ACCOUNTS_FORCE_LOGOFF "Forzar cierre de sesión tras"
+    IDS_ACCOUNTS_LOGOFF_SECONDS "%lu segundos"
+    IDS_ACCOUNTS_MIN_PW_AGE "Validez mínima de contraseña (en días)"
+    IDS_ACCOUNTS_MAX_PW_AGE "Validez máxima de contraseña (en días)"
+    IDS_ACCOUNTS_MIN_PW_LENGTH "Tamaño mínimo de contraseña"
+    IDS_ACCOUNTS_PW_HIST_LENGTH "Duración del historial de contraseñas"
+    IDS_ACCOUNTS_LOCKOUT_THRESHOLD "Umbral de bloqueo"
+    IDS_ACCOUNTS_LOCKOUT_DURATION "Duración del bloqueo (en minutos)"
+    IDS_ACCOUNTS_LOCKOUT_WINDOW "Ventana de cumpl. de bloqueo (en minutos)"
+    IDS_ACCOUNTS_COMPUTER_ROLE "Rol del equipo"
+    IDS_ACCOUNTS_PRIMARY_SERVER "Servidor primario"
+    IDS_ACCOUNTS_BACKUP_SERVER "Servidor de respaldo"
+    IDS_ACCOUNTS_STANDALONE_SERVER "Servidor independiente"
+    IDS_ACCOUNTS_WORKSTATION "Estación de trabajo"
 
-    IDS_LOCALGROUP_ALIASES "Aliases for \\\\%s"
-    IDS_LOCALGROUP_ALIAS_NAME "Alias name"
-    IDS_LOCALGROUP_COMMENT "Comment"
-    IDS_LOCALGROUP_MEMBERS "Members"
+    IDS_LOCALGROUP_ALIASES "Alias de \\\\%s"
+    IDS_LOCALGROUP_ALIAS_NAME "Nombre del alias"
+    IDS_LOCALGROUP_COMMENT "Comentario"
+    IDS_LOCALGROUP_MEMBERS "Miembros"
 
-    IDS_USER_ACCOUNTS "User accounts for \\\\%s"
-    IDS_USER_NAME "User name"
-    IDS_USER_FULL_NAME "Full name"
-    IDS_USER_COMMENT "Comment"
-    IDS_USER_USER_COMMENT "User comment"
-    IDS_USER_COUNTRY_CODE "Country code"
-    IDS_USER_ACCOUNT_ACTIVE "Account active"
-    IDS_USER_ACCOUNT_EXPIRES "Account expires"
-    IDS_USER_PW_LAST_SET "Password last set"
-    IDS_USER_PW_EXPIRES "Password expires"
-    IDS_USER_PW_CHANGEABLE "Password changeable"
-    IDS_USER_PW_REQUIRED "Password required"
-    IDS_USER_CHANGE_PW "User may change password"
-    IDS_USER_WORKSTATIONS "Workstations allowed"
-    IDS_USER_LOGON_SCRIPT "Logon script"
-    IDS_USER_PROFILE "User profile"
-    IDS_USER_HOME_DIR "Home directory"
-    IDS_USER_LAST_LOGON "Last logon"
-    IDS_USER_LOGON_HOURS "Logon hours allowed"
-    IDS_USER_LOCAL_GROUPS "Local group memberships"
-    IDS_USER_GLOBAL_GROUPS "Global group memberships"
+    IDS_USER_ACCOUNTS "Cuentas de usuario en \\\\%s"
+    IDS_USER_NAME "Nombre de usuario"
+    IDS_USER_FULL_NAME "Nombre completo"
+    IDS_USER_COMMENT "Comentario"
+    IDS_USER_USER_COMMENT "Comentario de usuario"
+    IDS_USER_COUNTRY_CODE "Código de país"
+    IDS_USER_ACCOUNT_ACTIVE "Cuenta activa"
+    IDS_USER_ACCOUNT_EXPIRES "Fecha de expiración"
+    IDS_USER_PW_LAST_SET "La contraseña se cambió por última vez"
+    IDS_USER_PW_EXPIRES "La contraseña expira"
+    IDS_USER_PW_CHANGEABLE "La contraseña se puede cambiar"
+    IDS_USER_PW_REQUIRED "Se necesita contraseña"
+    IDS_USER_CHANGE_PW "El usuario puede cambiar la contraseña"
+    IDS_USER_WORKSTATIONS "Se permiten estaciones de trabajo"
+    IDS_USER_LOGON_SCRIPT "Script de inicio"
+    IDS_USER_PROFILE "Perfil de usuario"
+    IDS_USER_HOME_DIR "Carpeta raíz"
+    IDS_USER_LAST_LOGON "Último inicio de sesión"
+    IDS_USER_LOGON_HOURS "Horas de inicio permitidas"
+    IDS_USER_LOCAL_GROUPS "Miembro de los grupos locales"
+    IDS_USER_GLOBAL_GROUPS "Miembro de los grupos globales"
 
-    IDS_USER_ENTER_PASSWORD1 "Enter a new password for the user: "
-    IDS_USER_ENTER_PASSWORD2 "Enter the password again: "
-    IDS_USER_NO_PASSWORD_MATCH "The passwords do not match!"
+    IDS_USER_ENTER_PASSWORD1 "Escriba una contraseña: "
+    IDS_USER_ENTER_PASSWORD2 "Vuelva a escribir la contraseña: "
+    IDS_USER_NO_PASSWORD_MATCH "Las contraseñas no coinciden."
 
-    IDS_GENERIC_YES "Yes"
+    IDS_GENERIC_YES ""
     IDS_GENERIC_NO "No"
-    IDS_GENERIC_NEVER "Never"
-    IDS_GENERIC_NONE "None"
-    IDS_GENERIC_ALL "All"
-    IDS_GENERIC_LOCKED "Locked"
+    IDS_GENERIC_NEVER "Nunca"
+    IDS_GENERIC_NONE "Ninguno"
+    IDS_GENERIC_ALL "Todos"
+    IDS_GENERIC_LOCKED "Bloqueado"
 
-    IDS_ERROR_OPTION_NOT_SUPPORTED "The %s option is not supported yet.\n"
-    IDS_ERROR_INVALID_OPTION_VALUE "You entered an invalid value for the %s option.\n"
+    IDS_ERROR_OPTION_NOT_SUPPORTED "La opción %s todavía no está disponible.\n"
+    IDS_ERROR_INVALID_OPTION_VALUE "El valor para la opción %s no es válido.\n"
 END
index 754754b..f4b8713 100644 (file)
@@ -14,7 +14,7 @@ The File Overview:
 Name = program name
 RegName = Name in registry
 Version = 1.1.1
-Licence = GPL
+License = GPL
 Description = Description
 Size = 10 mb
 Category = 5
index 0974ef6..e81dabd 100644 (file)
@@ -15,7 +15,7 @@ For more information for RAPPS, see: https://www.reactos.org/wiki/RAPPS
 Name = Èìÿ ïðîãðàììû ; Òåêñòîâîå ïîëå
 RegName = Èìÿ â ðååñòðå ; Èìÿ, êîòîðîå îòîáðàæàåòñÿ â ñïèñêå ïðîãðàìì ïîñëå óñòàíîâêè
 Version = 1.1.1 ; Òåêñòîâîå ïîëå ñ âåðñèåé
-Licence = Íàçâàíèå ëèöåíçèè ; Òåêñòîâîå ïîëå
+License = Íàçâàíèå ëèöåíçèè ; Òåêñòîâîå ïîëå
 Description = Îïèñàíèå ïðîãðàììû ; Òåêòñîâîå ïîëå
 Size = Ðàçìåð ïðîãðàììû ; Òåêñòîâîå ïîëå
 Category = 5 ; Öèôðîâîå ïîëå ñ êàòåãîðèåé
index 22ba9c6..e7ca270 100644 (file)
@@ -29,7 +29,7 @@ ShowAvailableAppInfo(INT Index)
     } \
 
     ADD_TEXT(IDS_AINFO_VERSION, Info->szVersion, CFE_BOLD, 0);
-    ADD_TEXT(IDS_AINFO_LICENCE, Info->szLicence, CFE_BOLD, 0);
+    ADD_TEXT(IDS_AINFO_LICENSE, Info->szLicense, CFE_BOLD, 0);
     ADD_TEXT(IDS_AINFO_SIZE, Info->szSize, CFE_BOLD, 0);
     ADD_TEXT(IDS_AINFO_URLSITE, Info->szUrlSite, CFE_BOLD, CFE_LINK);
     ADD_TEXT(IDS_AINFO_DESCRIPTION, Info->szDesc, CFE_BOLD, 0);
@@ -217,7 +217,7 @@ EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc)
 
         GET_STRING2(L"RegName", Info.szRegName);
         GET_STRING2(L"Version", Info.szVersion);
-        GET_STRING2(L"Licence", Info.szLicence);
+        GET_STRING2(L"License", Info.szLicense);
         GET_STRING2(L"Description", Info.szDesc);
         GET_STRING2(L"Size", Info.szSize);
         GET_STRING2(L"URLSite", Info.szUrlSite);
index 647756a..5eac70d 100644 (file)
@@ -151,7 +151,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nОписание: "
     IDS_AINFO_SIZE "\nРазмер: "
     IDS_AINFO_URLSITE "\nДомашна страница: "
-    IDS_AINFO_LICENCE "\nРазрешително: "
+    IDS_AINFO_LICENSE "\nРазрешително: "
 END
 
 STRINGTABLE
index 3f03736..168098b 100644 (file)
@@ -152,7 +152,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nPopis: "
     IDS_AINFO_SIZE "\nVelikost: "
     IDS_AINFO_URLSITE "\nDomovská stránka: "
-    IDS_AINFO_LICENCE "\nLicence: "
+    IDS_AINFO_LICENSE "\nLicense: "
 END
 
 STRINGTABLE
index f32a376..68c0f7a 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nBeschreibung: "
     IDS_AINFO_SIZE "\nGröße: "
     IDS_AINFO_URLSITE "\nHomepage: "
-    IDS_AINFO_LICENCE "\nLizenz: "
+    IDS_AINFO_LICENSE "\nLizenz: "
 END
 
 STRINGTABLE
index 3333836..53daebb 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescription: "
     IDS_AINFO_SIZE "\nSize: "
     IDS_AINFO_URLSITE "\nHome Page: "
-    IDS_AINFO_LICENCE "\nLicense: "
+    IDS_AINFO_LICENSE "\nLicense: "
 END
 
 STRINGTABLE
index 622fef7..9e685dc 100644 (file)
@@ -150,7 +150,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescripción: "
     IDS_AINFO_SIZE "\nTamaño: "
     IDS_AINFO_URLSITE "\nPágina Web: "
-    IDS_AINFO_LICENCE "\nLicencia: "
+    IDS_AINFO_LICENSE "\nLicencia: "
 END
 
 STRINGTABLE
index b576433..397e433 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescription: "
     IDS_AINFO_SIZE "\nTaille : "
     IDS_AINFO_URLSITE "\nSite internet : "
-    IDS_AINFO_LICENCE "\nLicence: "
+    IDS_AINFO_LICENSE "\nLicense: "
 END
 
 STRINGTABLE
index d53d833..d528b85 100644 (file)
@@ -149,7 +149,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nתיאור: "
     IDS_AINFO_SIZE "\nגודל: "
     IDS_AINFO_URLSITE "\nדף בית: "
-    IDS_AINFO_LICENCE "\nרישיון: "
+    IDS_AINFO_LICENSE "\nרישיון: "
 END
 
 STRINGTABLE
index 595b35e..6d00048 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescrizione: "
     IDS_AINFO_SIZE "\nDimensione: "
     IDS_AINFO_URLSITE "\nHome Page: "
-    IDS_AINFO_LICENCE "\nLicenza: "
+    IDS_AINFO_LICENSE "\nLicenza: "
 END
 
 STRINGTABLE
index a49e4b9..b63c620 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION   "\n概要: "
     IDS_AINFO_SIZE          "\nサイズ: "
     IDS_AINFO_URLSITE       "\nホームページ: "
-    IDS_AINFO_LICENCE       "\nライセンス: "
+    IDS_AINFO_LICENSE       "\nライセンス: "
 END
 
 STRINGTABLE
index f93acbe..25bd694 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nBeskrivelse: "
     IDS_AINFO_SIZE "\nStørrelse: "
     IDS_AINFO_URLSITE "\nHjemmeside: "
-    IDS_AINFO_LICENCE "\nLisens: "
+    IDS_AINFO_LICENSE "\nLisens: "
 END
 
 STRINGTABLE
index 7b1bca7..97d032e 100644 (file)
@@ -155,7 +155,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nOpis: "
     IDS_AINFO_SIZE "\nRozmiar: "
     IDS_AINFO_URLSITE "\nStrona: "
-    IDS_AINFO_LICENCE "\nLicencja: "
+    IDS_AINFO_LICENSE "\nLicencja: "
 END
 
 STRINGTABLE
index 1ff56b7..21f6d1f 100644 (file)
@@ -149,7 +149,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescrição: "
     IDS_AINFO_SIZE "\nTamanho: "
     IDS_AINFO_URLSITE "\nPágina: "
-    IDS_AINFO_LICENCE "\nLicença: "
+    IDS_AINFO_LICENSE "\nLicença: "
 END
 
 STRINGTABLE
index cec10d4..6632770 100644 (file)
@@ -153,7 +153,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nDescriere: "
     IDS_AINFO_SIZE "\nDimensiune: "
     IDS_AINFO_URLSITE "\nPagină web: "
-    IDS_AINFO_LICENCE "\nLicență: "
+    IDS_AINFO_LICENSE "\nLicență: "
 END
 
 STRINGTABLE
index afd0cb3..4275a76 100644 (file)
@@ -147,7 +147,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nОписание: "
     IDS_AINFO_SIZE "\nРазмер: "
     IDS_AINFO_URLSITE "\nДомашняя страница: "
-    IDS_AINFO_LICENCE "\nЛицензия: "
+    IDS_AINFO_LICENSE "\nЛицензия: "
 END
 
 STRINGTABLE
index cc6e16d..1ee9dc6 100644 (file)
@@ -152,7 +152,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nPopis: "
     IDS_AINFO_SIZE "\nVeľkosť: "
     IDS_AINFO_URLSITE "\nDomovská stránka: "
-    IDS_AINFO_LICENCE "\nLicencia: "
+    IDS_AINFO_LICENSE "\nLicencia: "
 END
 
 STRINGTABLE
index 9c0e6d7..814512e 100644 (file)
@@ -151,7 +151,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nPershkrimi: "
     IDS_AINFO_SIZE "\nMasa: "
     IDS_AINFO_URLSITE "\nHome Page: "
-    IDS_AINFO_LICENCE "\nLicenca: "
+    IDS_AINFO_LICENSE "\nLicenca: "
 END
 
 STRINGTABLE
index 34054ad..18e0c5e 100644 (file)
@@ -154,7 +154,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nBeskrivning: "
     IDS_AINFO_SIZE "\nStorlek: "
     IDS_AINFO_URLSITE "\nHemsida: "
-    IDS_AINFO_LICENCE "\nLicens: "
+    IDS_AINFO_LICENSE "\nLicens: "
 END
 
 STRINGTABLE
index b9f4051..01c8ce8 100644 (file)
@@ -149,7 +149,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nAçıklaması: "
     IDS_AINFO_SIZE "\nBüyüklüğü: "
     IDS_AINFO_URLSITE "\nAna Sayfası: "
-    IDS_AINFO_LICENCE "\nRuhsatı: "
+    IDS_AINFO_LICENSE "\nRuhsatı: "
 END
 
 STRINGTABLE
index b42b37d..8c88bcc 100644 (file)
@@ -155,7 +155,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\nОпис: "
     IDS_AINFO_SIZE "\nРозмір: "
     IDS_AINFO_URLSITE "\nДомашня сторінка: "
-    IDS_AINFO_LICENCE "\nЛіцензія: "
+    IDS_AINFO_LICENSE "\nЛіцензія: "
 END
 
 STRINGTABLE
index 87f514c..c62fdd2 100644 (file)
@@ -149,7 +149,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\n描述:"
     IDS_AINFO_SIZE "\n大小:"
     IDS_AINFO_URLSITE "\n主页:"
-    IDS_AINFO_LICENCE "\n协议:"
+    IDS_AINFO_LICENSE "\n协议:"
 END
 
 STRINGTABLE
index d2f16da..3649440 100644 (file)
@@ -149,7 +149,7 @@ BEGIN
     IDS_AINFO_DESCRIPTION "\n描述:"
     IDS_AINFO_SIZE "\n大小:"
     IDS_AINFO_URLSITE "\n主頁:"
-    IDS_AINFO_LICENCE "\n協議:"
+    IDS_AINFO_LICENSE "\n協議:"
 END
 
 STRINGTABLE
index 853d991..a710f2c 100644 (file)
@@ -73,7 +73,7 @@ typedef struct
     WCHAR szName[MAX_PATH];
     WCHAR szRegName[MAX_PATH];
     WCHAR szVersion[MAX_PATH];
-    WCHAR szLicence[MAX_PATH];
+    WCHAR szLicense[MAX_PATH];
     WCHAR szDesc[MAX_PATH];
     WCHAR szSize[MAX_PATH];
     WCHAR szUrlSite[MAX_PATH];
index 9c63048..8ee49b4 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = 7-Zip\r
 Version = 9.34a\r
-Licence = LGPL\r
+License = LGPL\r
 Description = A file archiving utility with support for 7zip, zip, tar, rar and many other archive formats.\r
 Size = 1.14 MB\r
 Category = 12\r
index c15f48b..434344b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = AbiWord\r
 Version = 2.9.4\r
-Licence = GPL\r
+License = GPL\r
 Description = Word processor.\r
 Size = 9.4 MB\r
 Category = 6\r
index a2d9635..6f94c32 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = AbiWord\r
 Version = 2.6.8\r
-Licence = GPL\r
+License = GPL\r
 Description = Word processor.\r
 Size = 5.64 MB\r
 Category = 6\r
index 6322dab..3e7b296 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Abyss Web server X1\r
 Version = 2.9.3.5\r
-Licence = Freeware\r
+License = Freeware\r
 Description = Abyss Web Server enables you to host your Web sites on your computer. It supports secure SSL/TLS connections (HTTPS) as well as a wide range of Web technologies. It can also run advanced PHP, Perl, Python, ASP, ASP.NET, and Ruby on Rails Web applications, which can be backed by databases such as MySQL, SQLite, MS SQL Server, MS Access, or Oracle.\r
 Size = 2.06 MB\r
 Category = 5\r
@@ -34,13 +34,13 @@ Może także uruchamiać zaawansowane aplikacje internetowe takie jak PHP, Perl,
 Mogą one zostać oparte o MySQL, SQLite, MS SQL Server, MS Access, lub Oracle.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Abyss Web Server vă permite găzduirea de pagini Web pe calculatorul dumneavoastră. Oferă conexiuni securizate SSL/TLS (HTTPS) și multe alte tehnologii Web. Poate executa aplicații Web avansate ]n PHP, Perl, Python, ASP, ASP.NET și Ruby on Rails, ce pot fi susținute de baze de date ca MySQL, SQLite, MS SQL Server, MS Access, sau Oracle.\r
 Size = 2,06 Mo\r
 \r
 [Section.041f]\r
 Name = Abyss Umûmî Ağ Sunucusu X1\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Abyss Umûmî Ağ Sunucusu, bilgisayarınızda Umûmî Ağ sitelerinizin barındırılmasına olanak sağlar. Umûmî Ağ uygulayım biliminin bir geniş yelpâzesiyle birlikte güvenli SSL/TLS bağlantılarını (HTTPS) destekler. Ayrıca MySQL, SQLite, MS SQL Server, MS Access, ve Oracle gibi veri tabanlarıyla desteklenebilen gelişmiş PHP, Perl, Python, ASP, ASP.NET ve Rails üzerinde Ruby Umûmî Ağ uygulamalarını çalıştırabilir.\r
 Size = 2,06 MB\r
 \r
index dd4b00e..6c96dcb 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = AC97 Driver for VirtualBox\r
 Version = 5.10.00.3610\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Unzip in the ReactOS's folder then restart ReactOS twice.\r
 Size = 185.5 kB\r
 Category = 13\r
@@ -13,12 +13,12 @@ CDPath = none
 \r
 [Section.0405]\r
 Name = Ovladač AC97 pro VirtualBox\r
-Licence = Neznámá\r
+License = Neznámá\r
 Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.\r
 \r
 [Section.0407]\r
 Name = AC97 Treiber für VirtualBox\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Entpacken in das "ReactOS"-Verzeichnis und ReactOS zweimal neustarten.\r
 \r
 [Section.0410]\r
@@ -28,53 +28,53 @@ Descrizione = Estrarre nella cartella "ReactOS" e poi riavviare ReactOs due volt
 \r
 [Section.040a]\r
 Name = Driver AC97 para VirtualBox\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Descomprimir en la carpeta "Reactos" y reiniciar Reactos dos veces.\r
 \r
 [Section.040c]\r
 Name = Pilote AC97 pour VirtualBox\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Décompresser dans le dossier "ReactOS" puis redémarrer ReactOS deux fois.\r
 Size = 185,5 ko\r
 \r
 [Section.0410]\r
 Name = Driver AC97 per VirtualBox\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Decomprimere nella cartella "ReactOS" e riavviare ReactOS.\r
 \r
 [Section.0413]\r
 Name = AC97 Driver voor VirtualBox\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Pak uit in de "ReactOS" map en start tweemaal opnieuw op.\r
 \r
 [Section.0415]\r
 Name = Sterownik AC97 dla VirtualBox\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj system.\r
 \r
 [Section.0418]\r
 Name = Modul pilot AC97 pentru VirtualBox\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Dezarhivați în dosarul ReactOS apoi reporniți ReactOS de două ori.\r
 Size = 185,5 ko\r
 \r
 [Section.0419]\r
 Name = Драйвер AC97 для VirtualBox\r
-Licence = Не указано\r
+License = Не указано\r
 Description = Pазархивируйте содержимое в папку "ReactOS", затем дважды перезагрузите систему.\r
 \r
 [Section.041f]\r
 Name = VirtualBox için AC97 Sürücüsü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = ReactOS'un dizinine çıkartınız, sonra bilgisayarı iki kez yeniden başlatınız.\r
 Size = 185,5 KB\r
 \r
 [Section.0422]\r
 Name = Драйвер AC97 для VirtualBox\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Pозархівуйте вміст в теку "ReactOS" після чого двічі перезавантажте систему.\r
 \r
 [Section.0813]\r
 Name = AC97 Driver voor VirtualBox\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Pak uit in de "ReactOS" map en start tweemaal opnieuw op.\r
index 5086efd..40900e0 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Audio Grabber\r
 Version = 1.83 SE\r
-Licence = Freeware\r
+License = Freeware\r
 Description = A very good CD Ripper/Audio File Converter.\r
 Size = 3.43 MB\r
 Category = 1\r
@@ -35,12 +35,12 @@ Description = Een goede CD Ripper/Audio-bestandsomzetter.
 Description = Bardzo dobry CD Ripper/konwerter plików audio.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Program de extragere conținuturi CD audio și de conversie a fișierelor de sunet.\r
 Size = 3,43 Mo\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Çok iyi bir CD ripleyicisi ve ses kütüğü dönüştürücüsü.\r
 Size = 3,43 MB\r
 \r
index 3cc4ae4..3c752f5 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = BitTorrent
 Version = 7.9.2
-Licence = Freeware for non-commercial uses
+License = Freeware for non-commercial uses
 Description = The Original BitTorrent Client.
 Size = 1.61 MB
 Category = 5
@@ -13,22 +13,22 @@ URLDownload = http://download-new.utorrent.com/endpoint/bittorrent/os/windows/tr
 CDPath = none
 
 [Section.0407]
-Licence = Freeware für nichtkommerzielle Nutzung
+License = Freeware für nichtkommerzielle Nutzung
 Description = Der Original BitTorrent Client.
 
 [Section.0410]
 Description = L'originale Client BitTorrent.
 
 [Section.0415]
-Licence = Freeware dla użytku niekomercyjnego
+License = Freeware dla użytku niekomercyjnego
 Description = Oryginalny klient BitTorrent.
 
 [Section.0418]
-Licence = Gratuită pentru uz necomercial
+License = Gratuită pentru uz necomercial
 Description = Originalul client BitTorrent.
 Size = 1,61 Mo
 
 [Section.041f]
-Licence = Tecimlik olmayan kullanımlar için ücretsiz.
+License = Tecimlik olmayan kullanımlar için ücretsiz.
 Description = Özgün BitTorrent istemcisi.
 Size = 1,61 MB
index 584b555..b99f621 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Bochs
 Version = 2.6.6
-Licence = LGPL v2
+License = LGPL v2
 Description = Bochs is a highly portable open source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms.
 Size = 4.7 MB
 Category = 15
@@ -27,6 +27,6 @@ Description = Bochs este un emulator PC (x86) cu surse deschise și portabilitat
 Size = 4,7 Mo
 
 [Section.041f]
-Licence = LGPL 2. sürüm
+License = LGPL 2. sürüm
 Description = Bochs; çok taşınabilir, C++ ile yazılmış, en yaygın platformlarda çalışan, açık kaynak bir IA-32 (x86) PC öykünücüsüdür.
 Size = 4,7 MB
index bc586da..22a2e1d 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Bos Wars
 Version = 2.6.1
-Licence = GPL
+License = GPL
 Description = Bos Wars is a futuristic real time strategy game. To start the game, install Microsoft Visual C++ 2008 runtime.
 Size = 62.3 MB
 Category = 4
index 6714895..b686f39 100644 (file)
@@ -3,7 +3,7 @@
 
 [Section]
 Name = Bound Around (Demo)
-Licence = Shareware
+License = Shareware
 Description = A game similar Frozen Fruits.
 Size = 1.95 MB
 Category = 4
@@ -19,12 +19,12 @@ Name = Bound Around (Versione di prova)
 Description = Un gioco simile a Frozen Fruits.
 
 [Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
 Description = Un joc similar jocului Frozen Fruits.
 Size = 1,95 Mo
 
 [Section.041f]
 Name = Bound Around (Göstermelik)
-Licence = Paylaşımlı
+License = Paylaşımlı
 Description = Frozen Fruits benzeri bir oyun.
 Size = 1,95 MB
index 575c2ba..3b75215 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Christmas Bound
 Version = 1.4
-Licence = Freeware
+License = Freeware
 Description = A game similar Frozen Fruits.
 Size = 892 kB
 Category = 4
@@ -19,11 +19,11 @@ Description = Ein Spiel, ähnlich zu Frozen Fruits.
 Description = Un gioco simile a Frozen Fuits.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Un joc similar jocului Frozen Fruits.
 Size = 892 ko
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Frozen Fruits benzeri bir oyun.
 Size = 892 KB
index 61b6446..faed55c 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Chromium B.S.U.
 Version = 0.9.13.2
-Licence = GPL
+License = GPL
 Description = Chromium B.S.U. is an arcade-style, top-scrolling space shooter.
 Size = 2.3 MB
 Category = 4
index 41eb34e..e58c8dc 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Click-N-Type Virtual Keyboard
 Version = 3.03
-Licence = Freeware
+License = Freeware
 Description = Freeware virtual keyboard application.
 Size = 1.3 MB
 Category = 12
@@ -16,19 +16,19 @@ CDPath = none
 Description = Kostenlose virtuelle Tastatur.
 
 [Section.0410]
-Licence = Gratuita
+License = Gratuita
 Description = Applicazione gratuita per la simulazione della tastiera.
 
 [Section.0415]
 Description = Wirtualna klawiatura ekranowa.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Aplicație gratuită pentru simularea unei tastaturi fizice.
 Size = 1,3 Mo
 
 [Section.041f]
 Name = Click-N-Type Farazî Düğme Takımı
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Ücretsiz farazî düğme takımı uygulaması.
 Size = 1,3 MB
index 653dd3b..1c47ddd 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Code::Blocks (without compiler)
 Version = 13.12
-Licence = GPLv3
+License = GPLv3
 Description = A open source, cross-platform, powerful IDE. It doesn't contain a compiler.
 Size = 29.2 MB
 Category = 7
@@ -25,6 +25,6 @@ Size = 29,2 Mo
 
 [Section.041f]
 Name = Code::Blocks (Derleyicisiz)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. Bir derleyici içermez.
 Size = 29,2 MB
index 63e8b56..3299020 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Code::Blocks TDM-GCC (version 4.7.1, 32 bit)
 Version = 13.12
-Licence = GPLv3
+License = GPLv3
 Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC (version 4.7.1, 32 bit) compiler.
 Size = 97.8 MB
 Category = 7
@@ -25,6 +25,6 @@ Size = 97,8 Mo
 
 [Section.041f]
 Name = Code::Blocks TDM-GCC (sürüm 4.7.1, 32 bitlik)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. TDM-GCC (sürüm 4.7.1, 32 bitlik) derleyicisini içerir.
 Size = 97,8 MB
index e7bf474..6f679ad 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Code::Blocks TDM-GCC (version 4.8.1, 32 bit)
 Version = 13.12
-Licence = GPLv3
+License = GPLv3
 Description = A open source, cross-platform, powerful IDE. It contains TDM-GCC (version 4.8.1, 32 bit) compiler.
 Size = 100 MB
 Category = 7
@@ -25,6 +25,6 @@ Size = 100 Mo
 
 [Section.041f]
 Name = Code::Blocks TDM-GCC (sürüm 4.8.1, 32 bitlik)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = Açık kaynak, çapraz platform, güçlü bir tümleşik geliştirme ortamı. TDM-GCC (sürüm 4.8.1, 32 bitlik) derleyicisini içerir.
 Size = 100 MB
index 21c32cb..53fb30b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual Basic 6.0 Common Controls\r
 Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = File needed by some applications. Contains: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 913.73 kB\r
 Category = 14\r
@@ -13,56 +13,56 @@ URLDownload = http://download.microsoft.com/download/3/a/5/3a5925ac-e779-4b1c-bb
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Datei wird von einigen Anwendungen benötigt. Beinhaltet: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 908.73 kB\r
 URLSite = http://www.microsoft.com/de-DE/download/details.aspx?id=10019\r
 URLDownload = http://download.microsoft.com/download/c/e/d/ced699fe-7a40-420b-bdd7-10b38caef4c6/VisualBasic6-KB896559-v1-DEU.exe\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = X es necesario para varias aplicaciones. Incluye: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 910.23 kB\r
 URLSite = http://www.microsoft.com/es-ES/download/details.aspx?id=10019\r
 URLDownload = http://download.microsoft.com/download/9/0/9/90935db7-89ec-4344-a9ea-e6913c03f060/VisualBasic6-KB896559-v1-ESN.exe\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Fichier nécessaire pour certaines applications. Contient: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 911,23 ko\r
 URLSite = http://www.microsoft.com/fr-FR/download/details.aspx?id=10019\r
 URLDownload = http://download.microsoft.com/download/4/0/f/40f775ea-b257-410c-8f78-f1f60afe0306/VisualBasic6-KB896559-v1-FRA.exe\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = File necessari per alcune applicazioni. Contiene: Comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 909.73 kB\r
 URLSite = http://www.microsoft.com/it-IT/download/details.aspx?id=10019\r
 URLDownload = http://download.microsoft.com/download/8/1/b/81b968b9-1d7d-4d0a-aa27-864f4a2e3c23/VisualBasic6-KB896559-v1-ITA.exe\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Gebruikt door bepaalde applicaties. Bevat: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Microsoft Visual Basic 6.0 Common Controls jest używany przez część aplikacji. Zawiera: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Modul logic necesar unor aplicații. Conține: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 913,73 ko\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual Basic 6.0 Ortak Denetimler\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Birtakım uygulamalar için gerekli kütük. Şunları içerir: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 Size = 913,73 KB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Файл потрібен декотрим програмам. включає: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Gebruikt door bepaalde applicaties. Bevat: comctl32.ocx, mscomctl.ocx, advpack.dll.\r
index 269f478..d921d56 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Orwell Dev-C++ TDM GCC x64
 Version = 5.8.0
-Licence = GPLv2
+License = GPLv2
 Description = A maintained version of Dev-C++. It contains 64 bit TDM-GCC compiler.
 Size = 44.7 MB
 Category = 7
@@ -23,6 +23,6 @@ Description = O versiune menținută a Dev-C++. Conține compilatorul TDM-GCC pe
 Size = 44,7 Mo
 
 [Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
 Description = Dev-C++'nın sürdürülen bir sürümü. 64 bitlik TDM-GCC derleyicisi içerir.
 Size = 44,7 MB
index ff7a2ae..6154c4e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Diablo II\r
 Version = 1.4\r
-Licence = Shareware\r
+License = Shareware\r
 Description = Diablo 2 Shareware. zeckensack's glide wrapper is required to run it.\r
 Size = 131.9 MB\r
 Category = 4\r
@@ -32,12 +32,12 @@ Description = Diablo 2 Shareware. Maakt gebruik van zeckensack's glide wrapper.
 Description = Diablo 2 Shareware. Do poprawnego działania wymagany jest zainstalowany zeckensacks glide wrapper.\r
 \r
 [Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
 Description = Diablo 2 Shareware. Pentru execuție este necesar (pachetul) zeckensack's glide wrapper.\r
 Size = 131,9 Mo\r
 \r
 [Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
 Description = Diablo 2 Paylaşımlı. Çalıştırmak için zeckensack'ın glide wrapper'ı gereklidir.\r
 Size = 131,9 MB\r
 \r
index 78bb280..9199186 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = DosBlaster\r
 Version = 2.5\r
-Licence = GPL\r
+License = GPL\r
 Description = DosBlaster is a shell extension which makes it possible to open any DOS executable in DOSBox via right click. This version contains DOSBox 0.70, but can be simply updated by installing a newer DOSBox into the DosBlaster folders.\r
 Size = 2.05 MB\r
 Category = 15\r
index f8ebb4a..29578b9 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = DOSBox\r
 Version = 0.74\r
-Licence = GPL\r
+License = GPL\r
 Description = DOSBox is a DOS emulator.\r
 Size = 1.38 MB\r
 Category = 15\r
index 0e1d4f7..577c126 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Double Commander
 Version = 0.5.11 Beta
-Licence = GPL
+License = GPL
 Description = Double Commander is an open source file manager with two panels side by side. You need 7-Zip or a similar Utility to extract it.
 Size = 8.0 MB
 Category = 12
index 567e824..01daa4e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = D+ Browser
 Version = 0.5b
-Licence = GPLv3
+License = GPLv3
 Description = DPlus is a graphical web browser with an emphasis on security, performance and portability. It is based on Dillo and it is forked from Dillo-Win32 project.
 Size = 1.36 MB
 Category = 5
@@ -22,6 +22,6 @@ Size = 1,36 Mo
 
 [Section.041f]
 Name = D+ Tarayıcı
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = DPlus; güvenlik, başarım ve taşınabilirlik üzerine bir vurguyla, çizgelik bir Umûmî Ağ tarayıcısıdır. Dillo tabanlıdır ve Dillo-Win32 tasarısından çatallanmıştır.
 Size = 1,36 MB
index 541aeeb..4a25b87 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = DVD Write Now
 Version = 1.5.12 sp2
-Licence = Freeware
+License = Freeware
 Description = A free direct CD/DVD recording software. Once installed, you can use your CD/DVD RW as USB Flash or removable hard drives. Along with this you can write to CD/DVD RW recorded with UDF filesystem. You can also read UDF disks created with other software (Microsoft DVD−ROMs, RW disks recorded with Ahead InCD). You need a ZIP decompression program to install it.
 Size = 1.2 MB
 Category = 12
@@ -23,7 +23,7 @@ Description = Un software di masterizzazione CD/DVD diretto e gratuito. Una volt
 Description = Darmowe oprogramowanie do nagrywania CD/DVD. Po zainstalowaniu, możesz używać płyty CD RW i DVD RW tak, jak dyski przenośne / pendrive. Możesz także zapisywać (i odczytywać dyski utworzone przez inne programy) dane do dysków RW zapisanych w systemie UDF. Wymaga programu archiwizującego do wypakowania i instalacji.  
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Un program de înscriere CD/DVD directă. Odată instalat, puteți utiliza CD/DVD ca memorie USB sau disc dur detașabil. Pe lângă aceasta, veți putea scrie pe CD/DVD inscripționate cu sistem de fișiere UDF. Se pot de asemenea citi discuri UDF create cu alte programe. (Microsoft DVD-ROM, discuri RW inscripționate cu Ahead InCD). Este necesar un program de decompresie ZIP pentru a-l instala.
 Size = 1,2 Mo
 
@@ -32,6 +32,6 @@ Description = DVD Write Now - бесплатная программа для п
 URLSite = http://dwn.alter.org.ua/ru/
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Ücretsiz bir doğrudan CD/DVD saklayıcı yazılımı. Kurulduktan sonra CD/DVD RW'lerinizi, USB Flash veyâ çıkarılabilir sâbit disk sürücüleri olarak kullanabilirsiniz. Bununla birlikte UDF kütük dizgesiyle saklanmış CD/DVD RW'lere yazabilirsiniz. Ayrıca Microsoft DVD−ROM'ları, Ahead InCD ile saklanmış RW diskleri gibi başka yazılımlarla oluşturulmuş UDF diskleri okuyabilirsiniz. Kurmak için bir ZIP çıkartma izlencesi gerekir.
 Size = 1,2 MB
index 8a6ab53..b90d918 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Microsoft Excel Viewer
 Version = 2007
-Licence = Unknown
+License = Unknown
 Description = Microsoft Excel Viewer
 Size = 74.14 MB
 Category = 6
@@ -13,53 +13,53 @@ URLDownload = http://download.microsoft.com/download/e/a/9/ea913c8b-51a7-41b7-86
 CDPath = none
 
 [Section.0407]
-Licence = Unbekannt
+License = Unbekannt
 Size = 51.15 MB
 URLDownload = http://download.microsoft.com/download/F/8/8/F88CB355-ECAA-4B74-87D6-C05C81D215BF/ExcelViewer.exe
 
 [Section.040a]
-Licence = Desconocida
+License = Desconocida
 Size = 51.11 MB
 URLDownload = http://download.microsoft.com/download/5/D/9/5D9E41A4-22CE-4497-BD7D-368883EF92F7/ExcelViewer.exe
 
 [Section.040c]
-Licence = Inconnue
+License = Inconnue
 Size = 51,13 Mo
 URLDownload = http://download.microsoft.com/download/0/0/E/00EE9DCF-7BCA-4414-837E-BC3AA23DCC8D/ExcelViewer.exe
 
 [Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
 Size = 51.1 MB
 URLDownload = http://download.microsoft.com/download/0/C/2/0C2ED9D9-6961-47F3-91E0-916E19F330E2/ExcelViewer.exe
 
 [Section.0413]
-Licence = Ongekend
+License = Ongekend
 Size = 50.97 MB
 URLDownload = http://download.microsoft.com/download/C/C/6/CC663715-AB58-4CDE-90F1-5A8CF7472500/ExcelViewer.exe
 
 [Section.0415]
-Licence = Nieznana
+License = Nieznana
 Size = 51.15 MB
 URLDownload = http://download.microsoft.com/download/5/B/A/5BAB0B5A-706D-444C-B90A-1D97DB4C43A8/ExcelViewer.exe
 
 [Section.0418]
-Licence = Necunoscută
+License = Necunoscută
 Size = 51,14 Mo
 URLDownload = http://download.microsoft.com/download/D/D/2/DD28D077-97F3-47C0-9389-0B987918888B/ExcelViewer.exe
 
 [Section.041f]
 Name = Microsoft Excel Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
 Description = Microsoft Excel Görüntüleyici
 Size = 51,1 MB
 URLDownload = http://download.microsoft.com/download/8/5/D/85DCDD24-8237-4334-866D-417F74F37C47/ExcelViewer.exe
 
 [Section.0422]
-Licence = Невідома
+License = Невідома
 Size = 51.15 MB
 URLDownload = http://download.microsoft.com/download/7/4/9/749A8D59-A2D5-4A64-99CF-5FF4DD7C5AC6/ExcelViewer.exe
 
 [Section.0813]
-Licence = Ongekend
+License = Ongekend
 Size = 50.97 MB
 URLDownload = http://download.microsoft.com/download/C/C/6/CC663715-AB58-4CDE-90F1-5A8CF7472500/ExcelViewer.exe
index c955ca3..5fdf1df 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Fox Audio Player\r
 Version = 0.10.2\r
-Licence = GPL\r
+License = GPL\r
 Description = Simple and lightweight audio player.\r
 Size = 1.9 MB\r
 Category = 1\r
index e3b2668..4c460ca 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Mozilla Fira Font
 Version = 3.1
-Licence = Unknown
+License = Unknown
 Description = Mozilla Fira Font Pack, Includes Mono and Sans fonts. Unzip in the ReactOS's folder.
 Size = 1.1 MB
 Category = 14
@@ -14,24 +14,24 @@ URLDownload = http://svn.reactos.org/packages/Fira.exe
 CDPath = none
 
 [Section.0407]
-Licence = Unbekannt
+License = Unbekannt
 Description = Mozilla Fira Font Pack, Beinhaltet Mono und Sans Schriften. Bitte in den "ReactOS" Ordner entpacken.
 
 [Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
 Description = Fira Font Pack di Mozilla, Include i font Mono e Sans. Estrare nella cartella "ReactOS".
 
 [Section.0415]
-Licence = Nieznana
+License = Nieznana
 Description = Pakiet czcionek Mozilla Fira Font, zawiera czcionki Mono i Sans. Wypakuj do folderu "ReactOS".
 
 [Section.0418]
-Licence = Nespecificată
+License = Nespecificată
 Description = Pachetul Mozilla Fira Font, include fonturile Mono și Sans. Dezarhivați în dosarul ReactOS.
 Size = 1,1 Mo
 
 [Section.041f]
 Name = Mozilla Fira Yazı Tipi
-Licence = Bilinmiyor
+License = Bilinmiyor
 Description = Mozilla Fira Yazı Tipi Paketi, Mono ve Sans yazı tiplerini kapsar. ReactOS'un dizinine çıkartınız.
 Size = 1,1 MB
index b28e7b7..254df5e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Mozilla Firefox 33
 Version = 33.0
-Licence = MPL/GPL/LGPL
+License = MPL/GPL/LGPL
 Description = The most popular and one of the best free Web Browsers out there.
 Size = 34.76 MB
 Category = 5
index d71050a..f9ca656 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mozilla Firefox 2.0\r
 Version = 2.0.0.20\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
 Description = The most popular and one of the best free Web Browsers out there.\r
 Size = 5.77 MB\r
 Category = 5\r
index 6d1e80c..d6ae2e0 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mozilla Firefox 3.0\r
 Version = 3.0.19\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
 Description = The most popular and one of the best free Web Browsers out there.\r
 Size = 7.16 MB\r
 Category = 5\r
index 4dc264b..05a6922 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mozilla Firefox 3.6\r
 Version = 3.6.28\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
 Description = The most popular and one of the best free Web Browsers out there.\r
 Size = 8.22 MB\r
 Category = 5\r
index b977806..402217d 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Foxit Reader
 Version = 6.2.3.815
-Licence = Freeware
+License = Freeware
 Description = The best PDF reader next to Adobe Reader itself.
 Size = 36.0 MB
 Category = 6
@@ -20,7 +20,7 @@ URLDownload = http://cdn01.foxitsoftware.com/pub/foxit/reader/desktop/win/6.x/6.
 
 [Section.041f]
 Version = 6.1.5.0624
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Adobe Okuyucu'nun kendisine yakın en iyi PDF okuyucusu.
 Size = 36,0 MB
 URLDownload = http://cdn01.foxitsoftware.com/pub/foxit/reader/desktop/win/6.x/6.1/L10N/FoxitReader615.0624_prom_L10N_Setup.exe
index e03b1da..0511efb 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = FreeBASIC\r
 Version = 1.00.0\r
-Licence = GPL/LGPL\r
+License = GPL/LGPL\r
 Description = Open Source BASIC Compiler. The BASIC syntax is compatible to QBASIC.\r
 Size = 9.0 MB\r
 Category = 7\r
index d2084a3..bc13ebc 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Ghostscript
 Version = 9.15
-Licence = AGPL
+License = AGPL
 Description = An open interpreter for the PostScript language and for PDF.
 Size = 12.65 MB
 Category = 6
index dd1b63b..3764c74 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = GSview
 Version = 5.0
-Licence = Aladdin Free Public Licence
+License = Aladdin Free Public License
 Description = A graphical interface for Ghostscript.
 Size = 1.94 MB
 Category = 6
@@ -16,11 +16,11 @@ CDPath = none
 Description = Ein grafisches Interface für Ghostscript.
 
 [Section.0418]
-Licence = Licență publică gratuită „Aladdin”
+License = Licență publică gratuită „Aladdin”
 Description = O interfață grafică pentru GhostScript.
 Size = 1,94 Mo
 
 [Section.041f]
-Licence = Aladdin Özgür Kamu Ruhsatı
+License = Aladdin Özgür Kamu Ruhsatı
 Description = Ghostscript için bir çizgelik arayüz.
 Size = 1,94 MB
index 4e81728..765bd7e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = GlidewrapZbag\r
 Version = 0.84c\r
-Licence = Freeware\r
+License = Freeware\r
 Description = glidewrapper needed to run Diablo 2 on ReactOS.\r
 Size = 249.02 kB\r
 Category = 3\r
@@ -32,12 +32,12 @@ Description = glidewrapper is nodig om Diablo2 te gebruiken op ReactOS.
 Description = glidewrapper jest potrzebny do uruchomienia Diablo2 w ReactOS-ie.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Glide wrapper, necesar pentru a executa Diablo 2 în ReactOS.\r
 Size = 249,02 ko\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = glidewrapper, ReactOS'ta Diablo 2'yi çalıştırmak için gereklidir.\r
 Size = 249,02 KB\r
 \r
index 5b54086..fa335c3 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Globulation2
 Version = 0.9.4.4
-Licence = GPL
+License = GPL
 Description = Globulation 2 is a real-time strategy game. The game minimizes gaming micromanagement by automatically assigning tasks to units.
 Size = 13.5 MB
 Category = 4 
index 9627e69..74c2210 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Hover!
 Version = 1.0
-Licence = MS EULA
+License = MS EULA
 Description = The classic Hover CTF game which was found on the Windows 95 CD.
 Size = 6.2 MB
 Category = 4
index eb203da..913688b 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = HxD
 Version = 1.7.7.0
-Licence = Freeware
+License = Freeware
 Description = A good hex editor. You need 7-Zip or a similar Utility to extract it.
 Size = 852 kB
 Category = 7
@@ -26,13 +26,13 @@ Description = Dobry edytor Hex. Do wypakowania pliku potrzebny jest program arch
 Description = Un buon editor hexadecimale. Necessita 7-Zip o un programma simile per estrarlo.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Un bun editor hexazecimal. E necesar un utilitar de dezarhivare de tip ZIP.
 Size = 859 ko
 URLDownload = http://mh-nexus.de/downloads/HxDSetupROM.zip
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = İyi bir onaltılık düzenleyici. Çıkartmak için 7-Zip ya da benzeri bir yazılım kullanmanız gerekir.
 Size = 853 KB
 URLDownload = http://mh-nexus.de/downloads/HxDSetupTR.zip
index 09a17d0..dace068 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = IndiFTPD
 Version = 1.0.9 Beta
-Licence = GPL
+License = GPL
 Description = IndiFTPD is a standalone FTP server that functions as a single executable. It is designed for situations when a user does not want to install/configure a server on the system (or does not have permission to do so) and wants to quickly get a server running.
 Size = 556 kB
 Category = 5
index 7166a7b..7e4512f 100644 (file)
@@ -1,7 +1,7 @@
 [Section]
 Name = Inkscape
 Version = 0.48.5
-Licence = GPL
+License = GPL
 Description = Inkscape is a vector graphics editor licensed under the GNU General Public License.
 Size = 32.9 MB
 Category = 3
index a8db263..fc6374b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = IrfanView\r
 Version = 4.38\r
-Licence = Freeware (for personal use)\r
+License = Freeware (for personal use)\r
 Description = Viewer for all kinds of graphics/audio files/video files.\r
 Size = 1.81 MB\r
 Category = 3\r
@@ -13,44 +13,44 @@ URLDownload = http://img.cs.montana.edu/windows/iview438_setup.exe
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
 Description = Anzeigeprogramm für alle Arten von Grafik-/Audio- oder Video-Dateien.\r
 \r
 [Section.040a]\r
-Licence = Gratuito (para uso personal)\r
+License = Gratuito (para uso personal)\r
 Description = Visor para toda clase de archivos de imagen,audio y video.\r
 \r
 [Section.040c]\r
-Licence = Gratuit (pour un usage personnel)\r
+License = Gratuit (pour un usage personnel)\r
 Description = Visionneur pour tous les types de fichiers graphiques/audio/vidéo.\r
 Size = 1,81 Mo\r
 \r
 [Section.0410]\r
-Licence = Gratuita (per uso personale)\r
+License = Gratuita (per uso personale)\r
 Description = Viewer per tutti i tipi di grafici / file audio / file video.\r
 \r
 [Section.0413]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
 Description = Weergave voor allerhande bestandstypes voor audio, video, grafiek.\r
 \r
 [Section.0415]\r
-Licence = Freeware (dla użytku domowego)\r
+License = Freeware (dla użytku domowego)\r
 Description = Przeglądarka dla bardzo wielu typów obrazów, plików audio oraz wideo.\r
 \r
 [Section.0418]\r
-Licence = Gratuită (pentru uz personal)\r
+License = Gratuită (pentru uz personal)\r
 Description = Lector pentru multiple formaturi de fișiere grafice/audio/video.\r
 Size = 1,81 Mo\r
 \r
 [Section.041f]\r
-Licence = Şahsî kullanım için ücretsiz.\r
+License = Şahsî kullanım için ücretsiz.\r
 Description = Çizgelerin, ses kütüklerinin, vidyo kütüklerinin tüm türleri için görüntüleyici.\r
 Size = 1,81 MB\r
 \r
 [Section.0422]\r
-Licence = Freeware (для домашнього використання)\r
+License = Freeware (для домашнього використання)\r
 Description = Переглядач для всіх видів графічних та аудіо/відео файлів.\r
 \r
 [Section.0813]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
 Description = Weergave voor allerhande bestandstypes voor audio, video, grafiek.\r
index 60b134e..e12b1ad 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = IrfanView Plugins\r
 Version = 4.38\r
-Licence = Freeware (for personal use)\r
+License = Freeware (for personal use)\r
 Description = Additional Plugins for supporting more file types.\r
 Size = 10.24 MB\r
 Category = 3\r
@@ -13,45 +13,45 @@ URLDownload = http://files.netmediaeurope.com/de-nmi/downloads/2014_download/irf
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
 Description = Zusätzlich Plugins zur Unterstützung von weiteren Dateitypen.\r
 \r
 [Section.040a]\r
-Licence = Gratuito (para uso personal)\r
+License = Gratuito (para uso personal)\r
 Description = Complementos adicionales para soportar más formatos.\r
 \r
 [Section.040c]\r
-Licence = Gratuit (pour un usage personnel)\r
+License = Gratuit (pour un usage personnel)\r
 Description = Modules additionnels pour supporter plus de types de fichiers.\r
 Size = 10,24 Mo\r
 \r
 [Section.0410]\r
-Licence = Gratuita (per uso personale)\r
+License = Gratuita (per uso personale)\r
 Description = Plugins addizionale per il supporto di molti tipi di file.\r
 \r
 [Section.0413]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
 Description = Toegevoegde plugins voor ondersteuning van extra bestandstypes.\r
 \r
 [Section.0415]\r
-Licence = Freeware (dla użytku domowego)\r
+License = Freeware (dla użytku domowego)\r
 Description = Wtyczki otwierające dodatkowe typy plików w Irfanview.\r
 \r
 [Section.0418]\r
-Licence = Gratuită (pentru uz personal)\r
+License = Gratuită (pentru uz personal)\r
 Description = Extensii adiționale pentru a spori numărul de formate de fișiere recunoscute.\r
 Size = 10,24 Mo\r
 \r
 [Section.041f]\r
 Name = IrfanView Eklentileri\r
-Licence = Şahsî kullanım için ücretsiz.\r
+License = Şahsî kullanım için ücretsiz.\r
 Description = Daha çok kütük türü desteklemek için eklentiler.\r
 Size = 10,24 MB\r
 \r
 [Section.0422]\r
-Licence = Freeware (для домашнього використання)\r
+License = Freeware (для домашнього використання)\r
 Description = Додаткові плагіни для підтримки більшої кількості файлових типів.\r
 \r
 [Section.0813]\r
-Licence = Freeware (voor persoonlijk gebruik)\r
+License = Freeware (voor persoonlijk gebruik)\r
 Description = Toegevoegde plugins voor ondersteuning van extra bestandstypes.\r
index 974dcc9..e2fc9e8 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = K Desktop Environment\r
 Version = 1.0.0\r
-Licence = GPL\r
+License = GPL\r
 Description = KDE for Windows.\r
 Size = 2.16 MB\r
 Category = 15\r
index 5ad84c2..fa316cd 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Kyodai Mahjongg
 Version = 21.42
-Licence = Shareware
+License = Shareware
 Description = One of the best Mahjongg Solitaire games out there.
 Size = 13.8 MB
 Category = 4
@@ -23,11 +23,11 @@ Description = Uno dei migliori giochi di Mahjongg Solitaire.
 Description = Jedna z najlepszych gier Mahjongg Solitaire.
 
 [Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
 Description = Unul dintre cele mai bune jocuri de pasiență Mahjongg.
 Size = 13,8 Mo
 
 [Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
 Description = Mahjong solitaire oyunları arasında en iyilerinden biri.
 Size = 13,8 MB
index 62ea89e..66257e1 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Lazarus
 Version = 1.2.6
-Licence = modified LGPL, GPL
+License = modified LGPL, GPL
 Description = A cross-platform integrated development environment (IDE) that lets you create visual (GUI) and non-visual Object Pascal programs, and uses the Free Pascal compiler to generate your executable.
 Size = 107 MB
 Category = 7
@@ -23,10 +23,10 @@ Description = Wielopratformowe zintegrowane środowisko programistyczne (IDE) kt
 Description = Un ambiente di sviluppo integrato (IDE) cross-platform che consente di creare interfacce grafiche (GUI) e programmi non visivi Object Pascal, e utilizza il compilatore Free Pascal per generare l'eseguibile.
 
 [Section.0418]
-Licence = GPL, LGPL modificată
+License = GPL, LGPL modificată
 Description = Un mediu integrat de dezvoltare (IDE) multi-platformă care vă permite crearea de programe Object Pascal, atât vizuale (GUI) cât și ne-vizuale, și utilizează compilatorul Free Pascal pentru a genera executabile.
 Size = 107 Mo
 
 [Section.041f]
-Licence = Değiştirilmiş LGPL, GPL
+License = Değiştirilmiş LGPL, GPL
 Description = Görmelik (GUI) ve görmelik olmayan Object Pascal izlenceleri oluşturmanızı sağlayan, çalıştırılabilir kütüğünüzü oluşturmak için Free Pascal derleyicisini kullanan bir çapraz platform bir tümleşik geliştirme ortamı (IDE).
index 07d017b..51c77f3 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = LBreakout2\r
 Version = 2.4.1\r
-Licence = GPL\r
+License = GPL\r
 Description = Breakout Clone using SDL libs.\r
 Size = 3.03 MB\r
 Category = 4\r
index 96dde00..c346123 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = LGeneral\r
 Version = 1.1\r
-Licence = GPL\r
+License = GPL\r
 Description = Panzer General Clone using SDL libs.\r
 Size = 1.92 MB\r
 Category = 4\r
index b81ac0f..12cef97 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = LibreCAD
 Version = 2.0.6
-Licence = GPLv2
+License = GPLv2
 Description = LibreCAD is a free and open source 2D-CAD application for Windows, Linux and OS X.
 Size = 28.7 MB
 Category = 3
@@ -16,6 +16,6 @@ CDPath = none
 Description = LibreCAD ist ein kostenloses und quelloffenes 2D-CAD Programm für Windows, Linux und OS X.
 
 [Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
 Description = LibreCAD; Windows, Linux ve OS X için özgür ve açık kaynak bir 2 boyutlu CAD uygulamasıdır.
 Size = 28,7 MB
index c3e32d9..67e1df7 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = LibreOffice\r
 Version = 4.3.4\r
-Licence = LGPL\r
+License = LGPL\r
 Description = A powerful and open source office suite. It has been forked from OpenOffice.\r
 Size = 215.23 MB\r
 Category = 6\r
index 59e540e..f4ba289 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = LibreOffice Help Pack
 Version = For LibreOffice 4.3.4
-Licence = GPLv3
+License = GPLv3
 Description = Offline help content of LibreOffice.
 Size = 5.06 MB
 Category = 6
@@ -22,7 +22,7 @@ URLDownload = http://download.documentfoundation.org/libreoffice/stable/4.3.4/wi
 [Section.041f]
 Name = LibreOffice Yardım Paketi
 Version = LibreOffice 4.3.4 için
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = LibreOffice'in çevrim dışı yardım içeriği.
 Size = 6,79 MB
 URLDownload = http://download.documentfoundation.org/libreoffice/stable/4.3.4/win/x86/LibreOffice_4.3.4_Win_x86_helppack_tr.msi
index 9812d03..48ae2c4 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = LMarbles\r
 Version = 1.0.6\r
-Licence = GPL\r
+License = GPL\r
 Description = Atomix Clone using SDL libs.\r
 Size = 1.39 MB\r
 Category = 4\r
index f244ccb..52b1e00 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Midnight Commander for Windows
 Version = Build 185 (4.8.12)
-Licence = GPLv3
+License = GPLv3
 Description = 32-bit Windows port of GNU Midnight Commander.
 Size = 2.35 MB
 Category = 12
@@ -15,12 +15,12 @@ CDPath = none
 [Section.0410]
 Name = Midnight Commander per Windows
 Version = Revisione 185 (4.8.12)
-Licence = GPL versione 3
+License = GPL versione 3
 Description = Un porting Windows 32bit di Midnight Commander.
 
 [Section.0415]
 Name = Midnight Commander dla Windows
-Licence = GPL wersja 3
+License = GPL wersja 3
 Description = 32-bitowy port GNU Midnight Commander dla Windows.
 
 [Section.0418]
@@ -32,6 +32,6 @@ Size = 2,35 Mo
 [Section.041f]
 Name = Midnight Commander (Windows için)
 Version = Yapı 185 (4.8.12)
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = GNU Midnight Commander'ın 32 bitlik Windows uyarlamasıdır.
 Size = 2,35 MB
index 84e8022..295069c 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = OLE Viewer and Microsoft Foundation Classes version 4\r
 Version = 4.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = MFC 4 is needed by some applications. Contains: mfc40.dll, msvcrt40.dll.\r
 Size = 865.04 kB\r
 Category = 14\r
@@ -14,49 +14,49 @@ CDPath = none
 \r
 [Section.0407]\r
 Name = OLE Anzeige und Microsoft Foundation Classes Version 4\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = MFC 4 wird von einigen Anwendungen benötigt. Beinhaltet: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.040a]\r
 Name = Visor OLE y Microsoft Foundation Classes Version 4\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = MFC 4 es necesario para varias aplicaciones. Incluye: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.040c]\r
 Name = Visionneur OLE et Microsoft Foundation Classes version 4\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = MFC 4 est nécessaire pour certaines applications. Contient: mfc40.dll, msvcrt40.dll.\r
 Size = 865,04 ko\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = MFC 4 è necessario per alcune applicazioni. Contiene: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = MFC 4 is nodig voor bepaalde applicaties. Bevat: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.0415]\r
 Name = Przeglądarka OLE oraz MFC (Microsoft Foundation Classes) wersja 4\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteka MFC 4 jest używana przez część aplikacji. Zawiera: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = MFC 4 este necesară unor aplicații. Conține: mfc40.dll, msvcrt40.dll.\r
 Size = 865,04 ko\r
 \r
 [Section.041f]\r
 Name = OLE Görüntüleyicisi ve Microsoft Ana Sınıfları (MFC) Sürüm 4\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = MFC 4, birtakım uygulamalar için gereklidir. Şunları içerir: mfc40.dll, msvcrt40.dll.\r
 Size = 865,04 KB\r
 \r
 [Section.0422]\r
 Name = Переглядач OLE та MFC (Microsoft Foundation Classes) версія 4\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотека MFC 4 необхідна декотрим програмам. включає: mfc40.dll, msvcrt40.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = MFC 4 is nodig voor bepaalde applicaties. Bevat: mfc40.dll, msvcrt40.dll.\r
index fed0de2..61fbc81 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = MikTEX 2.9
 Version = 2.9.5105
-Licence = Freeware
+License = Freeware
 Description = MiKTeX is an up-to-date implementation of TeX/LaTeX and related programs for Windows.
 Size = 163.18 MB
 Category = 6
@@ -16,11 +16,11 @@ CDPath = none
 Description = MiKTeX ist eine aktuelle Implementierung von TeX/LaTeX und zugehöriger Programme für Windows.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = MikTEX este o implementare actualizată de TeX/LaTeX și aprogramelor aferente.
 Size = 163,18 Mo
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = MiKTeX, Windows için, TeX'in, LaTeX'in ve ilişkili izlencelerin bir şimdiki uygulaması.
 Size = 163,18 MB
index 86ea0a9..32d3c75 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Miranda IM\r
 Version = 0.10.24\r
-Licence = GPL\r
+License = GPL\r
 Description = Open source multiprotocol instant messaging application - May not work completely.\r
 Size = 3.77 MB\r
 Category = 5\r
index 4a36a8e..05d8d34 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = mIRC 7\r
 Version = 7.36\r
-Licence = Shareware\r
+License = Shareware\r
 Description = The most popular client for the Internet Relay Chat (IRC).\r
 Size = 2.17 MB\r
 Category = 5\r
@@ -32,12 +32,12 @@ Description = De meest populaire afnemer voor Internet Relay Chat (IRC).
 Description = Najpopularniejszy klient IRC (Internet Relay Chat).\r
 \r
 [Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
 Description = Cel mai popular client de IRC (Internet Relay Chat).\r
 Size = 2,17 Mo\r
 \r
 [Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
 Description = Umûmî Ağ Eş Zamanlı Söyleşi (IRC) için en çok tutulan istemci.\r
 Size = 2,17 MB\r
 \r
index 7032757..bf1528b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = mIRC 6\r
 Version = 6.35\r
-Licence = Shareware\r
+License = Shareware\r
 Description = The most popular client for the Internet Relay Chat (IRC).\r
 Size = 1.67 MB\r
 Category = 5\r
@@ -32,12 +32,12 @@ Description = De meest populaire afnemer voor Internet Relay Chat (IRC).
 Description = Najpopularniejszy klient IRC (Internet Relay Chat).\r
 \r
 [Section.0418]\r
-Licence = Versiune de evaluare\r
+License = Versiune de evaluare\r
 Description = Cel mai popular client de IRC (Internet Relay Chat).\r
 Size = 1,67 Mo\r
 \r
 [Section.041f]\r
-Licence = Paylaşımlı\r
+License = Paylaşımlı\r
 Description = Umûmî Ağ Eş Zamanlı Söyleşi (IRC) için en çok tutulan istemci.\r
 Size = 1,67 MB\r
 \r
index 27b8ab8..8113e19 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mono .NET Development Framework\r
 Version = 3.2.3\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Open-source .NET Framework.\r
 Size = 98.49 MB\r
 Category = 14\r
@@ -29,13 +29,13 @@ Description = Versione Open-source di .NET Framework.
 Description = Pakiet Mono .NET Framework dla Programistów.\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Platformă .NET (cu surse deschise).\r
 Size = 98,49 Mo\r
 \r
 [Section.041f]\r
 Name = Mono .NET Geliştirme Çatısı\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Açık kaynak .NET Çatısı.\r
 Size = 98,49 MB\r
 \r
index 427ecbb..7165e9a 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Media Player Classic Home Cinema\r
 Version = 1.7.7\r
-Licence = GPL\r
+License = GPL\r
 Description = A media player.\r
 Size = 10.7 MB\r
 Category = 2\r
index 00f9e56..e155a03 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Mpxplay
 Version = 1.60b
-Licence = GPL
+License = GPL
 Description = Mpxplay is a 32-bit console audio player for Windows. You need 7-Zip or a similar Utility to extract it.
 Size = 520 kB
 Category = 1
index 70c46fa..edb8fe8 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft XML 3\r
 Version = 3.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = MSXML3 is needed for some MSI Installers. Contains: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 Size = 1.85 MB\r
 Category = 14\r
@@ -13,44 +13,44 @@ URLDownload = ftp://ftp.uni-rostock.de/pub/tools/microsoft/XML/US/msxml3.msi
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = MSXML3 wird von einigen MSI Installern benötigt. Beinhaltet: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = MSXML3 para varios instaladores MSI. Incluye: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = MSXML3 est nécessaire pour certains installateurs MSI. Contient: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 Size = 1,85 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuto\r
+License = Sconosciuto\r
 Description = MSXML3 è necessario per alcuni installatori MSI. Contiene: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = MSXML3 is nodig voor bepaalde MSI installaties. Bevat: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Niektóre spośród plików instalacyjnych MSI potrzebują parsera MSXML3. Zawiera: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = MSXML3 este necesar unor Instalatori MSI. Conține: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 Size = 1,85 Mo\r
 \r
 [Section.041f]\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = MSXML3, birtakım Microsoft Yükleyicileri için gereklidir. Şunları içerir: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 Size = 1,85 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = MSXML3 необхідна для декотрих MSI інсталяторів. включає: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = MSXML3 is nodig voor bepaalde MSI installaties. Bevat: msxml3.dll, msxml3a.dll, msxml3r.dll.\r
index 6a2cf8f..6f022f0 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft .NET Framework Version 1.1 Redistributable Package\r
 Version = 1.1\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft .NET Framework Version 1.1 - Redistributable Package.\r
 Size = 23.14 MB\r
 Category = 14\r
@@ -43,13 +43,13 @@ URLSite = http://www.microsoft.com/pl-PL/download/details.aspx?id=26
 URLDownload = http://download.microsoft.com/download/c/9/f/c9f672f3-c14b-4cff-9671-d419842d792d/dotnetfx.exe\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Platforma Microsoft .NET versiunea 1.1 - Pachet redistributabil.\r
 Size = 23,14 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft .NET Çatısı Sürüm 1.1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft .NET Çatısı Sürüm 1.1 - Yeniden Dağıtılabilir Paket\r
 Size = 23,14 MB\r
 URLSite = http://www.microsoft.com/tr-TR/download/details.aspx?id=26\r
index 91e2e77..818b079 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft .NET Framework Version 2.0 Redistributable Package\r
 Version = 2.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft .NET Framework Version 2.0 - Redistributable Package.\r
 Size = 22.42 MB\r
 Category = 14\r
@@ -30,12 +30,12 @@ Size = 22.42 MB
 Description = Microsoft .NET Framework Wersja 2.0 - Pakiet Dystrybucyjny.\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Platforma Microsoft .NET versiunea 2.0 - Pachet redistributabl.\r
 Size = 22,42 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft .NET Çatısı Sürüm 2.0 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft .NET Çatısı Sürüm 2.0 - Yeniden Dağıtılabilir Paket\r
 Size = 22,42 MB\r
index f11e5a4..9db96a2 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft .NET Framework Version 2.0 Service Pack 2\r
 Version = 2.0SP2\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft .NET Framework Version 2.0 Service Pack 2.\r
 Size = 23.84 MB\r
 Category = 14\r
@@ -35,13 +35,13 @@ Description = Microsoft .NET Framework Wersja 2.0 Service Pack 2.
 URLSite = http://www.microsoft.com/pl-PL/download/details.aspx?id=1639\r
 \r
 [Section.0418]\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Platforma Microsoft .NET versiunea 2.0 - Service Pack 2.\r
 Size = 23,84 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft .NET Çatısı Sürüm 2.0 Hizmet Paketi 2\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft .NET Çatısı Sürüm 2.0 - Hizmet Paketi 2\r
 Size = 23,84 MB\r
 URLSite = http://www.microsoft.com/tr-TR/download/details.aspx?id=1639\r
index 53a6511..59e3f30 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = NirLauncher
 Version = 1.19.5
-Licence = Freeware
+License = Freeware
 Description = A package of more than 180 utilities for Windows.
 Size = 20.2 MB
 Category = 12
@@ -16,5 +16,5 @@ CDPath = none
 Description = Ein Paket von mehr als 180 Utilities für Windows.
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Windows için 180 araçtan daha çoğunun bir paketi.
index f6262a7..31a7012 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Notepad++
 Version = 6.6.9
-Licence = GPL
+License = GPL
 Description = A text editor.
 Size = 7.58 MB
 Category = 6
index 5154ff7..ca4acda 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Off By One Browser\r
 Version = 3.5d\r
-Licence = Freeware\r
+License = Freeware\r
 Description = The Off By One Browser is a very small and fast web browser with full HTML 3.2 support.\r
 Size = 1010.89 kB\r
 Category = 5\r
@@ -35,13 +35,13 @@ Description = Off By One Browser is een uiterst kleine en snelle web browser met
 Description = Bardzo mała i szybka przeglądarka internetowa z pełną obsługą HTML 3.2.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Un navigator web foarte mic și rapid compatibil cu HTML 3.2.\r
 Size = 1010,89 ko\r
 \r
 [Section.041f]\r
 Name = Off By One Tarayıcı\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Off By One Tarayıcı, eksiksiz HTML 3.2 desteğiyle çok küçük ve hızlı bir Umûmî Ağ tarayıcısıdır.\r
 Size = 1010,89 KB\r
 \r
index 75b6437..5eb9685 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = OpenOffice 4.1\r
 Version = 4.1.1\r
-Licence = LGPL\r
+License = LGPL\r
 Description = The open source office suite.\r
 Size = 140.9 MB\r
 Category = 6\r
index a84fd1a..0ce0f34 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = OpenOffice 2.4\r
 Version = 2.4.3\r
-Licence = LGPL\r
+License = LGPL\r
 Description = The open source office suite.\r
 Size = 113 MB\r
 Category = 6\r
index 69b5408..01e8f0b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = OpenTTD\r
 Version = 1.4.4\r
-Licence = GPL v2\r
+License = GPL v2\r
 Description = Open Source clone of the "Transport Tycoon Deluxe" game engine. You need a copy of Transport Tycoon.\r
 Size = 7.0 MB\r
 Category = 4\r
@@ -36,7 +36,7 @@ Description = Clona (cu surse deschise a) motorului de joc "Transport Tycoon Del
 Size = 7,0 Mo\r
 \r
 [Section.041f]\r
-Licence = GPL 2. sürüm\r
+License = GPL 2. sürüm\r
 Description = "Transport Tycoon Deluxe" oyun motorunun açık kaynak taklidi. Transport Tycoon'un bir kopyası gerekir.\r
 Size = 7,0 MB\r
 \r
index f27bf72..6780673 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Opera\r
 Version = 12.17\r
-Licence = Freeware\r
+License = Freeware\r
 Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.\r
 Size = 12.57 MB\r
 Category = 5\r
@@ -35,7 +35,7 @@ Description = De populaire Opera Browser met vele gevorderde mogelijkheden, incl
 Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkcjami, zawierająca klientów: poczty oraz BitTorrent.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent.\r
 Size = 12,57 Mo\r
 \r
@@ -43,7 +43,7 @@ Size = 12,57 Mo
 Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent.\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Bir posta ve BitTorrent istemcisini kapsayan birçok gelişmiş husûsiyetle, tutulan Opera Tarayıcı.\r
 Size = 12,57 MB\r
 \r
index 74e8511..00c9c92 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Opera\r
 Version = 9.64\r
-Licence = Freeware\r
+License = Freeware\r
 Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.\r
 Size = 7.21 MB\r
 Category = 5\r
@@ -35,7 +35,7 @@ Description = De populaire Opera Browser met vele gevorderde mogelijkheden, incl
 Description = Popularna przeglądarka internetowa z wieloma zaawansowanymi funkcjami, zawierająca klientów: poczty oraz BitTorrent.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Navigatorul popular Opera cu multe funcționalități avansate incluzând poștă electronică și un client de BitTorrent.\r
 Size = 7,21 Mo\r
 \r
@@ -43,7 +43,7 @@ Size = 7,21 Mo
 Description = Популярный браузер со многими дополнительными возможностями, включающий клиентов почты и BitTorrent.\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Bir posta ve BitTorrent istemcisini kapsayan birçok gelişmiş husûsiyetle, tutulan Opera Tarayıcı.\r
 Size = 7,21 MB\r
 \r
index fcfe24b..87be842 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = PeaZip
 Version = 5.5.0
-Licence = LGPL v3, OpenCandy EULA
+License = LGPL v3, OpenCandy EULA
 Description = PeaZip is a free, cross-platform, open source file and archive manager. It supports over 150 archive formats.
 Size = 5.9 MB
 Category = 12
@@ -26,6 +26,6 @@ Description = PeaZip este un gestionar de fișiere și arhive gratuit, multi-pla
 Size = 5,9 Mo
 
 [Section.041f]
-Licence = LGPL 3. sürüm, OpenCandy EULA
+License = LGPL 3. sürüm, OpenCandy EULA
 Description = PeaZip; ücretsiz, çapraz platform, açık kaynak kütük ve belgelik yöneticisidir. 150'den çok belgelikleme biçimini destekler.
 Size = 5,9 MB
index ac058a0..17b2447 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Pengupop
 Version = 2.2.3
-Licence = GPL
+License = GPL
 Description = The purpose of this game is to shoot colored orbs into your playfield, so they form groups of three or more.
 Size = 384 kB
 Category = 4 
index 2d5a348..2976ff6 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = PhotoFiltre 7
 Version = 7.1.2
-Licence = Freeware
+License = Freeware
 Description = This version with layers but more limited than the Studio X version. PhotoFiltre Studio is a complete image retouching program.
 Size = 4.99 MB
 Category = 3
@@ -23,11 +23,11 @@ Description = Ta wersja obsługuje warstwy, ale ma większe ograniczenia od Stud
 Description = Questa versione con pannelli ma più limitata della versione Studio X. PhotoFiltre Studio è un programma di fotoritocco completo.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = PhotoFiltre Studio este o aplicație completă de retușare a imaginilor.
 Size = 4,99 Mo
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Bu sürüm, katmanlarla gelmektedir ancak Studio X sürümünden daha kısıtlıdır. PhotoFiltre Studio eksiksiz bir resim düzeltme yazılımıdır.
 Size = 4,99 MB
index 661ced3..cb1d4cf 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Pingus
 Version = 0.7.6
-Licence = GPL
+License = GPL
 Description = Pingus is a free Lemmings-like puzzle game.
 Size = 16.0 MB
 Category = 4
index 378207f..34fa7f2 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Microsoft Powerpoint Viewer
 Version = 2010
-Licence = Unknown
+License = Unknown
 Description = Microsoft Powerpoint Viewer
 Size = 60.28 MB
 Category = 6
@@ -13,55 +13,55 @@ URLDownload = http://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3
 CDPath = none
 
 [Section.0407]
-Licence = Unbekannt
+License = Unbekannt
 Size = 60.43 MB
 URLDownload = http://download.microsoft.com/download/9/F/7/9F742C8F-8C70-4498-B4D1-539BE36A1077/PowerPointViewer.exe
 
 [Section.040a]
-Licence = Desconocida
+License = Desconocida
 Size = 60.48 MB
 URLDownload = http://download.microsoft.com/download/C/1/A/C1AAD042-4407-4470-97CB-863B869F9EDF/PowerPointViewer.exe
 
 [Section.040c]
-Licence = Inconnue
+License = Inconnue
 Size = 60,41 Mo
 URLDownload = http://download.microsoft.com/download/6/B/4/6B4CA627-C0CD-4B27-BE31-0B87AE10F46B/PowerPointViewer.exe
 
 [Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
 Size = 60.38 MB
 URLDownload = http://download.microsoft.com/download/3/F/A/3FA9171A-B310-4F0D-A33A-B16827536FAE/PowerPointViewer.exe
 
 [Section.0413]
-Licence = Ongekend
+License = Ongekend
 Size = 60.33 MB
 URLDownload = http://download.microsoft.com/download/9/A/8/9A89B545-E4F4-498C-B265-D74CBB89F4D9/PowerPointViewer.exe
 
 [Section.0415]
-Licence = Nieznana
+License = Nieznana
 Size = 60.43 MB
 URLDownload = http://download.microsoft.com/download/9/E/4/9E4A5F9A-210D-44B7-ADA2-F47CE00541ED/PowerPointViewer.exe
 
 [Section.0418]
 Name = Lector Microsoft Powerpoint
-Licence = Necunoscută
+License = Necunoscută
 Description = Lector Microsoft Powerpoint
 Size = 60,4 Mo
 URLDownload = http://download.microsoft.com/download/5/6/E/56E4DBA3-D725-43EA-B1E5-DC148022999C/PowerPointViewer.exe
 
 [Section.041f]
 Name = Microsoft Powerpoint Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
 Description = Microsoft Powerpoint Görüntüleyici
 Size = 60,4 MB
 URLDownload = http://download.microsoft.com/download/4/6/4/4641DACB-5DE8-4E3A-B8F4-39A1C73889D3/PowerPointViewer.exe
 
 [Section.0422]
-Licence = Невідома
+License = Невідома
 Size = 60.52 MB
 URLDownload = http://download.microsoft.com/download/C/E/8/CE879E6E-D3F3-4234-A968-9651A3A85D98/PowerPointViewer.exe
 
 [Section.0813]
-Licence = Ongekend
+License = Ongekend
 Size = 60.33 MB
 URLDownload = http://download.microsoft.com/download/9/A/8/9A89B545-E4F4-498C-B265-D74CBB89F4D9/PowerPointViewer.exe
index 8246ba5..fbfad92 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Precise Calculator
 Version = 2.5
-Licence = GPLv3
+License = GPLv3
 Description = Precise Calculator is a free and open source scientific calculator for Windows. You need a ZIP decompression program to install it.
 Size = 151 kB
 Category = 11
@@ -13,6 +13,6 @@ URLDownload = http://download.sourceforge.net/preccalc/preccalc-32bit.zip
 CDPath = none
 
 [Section.041f]
-Licence = GPL 3. sürüm
+License = GPL 3. sürüm
 Description = Precise Hesap Makinesi, Windows için özgür ve açık kaynak bir bilimlik hesap makinesidir. Kurmak için bir ZIP çıkartma izlencesi gerekir.
 Size = 151 KB
index 8fe91ec..18f8af9 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = PSPad
 Version = 4.5.8
-Licence = Freeware
+License = Freeware
 Description = A text editor.
 Size = 4.46 MB
 Category = 6
@@ -37,7 +37,7 @@ Description = Een teksteditor.
 Description = Edytor tekstu.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Un editor de text.
 Size = 4,46 Mo
 
@@ -50,7 +50,7 @@ Description = Textový editor.
 URLSite = http://www.pspad.com/sk/
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Bir metin düzenleyicisi.
 Size = 4,46 MB
 
index 271b699..52db7c6 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Pocket Tanks
 Version = 1.6
-Licence = Shareware
+License = Shareware
 Description = The fastest game of artillery you'll ever play.
 Size = 2.86 MB
 Category = 4
@@ -23,11 +23,11 @@ Description = Il gioco d'artiglieria più veloce a cui potrai giocare.
 Description = Szybka gra artyleryjska 
 
 [Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
 Description = Cel mai rapid joc de artilerie pe care-l veți juca vreodată.
 Size = 2,86 Mo
 
 [Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
 Description = Şimdiye dek oynayacağınız en hızlı topçuluk oyunu.
 Size = 2,86 MB
index 84c5676..3c87fd9 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = PuTTY\r
 Version = 0.63\r
-Licence = MIT\r
+License = MIT\r
 Description = A free SSH, Telnet, rlogin, and raw TCP client.\r
 Size = 1.78 MB\r
 Category = 5\r
index 995c880..1e4bfcc 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Python 3
 Version = 3.4.2
-Licence = GPL/LGPL
+License = GPL/LGPL
 Description = A remarkably powerful dynamic programming language.
 Size = 23.39 MB
 Category = 7
index 4bbbcc6..b30b776 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Python 2\r
 Version = 2.7.8\r
-Licence = GPL/LGPL\r
+License = GPL/LGPL\r
 Description = A remarkably powerful dynamic programming language.\r
 Size = 15.93 MB\r
 Category = 7\r
index ae33496..98dee7a 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = QB64 (SDL version)
 Version = 0.980
-Licence = Freeware
+License = Freeware
 Description = QB64 is a self-hosting BASIC compiler for Microsoft Windows, Linux and Mac OS X, designed to be compatible with Microsoft QBasic and Microsoft QuickBASIC. You need 7-Zip or a similar utility to extract it.
 Size = 39.0 MB
 Category = 7
@@ -23,12 +23,12 @@ Description = QB64 è un compilatore auto ospitante per Microsoft Windows, Linux
 Description = QB64 to kompilator BASIC zdolny do kompilacji własnego kodu źródłowego. Działa w systemach Windows, Linux i Mac OS X. Jest kompatybilny z Microsoft QBasic i QuickBASIC. Wymaga programu archiwizującego do wypakowania.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = QB64 este un compilator BASIC auto-compilabil pentru Windows, Linux și Mac OS X, conceput pentru a fi compatibil cu Microsoft QBasic și Microsoft QuickBASIC. Este necesar un utilitar de derarhivare de tip ZIP.
 Size = 39,0 Mo
 
 [Section.041f]
 Name = QB64 (SDL sürümü)
-Licence = Ücretsiz
+License = Ücretsiz
 Description = QB64; Microsoft Windows, Linux ve Mac OS X için, Microsoft QBasic ve Microsoft QuickBASIC ile uyumlu olacak biçimde tasarlanmış, kendi kendini derleyen bir BASIC derleyicisidir. Çıkartmak için 7-Zip ya da benzeri bir yazılım kullanmanız gerekir.
 Size = 39,0 MB
index be58282..a1e7de3 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Qmmp (Qt-based Multimedia Player)
 Version = 0.8.2
-Licence = GPL
+License = GPL
 Description = Qmmp is an audio-player, written with the help of the Qt library. The user interface is similar to WinAMP or XMMS. Alternative user interfaces also are available.
 Size = 12.66 MB
 Category = 1
index 8d5aad1..920ad4f 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = ReMooD\r
 Version = 0.8a\r
-Licence = GPL\r
+License = GPL\r
 Description = ReMooD is a source port of Doom Legacy. It aims to provide the classic Legacy experience with new features and more stability.\r
 Size = 1.15 MB\r
 Category = 4\r
index c461c41..17462bb 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Resource Hacker
 Version = 3.6.0
-Licence = Freeware
+License = Freeware
 Description = Resource Hacker is a freeware utility to view, modify, rename, add, delete and extract resources in 32bit & 64bit Windows executables and resource files (*.res).
 Size = 730 kB
 Category = 7
@@ -23,11 +23,11 @@ Description = Resource Hacker, è uno strumento freewere per vedere, modificare,
 Description = Resource Hacker to darmowe narzędzie do podglądu, modyfikacji, zmiany nazw, dodawania, kasowania i wypakowywania zasobów w plikach wykonywalnych 32bit i 64bit, oraz w plikach zasobów (*.res).
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Resource Hacker este un utilitar gratuit pentru inspectarea, modificarea, redenumirea, adăugarea, ștergerea și extragerea resurselor din fișierele resursă (*.res) și fișierele executabile pe 32 și 64 de biți pentru Windows.
 Size = 730 ko
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Resoure Hacker, 32 ve 64 bitlik Windows çaılştırılabilirlerindeki ve kaynak kütüklerindeki (*.res) kaynakları görüntülemek, değiştirmek, yeniden adlandırmak, eklemek, silmek ve çıkartmak için ücretsiz bir araçtır.
 Size = 730 KB
index e2f0927..ab52561 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Rocks'n'Diamonds
 Version = 3.3.1.2
-Licence = GPL v2
+License = GPL v2
 Description = Arcade style game for UNIX, Mac OS X, Windows and DOS in the tradition of: "Boulder Dash" (C64), "Emerald Mine" (Amiga), "Supaplex" (Amiga/PC), "Sokoban" (PC). You need a ZIP decompression program to install it.
 Size = 2.42 MB
 Category = 4
@@ -27,6 +27,6 @@ Description = Un joc de tip arcadă pentru UNIX, Mac OS X, Windows și DOS; resp
 Size = 2,42 Mo
 
 [Section.041f]
-Licence = GPL 2. sürüm
+License = GPL 2. sürüm
 Description = "Boulder Dash" (C64), "Emerald Mine" (Amiga), "Supaplex" (Amiga/PC), "Sokoban" (PC) gelenekleri içinde; UNIX, Mac OS X, Windows ve DOS için atari oyun salonu türünde oyun. Kurmak için bir ZIP çıkartma izlencesi gerekir.
 Size = 2,42 MB
index 1488f64..5221a3d 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = ReactOS Build Environment\r
 Version = 2.1.1\r
-Licence = GPL\r
+License = GPL\r
 Description = Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.\r
 Size = 28.3 MB\r
 Category = 7\r
index 5b0ee45..63b8ee0 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = ReactOS Build Environment AMD64 Addon\r
 Version = 1.3\r
-Licence = GPL\r
+License = GPL\r
 Description = Allows you to build the ReactOS AMD64 Source. For more instructions see ReactOS wiki.\r
 Size = 15.83 MB\r
 Category = 7\r
index ca14eba..4281c9d 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = ReactOS Build Environment ARM Addon\r
 Version = 1.0\r
-Licence = GPL\r
+License = GPL\r
 Description = Allows you to build the ReactOS ARM Source. For more instructions see ReactOS wiki.\r
 Size = 11.15 MB\r
 Category = 7\r
index ae30cca..f7862d5 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Samba TNG\r
 Version = 0.5-RC1\r
-Licence = GPL\r
+License = GPL\r
 Description = This tool allows you to access your Windows shared folders/printers with ReactOS.\r
 Size = 2.13 MB\r
 Category = 5\r
index 91cff00..4af10a9 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = SoundBlaster Driver for VMWare\r
 Version = 5.12.1.5017\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Unzip in the ReactOS's folder then restart ReactOS twice.\r
 Size = 2.22 MB\r
 Category = 13\r
@@ -13,63 +13,63 @@ CDPath = none
 \r
 [Section.0405]\r
 Name = Ovladač SoundBlaster pro VMWare\r
-Licence = Neznámá\r
+License = Neznámá\r
 Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.\r
 \r
 [Section.0407]\r
 Name = SoundBlaster Treiber für VMWare\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Entpacken in das "ReactOS"-Verzeichnis und ReactOS zweimal neustarten.\r
 \r
 [Section.040a]\r
 Name = Driver SoundBlaster para VMWare\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Descomprimir en la carpeta "Reactos" y reiniciar Reactos dos veces.\r
 \r
 [Section.040c]\r
 Name = Pilote SoundBlaster pour VMWare\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Dézippez dans le répertoire "ReactOS" puis redémarrez deux fois.\r
 Size = 2,22 Mo\r
 \r
 [Section.0410]\r
 Name = Driver SoundBlaster per VMWare\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Estrarre nella cartella "ReactOS" e riavviare ReactOS due volte.\r
 \r
 [Section.0413]\r
 Name = SoundBlaster Driver voor VMWare\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Pak uit in de "ReactOS" folder en start ReactOS tweemaal opnieuw op.\r
 \r
 [Section.0415]\r
 Name = Sterownik SoundBlaster dla VMWare\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Rozpakuj zawartość w folderze "ReactOS" i dwukrotnie zrestartuj system.\r
 \r
 [Section.0418]\r
 Name = Modul pilot SoundBlaster pentru VMWare\r
-Licence = Nespecificată\r
+License = Nespecificată\r
 Description = Dezarhivați în dosarul ReactOS apoi reporniți ReactOS de două ori.\r
 Size = 2,22 Mo\r
 \r
 [Section.0419]\r
 Name = Драйвер SoundBlaster для VMWare\r
-Licence = Не указано\r
+License = Не указано\r
 Description = Pазархивируйте содержимое в папку "ReactOS", затем дважды перезагрузите систему.\r
 \r
 [Section.041f]\r
 Name = VMWare için SoundBlaster Sürücüsü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = ReactOS'un dizinine çıkartınız, sonra bilgisayarı iki kez yeniden başlatınız.\r
 Size = 2,22 MB\r
 \r
 [Section.0422]\r
 Name = Драйвер SoundBlaster для VMWare\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Pозархівуйте вміст в теку "ReactOS" після чого двічі перезавантажте систему.\r
 \r
 [Section.0813]\r
 Name = SoundBlaster Driver voor VMWare\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Pak uit in de "ReactOS" folder en start ReactOS tweemaal opnieuw op.\r
index 7104731..f95454e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = SciTE\r
 Version = 3.5.1\r
-Licence = Freeware\r
+License = Freeware\r
 Description = SciTE is a SCIntilla based text editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs.\r
 Size = 744 kB\r
 Category = 7\r
@@ -32,12 +32,12 @@ Description = SciTE is een tekstbewerker gebaseerd op SCIntilla. Origineel bedoe
 Description = SciTE to edytor tekstu bazowany na SCIntilla. Oryginalnie stworzony aby pokazać Scintille, stał sie ogólnie przydatnym edytorem z infrastrukturą potrzebną do tworzenia i uruchamiania programów.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = SciTE este un editor de text bazat pe SCIntilla. Construit inițial pentru a demonstra Scintilla, a crescut ulterior într-un editor de uz general cu funcționalități de compilare și execuție a programelor.\r
 Size = 744 ko\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = SciTE, bir Scintilla tabanlı metin düzenleyicisidir. İlk başta Scintilla'yı göstermek için yapıldı; izlenceleri yapmak ve çalıştırmak yetenekleriyle, umûmiyetle kullanışlı bir düzenleyici olmak için gelişti.\r
 Size = 744 KB\r
 \r
index b3c3c71..ac3eccd 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = ScummVM\r
 Version = 1.7.0\r
-Licence = GPL\r
+License = GPL\r
 Description = Software that reproduce the working of graphical engine for videogames (Sam and Max, Day of the Tentacle, etc.) on ReactOS.\r
 Size = 6.9 MB\r
 Category = 4\r
index 46647c2..7096079 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Simple Direct Media Layer (SDL) Mixer\r
 Version = 1.2.12\r
-Licence = LGPL\r
+License = LGPL\r
 Description = Needed for some open source games to run. You need 7-Zip or a similar utility to extract it.\r
 Size = 548.02 kB\r
 Category = 14\r
index b14b37c..31bfbcb 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Simple Direct Media Layer (SDL) Runtime\r
 Version = 1.2.15\r
-Licence = LGPL\r
+License = LGPL\r
 Description = Needed for many open source games to run. You need 7-Zip or a similar utility to extract it.\r
 Size = 136.67 kB\r
 Category = 14\r
index 6219ea2..20a6a07 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mozilla SeaMonkey\r
 Version = 2.30\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
 Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.\r
 Size = 30.05 MB\r
 Category = 5\r
index b21cf34..dd78042 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = SMPlayer\r
 Version = 14.9.0\r
-Licence = GPL\r
+License = GPL\r
 Description = Graphical Frontend for MPlayer.\r
 Size = 20.7 MB\r
 Category = 2\r
index ce477e6..9bb2007 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Snoopy
 Version = 1.0
-Licence = Freeware
+License = Freeware
 Description = The original C64 Snoopy remake.
 Size = 704 kB
 Category = 4
@@ -20,11 +20,11 @@ URLSite = http://www.blueskied.com/spiele-spielen/snoopy.htm
 Description = Il remake del gioco Snoopy per Commodore 64.
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Recrearea jocului Snoppy (original pe C64).
 Size = 704 ko
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Özgün C64 Snoopy'in yeniden yapılmışı.
 Size = 704 KB
index 82d13f5..3116313 100644 (file)
@@ -3,7 +3,7 @@
 \r
 [Section]\r
 Name = Steam\r
-Licence = Freeware\r
+License = Freeware\r
 Description = The Steam gaming platform used by many games these days.\r
 Size = 1.59 MB\r
 Category = 4\r
@@ -37,13 +37,13 @@ Description = Steam - platforma, którą używa obecnie wiele gier.
 URLSite = http://store.steampowered.com/?l=polish\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Platforma de joc Steam, utilizată de multe jocuri în zilele de astăzi.\r
 Size = 1,59 Mo\r
 URLSite = http://store.steampowered.com/?l=romanian\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Bugünlerde Steam oyun platformu birçok oyun eliyle kullanılmaktadır.\r
 Size = 1,59 MB\r
 URLSite = http://store.steampowered.com/?l=turkish\r
index 55717c6..ee1b474 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = SumatraPDF\r
 Version = 2.5.2\r
-Licence = GPLv3\r
+License = GPLv3\r
 Description = Sumatra PDF is a slim, free, open-source PDF reader. Portable out of the box.\r
 Size = 4.0 MB\r
 Category = 6\r
@@ -40,7 +40,7 @@ Size = 4,0 Mo
 URLSite = http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader-ro.html\r
 \r
 [Section.041f]\r
-Licence = GPL 3. sürüm\r
+License = GPL 3. sürüm\r
 Description = SumatraPDF; yeğni, ücretsiz ve açık kaynak bir PDF okuyucusudur. Kutunun dışında taşınabilirdir.\r
 Size = 4,0 MB\r
 \r
index 82c8844..5df5d17 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Summer Bound
 Version = 1.4
-Licence = Freeware
+License = Freeware
 Description = A game similar Frozen Fruits.
 Size = 764 kB
 Category = 4
@@ -20,11 +20,11 @@ URLSite = http://www.blueskied.com/freeware-spiele/runterladen.htm
 Description = Un gioco simile a Frozen Fuits
 
 [Section.0418]
-Licence = Gratuită
+License = Gratuită
 Description = Un joc similar jocului Frozen Fruits.
 Size = 764 ko
 
 [Section.041f]
-Licence = Ücretsiz
+License = Ücretsiz
 Description = Frozen Fruits'e benzeyen bir oyun.
 Size = 764 KB
index 2213f3b..6d4f21a 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Super DX-Ball
 Version = 1.1
-Licence = Shareware
+License = Shareware
 Description = Super DX-Ball is a vibrant and colorful brick-breaking game.
 Size = 3.8 MB
 Category = 4
@@ -23,11 +23,11 @@ Description = Super DX-Ball è un gioco spacca blocchi vibrante e colorato
 Description = Super DX-Ball - pełna koloru i animacji gra polegająca na zbijaniu klocków.
 
 [Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
 Description = Un joc ce implică spargerea de cărămizi.
 Size = 3,8 Mo
 
 [Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
 Description = Super DX-Ball canlı ve renkli bir tuğla kırma oyunudur.
 Size = 3,8 MB
index c08ee2a..2825eb3 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Super Finder XT\r
 Version = 1.6.3.2\r
-Licence = Freeware\r
+License = Freeware\r
 Description = A fast and feature rich search application.\r
 Size = 4.94 MB\r
 Category = 12\r
@@ -32,12 +32,12 @@ Description = Een snelle zoekapplicatie rijk aan mogelijkheden.
 Description = Szybka i bogata w opcje aplikacja szukająca.\r
 \r
 [Section.0418]\r
-Licence = Gratuită\r
+License = Gratuită\r
 Description = Aplicație rapidă de căutări complexe de text.\r
 Size = 4,94 Mo\r
 \r
 [Section.041f]\r
-Licence = Ücretsiz\r
+License = Ücretsiz\r
 Description = Hızlı ve husûsiyet zengini bir arama uygulaması.\r
 Size = 4,94 MB\r
 \r
index 6f8881f..9aa739a 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = SuperTux
 Version = 0.1.3
-Licence = GPL
+License = GPL
 Description = SuperTux is a free, open-source two-dimensional platform game.
 Size = 7.3 MB
 Category = 4
index ae23090..bc478c2 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Tahoma Font\r
 Version = 1.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Tahoma Font pack needed by some apps (Steam). Contains: Tahoma.ttf, Tahomabd.ttf.\r
 Size = 305.12 kB\r
 Category = 14\r
@@ -13,15 +13,15 @@ URLDownload = http://download.microsoft.com/download/office97pro/fonts/1/w95/en-
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Tahoma Font Pack, der von einigen Anwendungen benötigt wird (Steam). Beinhaltet: Tahoma.ttf, Tahomabd.ttf.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Paquete de fuente Tahoma, necesaria para ciertas aplicaciones (Steam). Incluye: Tahoma.ttf, Tahomabd.ttf.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Package pour la police Tahoma, nécessaire pour certaines applications (Steam). Contient: Tahoma.ttf, Tahomabd.ttf.\r
 Size = 305,12 ko\r
 \r
@@ -29,27 +29,27 @@ Size = 305,12 ko
 Description = Il font pack Tahoma è richiesto da alcune applicazioni (Steam). Contiene: Tahoma.ttf, Tahomabd.ttf.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Tahoma lettertypes gebruikt door een aantal programma's (Steam). Bevat: Tahoma.ttf, Tahomabt.ttf.\r
 \r
 [Section.0415]\r
 Description = Pakiet Czcionki Tahoma wymagany przez niektóre programy (np. Steam). Zawiera: Tahoma.ttf, Tahomabd.ttf.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Pachetul Tahoma Font, necesar unor aplicații (Steam). Conține: Tahoma.ttf, Tahomabd.ttf.\r
 Size = 305,12 ko\r
 \r
 [Section.041f]\r
 Name = Microsoft Tahoma Yazı Tipi\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Tahoma Yazı Tipi paketi, Steam gibi birtakım uygulamalar için gereklidir. Şunları içerir: Tahoma.ttf, Tahomabd.ttf.\r
 Size = 305,12 KB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Пакет шрифтів Tahoma, що необхідні деяким програмам (Steam). включає: Tahoma.ttf, Tahomabd.ttf.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Tahoma lettertypes gebruikt door een aantal programma's (Steam). Bevat: Tahoma.ttf, Tahomabt.ttf.\r
index fc72de5..8c4b351 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Mozilla Thunderbird 31
 Version = 31.2.0
-Licence = MPL/GPL/LGPL
+License = MPL/GPL/LGPL
 Description = The most popular and one of the best free Mail Clients out there.
 Size = 25.25 MB
 Category = 5
index e013e28..6f14c49 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Mozilla Thunderbird\r
 Version = 3.1.20\r
-Licence = MPL/GPL/LGPL\r
+License = MPL/GPL/LGPL\r
 Description = The most popular and one of the best free Mail Clients out there.\r
 Size = 9.06 MB\r
 Category = 5\r
index 70b2ce1..9fa44d2 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Tile World\r
 Version = 1.3.0\r
-Licence = GPL\r
+License = GPL\r
 Description = Nice clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted original.\r
 Size = 1.16 MB\r
 Category = 4\r
index 415fb57..fe940d9 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Total Commander
 Version = 8.51a
-Licence = Shareware
+License = Shareware
 Description = Total Commander is a file manager with two panels side by side.
 Size = 3.55 MB
 Category = 12
@@ -26,12 +26,12 @@ Description = Total Commander is een bestandsbeheerder met twee panelen zij aan
 Description = Total Commander to popularny menedżer plików z dwoma panelami, ustawionymi obok siebie.
 
 [Section.0418]
-Licence = Versiune de evaluare
+License = Versiune de evaluare
 Description = Total Commander este un gestionar de fișiere după modelul «două paneluri alăturate».
 Size = 3,55 Mo
 
 [Section.041f]
-Licence = Paylaşımlı
+License = Paylaşımlı
 Description = Total Commander, yan yana iki bölmeli bir kütük yöneticisidir.
 Size = 3,55 MB
 
index d197e2a..bf54767 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = TuxPaint\r
 Version = 0.9.22\r
-Licence = GPL\r
+License = GPL\r
 Description = An open source bitmap graphics editor geared towards young children.\r
 Size = 13.5 MB\r
 Category = 3\r
index 0f68455..d89f31b 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = UltraVNC\r
 Version = 1.2.0.3\r
-Licence = GPL\r
+License = GPL\r
 Description = Open source VNC client/server.\r
 Size = 3.22 MB\r
 Category = 5\r
index a5c6822..3c03b7e 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = µTorrent\r
 Version = 3.4.2\r
-Licence = Freeware for non-commercial uses\r
+License = Freeware for non-commercial uses\r
 Description = Small and fast BitTorrent Client.\r
 Size = 1.61 MB\r
 Category = 5\r
@@ -13,52 +13,52 @@ URLDownload = http://download-new.utorrent.com/endpoint/utorrent/os/windows/trac
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Freeware für nichtkommerzielle Nutzung\r
+License = Freeware für nichtkommerzielle Nutzung\r
 Description = Kleiner und schneller BitTorrent Client.\r
 \r
 [Section.040a]\r
-Licence = Gratuito para uso no comercial\r
+License = Gratuito para uso no comercial\r
 Description = Pequeño y rápido cliente BitTorrent.\r
 \r
 [Section.040c]\r
-Licence = Gratuit pour une utilisation non-commerciale\r
+License = Gratuit pour une utilisation non-commerciale\r
 Description = Client BitTorrent petit et rapide.\r
 Size = 1,61 Mo\r
 \r
 [Section.040c]\r
-Licence = Gratita per un uso non-commerciale\r
+License = Gratita per un uso non-commerciale\r
 Description = Piccolo e rapido Client BitTorrent.\r
 \r
 [Section.0410]\r
-Licence = Gratuita per un uso non-commerciale\r
+License = Gratuita per un uso non-commerciale\r
 Description = Piccolo e rapido Client BitTorrent.\r
 \r
 [Section.0413]\r
-Licence = Freeware voor niet-commerciëel gebruik\r
+License = Freeware voor niet-commerciëel gebruik\r
 Description = Kleine en snelle BitTorrent afnemer.\r
 \r
 [Section.0415]\r
-Licence = Freeware (do użytku domowego)\r
+License = Freeware (do użytku domowego)\r
 Description = Mały i szybki klient BitTorrent.\r
 \r
 [Section.0418]\r
-Licence = Gratuită pentru uz necomercial\r
+License = Gratuită pentru uz necomercial\r
 Description = Client BitTorrent, mic și rapid.\r
 Size = 1,61 Mo\r
 \r
 [Section.0419]\r
-Licence = Бесплатная для некоммерческого использования\r
+License = Бесплатная для некоммерческого использования\r
 Description = Маленький и быстрый клиент BitTorrent.\r
 \r
 [Section.041f]\r
-Licence = Tecimlik olmayan kullanımlar için ücretsiz.\r
+License = Tecimlik olmayan kullanımlar için ücretsiz.\r
 Description = Küçük ve hızlı BitTorrent istemcisi.\r
 Size = 1,61 MB\r
 \r
 [Section.0422]\r
-Licence = Безплатна для некомерційного використання\r
+License = Безплатна для некомерційного використання\r
 Description = Маленький і швидкий клієнт BitTorrent.\r
 \r
 [Section.0813]\r
-Licence = Freeware voor niet-commerciëel gebruik\r
+License = Freeware voor niet-commerciëel gebruik\r
 Description = Kleine en snelle BitTorrent afnemer.\r
index a588264..4f1f2e4 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual Basic 5 Runtime\r
 Version = 5.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft Visual Basic 5 Runtime. Contains: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 Size = 969.59 kB\r
 Category = 14\r
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/vb50pro/utility/1/win98/en-
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Microsoft Visual Basic 5 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Librerias Microsoft Visual Basic 5. Incluye: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Bibliothèque Microsoft Visual Basic 5. Contient: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 Size = 969,59 ko\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Libreria Microsoft Visual Basic 5. Contiene: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Basic 5 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteki uruchomieniowe Microsoft Visual Basic 5. Zawiera: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Microsoft Visual Basic 5 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 Size = 969,59 ko\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual Basic 5 Yürütücü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft Visual Basic 5 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 Size = 969,59 KB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотеки Microsoft Visual Basic 5. включає: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Basic 5 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
index ac1efdf..1290c75 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual Basic 6 Runtime\r
 Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft Visual Basic 6 Runtime. Contains: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1.02 MB\r
 Category = 14\r
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/5/a/d/5ad868a0-8ecd-4bb0-a8
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Microsoft Visual Basic 6 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Librerias Microsoft Visual Basic 6. Incluye: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Bibliothèque Microsoft Visual Basic 6. Contient: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,02 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Libreria Microsoft Visual Basic 6.Contiene: advpack.dll, asycfilt.dll, comcat.dll, msvbvm50.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Basic 6 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteki uruchomieniowe Microsoft Visual Basic 6. Zawiera: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Microsoft Visual Basic 6 Runtime. Conține: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,02 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual Basic 6 Yürütücü\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft Visual Basic 6 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,02 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотеки Microsoft Visual Basic 6. включає: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Basic 6 Runtime. Bevat: advpack.dll, asycfilt.dll, comcat.dll, msvbvm60.dll, oleaut32.dll, olepro32.dll.\r
index 278fd96..b3f03a8 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual C++ 2005 SP1 Redistributable Package\r
 Version = 7.1\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft Visual Studio 2005 Runtime SP1. Contains: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 Size = 2.6 MB\r
 Category = 14\r
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/e/1/c/e1c773de-73ba-494a-a5
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Microsoft Visual Studio 2005 Laufzeitsystem SP1. Beinhaltet: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Librerias Microsoft Visual Studio 2005 SP1. Incluye: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Bibliothèque Microsoft Visual Studio 2005 SP1. Contient: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 Size = 2,6 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Microsoft Visual Studio 2005 Runtime SP1. Contiene: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 2005 Runtime SP1. Bevat: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2005 SP1. Zawiera: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Microsoft Visual Studio 2005 Runtime SP1. Conține: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 Size = 2,6 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual C++ 2005 SP1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft Visual Studio 2005 Yürütücü SP1. Şunları içerir: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 Size = 2,6 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотеки Microsoft Visual Studio 2005 SP1. включає: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 2005 Runtime SP1. Bevat: atl80.dll, mfc80.dll, mfcm80.dll, mfcm80u.dll, msdia80.dll, msvcm80.dll, msvcp80.dll, msvcr80.dll, vcomp.dll.\r
index 48f9ef7..b4d6f76 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual C++ 2008 SP1 Redistributable Package\r
 Version = 8.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft Visual Studio 2008 SP1 Runtime. Contains: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 Size = 4.02 MB\r
 Category = 14\r
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8d
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Microsoft Visual Studio 2008 SP1 Laufzeitsystem. Enthält: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Librerias Microsoft Visual Studio 2008 SP1. Incluye: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Bibliothèque Microsoft Visual Studio 2008 SP1. Contient: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 Size = 4,02 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Microsoft Visual Studio 2008 Runtime SP1. Contiene: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 2008 SP1 Runtime. Bevat: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2008 SP1. Zawiera: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Microsoft Visual Studio 2008 SP1 Runtime. Conține: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 Size = 4,02 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual C++ 2008 SP1 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft Visual Studio 2008 SP1 Yürütücü. Şunları içerir: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 Size = 4,02 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотеки Microsoft Visual Studio 2008 SP1. включає: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 2008 SP1 Runtime. Bevat: atl90.dll, mfc90.dll, mfc90u.dll, mfcm90.dll, mfcm90u.dll, msdia90.dll, msvcm90.dll, msvcp90.dll, msvcr90.dll, vcomp90.dll.\r
index 180fc73..243c4d8 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Microsoft Visual C++ 2010 Redistributable Package
 Version = 8.0
-Licence = Unknown
+License = Unknown
 Description = Microsoft Visual Studio 2010 Runtime. Contains: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 Size = 4.8 MB
 Category = 14
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/5/B/C/5BC5DBB3-652D-4DCE-B1
 CDPath = none
 
 [Section.0407]
-Licence = Unbekannt
+License = Unbekannt
 Description = Microsoft Visual Studio 2010 Laufzeitsystem. Beinhaltet: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.040a]
-Licence = Desconocida
+License = Desconocida
 Description = Librerias Microsoft Visual Studio 2010. Incluye: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.040c]
-Licence = Inconnue
+License = Inconnue
 Description = Bibliothèque Microsoft Visual Studio 2010. Contient: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 Size = 4.8 Mo
 
 [Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
 Description = Libreria Microsoft Visual Studio 2010. Include: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.0413]
-Licence = Ongekend
+License = Ongekend
 Description = Microsoft Visual Studio 2010 Runtime. Bevat: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.0415]
-Licence = Nieznana
+License = Nieznana
 Description = Biblioteki uruchomieniowe Microsoft Visual Studio 2010. Zawiera: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.0418]
-Licence = Necunoscută
+License = Necunoscută
 Description = Microsoft Visual Studio 2010 Runtime. Conține: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 Size = 4,8 Mo
 
 [Section.041f]
 Name = Microsoft Visual C++ 2010 Yeniden Dağıtılabilir Paket
-Licence = Bilinmiyor
+License = Bilinmiyor
 Description = Microsoft Visual Studio 2010 Yürütücü. Şunları içerir: atl100.dll, mfc100.dll, mfc100u.dll, mfcm100.dll, mfcm100u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 Size = 4,8 MB
 
 [Section.0422]
-Licence = Невідома
+License = Невідома
 Description = Бібліотеки Microsoft Visual Studio 2010. включає: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
 
 [Section.0813]
-Licence = Ongekend
+License = Ongekend
 Description = Microsoft Visual Studio 2010 Runtime. Bevat: atl100.dll, mfc100.dll, mfc90u.dll, mfcm100.dll, mfcm90u.dll, msdia100.dll, msvcm100.dll, msvcp100.dll, msvcr100.dll, vcomp100.dll.
index 831205b..0ead581 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Microsoft Visual C++ 6 Redistributable Package\r
 Version = 6.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Microsoft Visual Studio 6 Runtime. Contains: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1.75 MB\r
 Category = 14\r
@@ -13,45 +13,45 @@ URLDownload = http://download.microsoft.com/download/vc60pro/Update/2/W9XNT4/EN-
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 Description = Microsoft Visual Studio 6 Laufzeitsystem. Beinhaltet: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 Description = Librerias Microsoft Visual Studio 6. Incluye: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Description = Bibliothèque Microsoft Visual Studio 6. Contient: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,75 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 Description = Microsoft Visual Studio 6 Runtime. Contiene: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0413]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 6 Runtime. Bevat: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 Description = Biblioteki uruchomieniowe Microsoft Visual Studio 6. Zawiera: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Description = Microsoft Visual Studio 6 Runtime. Conține: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,75 Mo\r
 \r
 [Section.041f]\r
 Name = Microsoft Visual C++ 6 Yeniden Dağıtılabilir Paket\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Microsoft Visual Studio 6 Yürütücü. Şunları içerir: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 Size = 1,75 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 Description = Бібліотеки Microsoft Visual Studio 6. включає: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
 \r
 [Section.0813]\r
-Licence = Ongekend\r
+License = Ongekend\r
 Description = Microsoft Visual Studio 6 Runtime. Bevat: advpack.dll, asycfilt.dll, atla.dll, atlu.dll, comcat.dll, mfc42.dll, mfc42u.dll, msvcirt.dll, msvcp60.dll, msvcrt.dll, oleaut32.dll, olepro32.dll.\r
index 772bb84..afb003f 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = VLC media player\r
 Version = 2.1.5\r
-Licence = GPL\r
+License = GPL\r
 Description = A media player.\r
 Size = 23.6 MB\r
 Category = 2\r
index 001c3b0..3c8abb0 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = WinBoard\r
 Version = 4.2.7b\r
-Licence = GPLv3\r
+License = GPLv3\r
 Description = WinBoard is a graphical chessboard for the Windows/ReactOS that can serve as a user interface for GNU Chess, Crafty, and other chess engines, for the Internet chess servers, and for electronic mail correspondence chess.\r
 Size = 5.93 MB\r
 Category = 4\r
@@ -36,7 +36,7 @@ Description = WinBoard este o tablă de șah grafică pentru Windows/ReactOS ce
 Size = 5,93 Mo\r
 \r
 [Section.041f]\r
-Licence = GPL 3. sürüm\r
+License = GPL 3. sürüm\r
 Description = WinBoard, Umûmî Ağ satranç sunucularına ve postayla yazışmalı satranca GNU Chess, Crafty ve başka satranç motorlarını bir kullanıcı arayüzü olarak sunabilen, Windows/ReactOS için bir çizgelik satranç tahtasıdır.\r
 Size = 5,93 MB\r
 \r
index 23d5755..f490096 100644 (file)
@@ -4,7 +4,7 @@
 [Section]\r
 Name = Windows Media Encoder 9\r
 Version = 9.0\r
-Licence = Unknown\r
+License = Unknown\r
 Description = Windows Media Encoder 9\r
 Size = 9.46 MB\r
 Category = 14\r
@@ -13,26 +13,26 @@ URLDownload = http://download.microsoft.com/download/8/1/f/81f9402f-efdd-439d-b2
 CDPath = none\r
 \r
 [Section.0407]\r
-Licence = Unbekannt\r
+License = Unbekannt\r
 \r
 [Section.040a]\r
-Licence = Desconocida\r
+License = Desconocida\r
 \r
 [Section.040c]\r
-Licence = Inconnue\r
+License = Inconnue\r
 Size = 9,46 Mo\r
 \r
 [Section.0410]\r
-Licence = Sconosciuta\r
+License = Sconosciuta\r
 \r
 [Section.0413]\r
 License = Ongekend\r
 \r
 [Section.0415]\r
-Licence = Nieznana\r
+License = Nieznana\r
 \r
 [Section.0418]\r
-Licence = Necunoscută\r
+License = Necunoscută\r
 Size = 9,46 Mo\r
 \r
 [Section.041b]\r
@@ -40,12 +40,12 @@ Description = Neznáma
 \r
 [Section.041f]\r
 Name = Windows Ortam Kodlayıcısı 9\r
-Licence = Bilinmiyor\r
+License = Bilinmiyor\r
 Description = Windows Ortam Kodlayıcısı 9\r
 Size = 9,46 MB\r
 \r
 [Section.0422]\r
-Licence = Невідома\r
+License = Невідома\r
 \r
 [Section.0813]\r
 License = Ongekend\r
index d9c4abd..346b7f7 100644 (file)
@@ -4,7 +4,7 @@
 [Section]
 Name = Microsoft Word Viewer
 Version = 2003
-Licence = Unknown
+License = Unknown
 Description = Microsoft Word Viewer
 Size = 24.5 MB
 Category = 6
@@ -13,53 +13,53 @@ URLDownload = http://download.microsoft.com/download/6/a/6/6a689355-b155-4fa7-ad
 CDPath = none
 
 [Section.0407]
-Licence = Unbekannt
+License = Unbekannt
 Size = 24.56 MB
 URLDownload = http://download.microsoft.com/download/d/4/b/d4b23f0e-c8b6-4383-878d-1a8184b7db56/wordview_de-de.exe
 
 [Section.040a]
-Licence = Desconocida
+License = Desconocida
 Size = 24.53 MB
 URLDownload = http://download.microsoft.com/download/4/4/c/44c2d552-8b40-464f-8470-b4976d7ba60b/wordview_es-es.exe
 
 [Section.040c]
-Licence = Inconnue
+License = Inconnue
 Size = 24,55 Mo
 URLDownload = http://download.microsoft.com/download/b/f/3/bf36c75d-2e93-4db1-ace2-1425e5219260/wordview_fr-fr.exe
 
 [Section.0410]
-Licence = Sconosciuta
+License = Sconosciuta
 Size = 24.52 MB
 URLDownload = http://download.microsoft.com/download/f/8/e/f8e9dadd-70bd-4317-a7fe-25d7bfb54b71/wordview_it-it.exe
 
 [Section.0413]
-Licence = Ongekend
+License = Ongekend
 Size = 24.54 MB
 URLDownload = http://download.microsoft.com/download/c/1/0/c10e009e-61e2-4b54-8d21-aff378679527/wordview_nl-nl.exe
 
 [Section.0415]
-Licence = Nieznana
+License = Nieznana
 Size = 24.58 MB
 URLDownload = http://download.microsoft.com/download/c/e/1/ce1e1286-67a2-4069-a8c4-b3552f18dfa8/wordview_pl-pl.exe
 
 [Section.0418]
-Licence = Necunoscută
+License = Necunoscută
 Size = 24,56 Mo
 URLDownload = http://download.microsoft.com/download/1/2/3/123d3dc8-6f3f-473f-ac1d-3e38969605e8/wordview_ro-ro.exe
 
 [Section.041f]
 Name = Microsoft Word Görüntüleyici
-Licence = Bilinmiyor
+License = Bilinmiyor
 Description = Microsoft Word Görüntüleyici
 Size = 24,55 MB
 URLDownload = http://download.microsoft.com/download/7/6/e/76efefb4-9575-4903-ac2a-180c280ab6c7/wordview_tr-tr.exe
 
 [Section.0422]
-Licence = Невідома
+License = Невідома
 Size = 24.56 MB
 URLDownload = http://download.microsoft.com/download/2/b/d/2bd08f27-822b-4c20-936a-0f1d91cb9e69/wordview_uk-ua.exe
 
 [Section.0813]
-Licence = Ongekend
+License = Ongekend
 Size = 24.54 MB
 URLDownload = http://download.microsoft.com/download/c/1/0/c10e009e-61e2-4b54-8d21-aff378679527/wordview_nl-nl.exe
index ab8ebf3..29972bb 100644 (file)
@@ -5,7 +5,7 @@
 [Section]
 Name = Zaz
 Version = 1.0.0
-Licence = GPL
+License = GPL
 Description = Zaz is a free arcade action puzzle computer game, a little bit like Frozen Bubble.
 Size = 21.0 MB
 Category = 4
index 96f3c21..96720ca 100644 (file)
 #define IDS_AINFO_DESCRIPTION    351
 #define IDS_AINFO_SIZE           352
 #define IDS_AINFO_URLSITE        353
-#define IDS_AINFO_LICENCE        354
+#define IDS_AINFO_LICENSE        354
 
 /* Names of categories */
 #define IDS_CAT_AUDIO            700
index 959a1aa..68bae6c 100644 (file)
@@ -23,6 +23,6 @@ list(APPEND SOURCE
 
 add_executable(taskmgr ${SOURCE} taskmgr.rc)
 set_module_type(taskmgr win32gui UNICODE)
-add_importlibs(taskmgr advapi32 user32 gdi32 shell32 comctl32 msvcrt kernel32 ntdll)
+add_importlibs(taskmgr advapi32 user32 gdi32 shell32 shlwapi comctl32 msvcrt kernel32 ntdll)
 add_pch(taskmgr precomp.h SOURCE)
 add_cd_file(TARGET taskmgr DESTINATION reactos/system32 FOR all)
index 093f783..71b8db3 100644 (file)
@@ -54,6 +54,7 @@ const PresetColumnEntry ColumnPresets[COLUMN_NMAX] = {
     DECLARE_COLUMN_PRESET(IOREADBYTES,       70, FALSE)
     DECLARE_COLUMN_PRESET(IOWRITEBYTES,      70, FALSE)
     DECLARE_COLUMN_PRESET(IOOTHERBYTES,      70, FALSE)
+    DECLARE_COLUMN_PRESET(COMMANDLINE,      450, FALSE)
 };
 
 static int          InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
index 9aeb3ec..a92efa3 100644 (file)
@@ -47,7 +47,8 @@
 #define COLUMN_IOREADBYTES          22
 #define COLUMN_IOWRITEBYTES         23
 #define COLUMN_IOOTHERBYTES         24
-#define COLUMN_NMAX                 25
+#define COLUMN_COMMANDLINE          25
+#define COLUMN_NMAX                 26
 
 /*
  * temporary fix:
@@ -104,6 +105,7 @@ extern const PresetColumnEntry ColumnPresets[COLUMN_NMAX];
 #define Column_IOWriteBytes         Columns[COLUMN_IOWRITEBYTES]
 #define Column_IOOther              Columns[COLUMN_IOOTHER]
 #define Column_IOOtherBytes         Columns[COLUMN_IOOTHERBYTES]
+#define Column_CommandLine          Columns[COLUMN_COMMANDLINE]
 
 void ProcessPage_OnViewSelectColumns(void);
 void AddColumns(void);
index 0c5377e..9a38102 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "В/И байтове за писане", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 127, 65, 10
     CONTROL "Други В/И", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 138, 115, 10
     CONTROL "Други В/И байтове", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 149, 115, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 125, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "В/И прочетени байтове"
     IDS_TAB_IOWRITESBYTES "В/И записани байтове"
     IDS_TAB_IOOTHERBYTES "В/И други байтове"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Избор на стълбове..."
     IDS_MENU_16BITTASK "&Показване на 16битови задачи"
     IDS_MENU_WINDOWS "&Прозорци"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Невъзможно намаляване на първенство"
     IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Промяната на първенството на това действие може да\nпричини нежелани последствия, включително неустойчивост на системата. Сигурен ли сте, \nче искате да смените старшинството?"
     IDS_MSG_TRAYICONCPUUSAGE "Заетост на ЦПУ: %d%%"
-    IDS_STATUS_MEMUSAGE "Заета памет: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Заета памет: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Заетост на ЦПУ: %3d%%"
     IDS_STATUS_PROCESSES "Действия: %d"
     IDS_NOT_RESPONDING "Не отговаря"
index 518b9fe..ac024b8 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "I/O zapsané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 72, 10
     CONTROL "I/O ostatní", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 48, 10
     CONTROL "I/O ostatní bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O přečtené bajty"
     IDS_TAB_IOWRITESBYTES "I/O zapsané bajty"
     IDS_TAB_IOOTHERBYTES "I/O ostatní bajty"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Vybrat sloupce..."
     IDS_MENU_16BITTASK "&Zobrazit 16-bitové úlohy"
     IDS_MENU_WINDOWS "&Okna"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Není možné změnit prioritu"
     IDS_MSG_WARNINGCHANGEPRIORITY "Upozornění: Změna priority procesu může\nzpůsobit nestabilitu systému a jiné nepředvídatelné problémy. Jste si jisti\nse změnou priority procesu?"
     IDS_MSG_TRAYICONCPUUSAGE "Využití CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Využití paměti: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Využití paměti: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Využití CPU: %3d%%"
     IDS_STATUS_PROCESSES "Procesy: %d"
     IDS_NOT_RESPONDING "Neodpovídá"
index e3ef07a..26dbe41 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "I/O Skrevet Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O Andet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Andre Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Select Columns..."
     IDS_MENU_16BITTASK "&Show 16-bit tasks"
     IDS_MENU_WINDOWS "&Windows"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
-    IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
     IDS_STATUS_PROCESSES "Processes: %d"
     IDS_NOT_RESPONDING "Not Responding"
index 8365434..bc4cd00 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
     CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10 // 107
     CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10 // 107
+    CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10 // 107
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "E/A-Bytes (Lesen)"
     IDS_TAB_IOWRITESBYTES "E/A-Bytes (Schreiben)"
     IDS_TAB_IOOTHERBYTES "E/A-Bytes (Andere)"
+    IDS_TAB_COMMANDLINE "Befehlszeile"
     IDS_MENU_SELECTCOLUMNS "&Spalten auswählen..."
     IDS_MENU_16BITTASK "&16-Bit-Tasks anzeigen"
     IDS_MENU_WINDOWS "&Fenster"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Kann die Priorität nicht ändern"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNUNG: Das Ändern der Prioritätsklasse dieses Prozesses\nkann zu unerwünschten Ergebnissen, einschl. Systeminstabilität, führen.\nSind Sie sicher, dass Sie sie ändern möchten?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU-Auslastung: %d%%"
-    IDS_STATUS_MEMUSAGE "zugesicherter Speicher: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "zugesicherter Speicher: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU-Auslastung: %3d%%"
     IDS_STATUS_PROCESSES "Prozesse: %d"
     IDS_NOT_RESPONDING "Keine Rückmeldung"
index 0f4d87e..7a65c88 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Select Columns..."
     IDS_MENU_16BITTASK "&Show 16-bit tasks"
     IDS_MENU_WINDOWS "&Windows"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
-    IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
     IDS_STATUS_PROCESSES "Processes: %d"
     IDS_NOT_RESPONDING "Not Responding"
index 920992d..d25de52 100644 (file)
@@ -313,6 +313,7 @@ BEGIN
     CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -408,6 +409,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Select Columns..."
     IDS_MENU_16BITTASK "&Show 16-bit tasks"
     IDS_MENU_WINDOWS "&Windows"
@@ -431,7 +433,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
-    IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
     IDS_STATUS_PROCESSES "Processes: %d"
     IDS_NOT_RESPONDING "Not Responding"
index 595f1c1..768703c 100644 (file)
@@ -292,7 +292,7 @@ BEGIN
     DEFPUSHBUTTON "Aceptar", IDOK, 126, 178, 50, 14 // 84
     PUSHBUTTON "Cancelar", IDCANCEL, 180, 178, 50, 14 // 138
     LTEXT "Seleccione las columnas que aparecerán en la página de Procesos del Administrador de tareas.", IDC_STATIC, 7, 7, 221, 17 // 181
-    CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 88, 10 // 56
+    CONTROL "Nombre de ruta de la &imagen", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 105, 10 // 56
     CONTROL "Identificador de proceso (&PID)", IDC_PID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 39, 120, 10 // 88
     CONTROL "Uso de &CPU", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 53, 10
     CONTROL "Ti&empo de CPU", IDC_CPUTIME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 61, 65, 10 // 48
@@ -301,8 +301,8 @@ BEGIN
     CONTROL "Uso má&ximo de la memoria", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 120, 10 // 82
     CONTROL "Err&ores de página", IDC_PAGEFAULTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 105, 80, 10 // 53
     CONTROL "O&bjetos de USUARIO", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 80, 10 // 62
-    CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 60, 10 // 49
-    CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 65, 10
+    CONTROL "Lecturas de E/S", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 70, 10 // 49
+    CONTROL "Bytes de lectura de E/S", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 85, 10
     CONTROL "I&d. de sesión", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 65, 10 // 50
     CONTROL "&Nombre de usuario", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 75, 10 // 51
     CONTROL "Diferencia de erro&res de página", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10 // 107, 60
@@ -310,13 +310,14 @@ BEGIN
     CONTROL "B&loque paginado", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 67, 10 // 107, 53
     CONTROL "Blo&que no paginado", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10 // 107
     CONTROL "P&rioridad base", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10 // 107
-    CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10 // 107
-    CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10 // 107
+    CONTROL "&Recuento de identificadores", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 105, 10 // 107
+    CONTROL "Nú&mero de subprocesos", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 85, 10 // 107
     CONTROL "Objetos &GDI", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10 // 107
     CONTROL "Escrituras de E/S", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10 // 107
     CONTROL "Bytes de escritura de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
     CONTROL "Otros de E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 60, 10
     CONTROL "Otros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 75, 10
+    CONTROL "&Línea de comandos", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 75, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Bytes de lectura de E/S"
     IDS_TAB_IOWRITESBYTES "Bytes de escritura de E/S"
     IDS_TAB_IOOTHERBYTES "Otros bytes de E/S"
+    IDS_TAB_COMMANDLINE "Línea de comandos"
     IDS_MENU_SELECTCOLUMNS "&Seleccionar columnas..."
     IDS_MENU_16BITTASK "Mos&trar tareas de 16-bit"
     IDS_MENU_WINDOWS "&Ventanas"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "No se pudo cambiar la prioridad"
     IDS_MSG_WARNINGCHANGEPRIORITY "Advertencia: El cambio de prioridad en ciertos procesos podría provocar la inestabilidad del sistema.\n¿Seguro que desea cambiar la prioridad?"
     IDS_MSG_TRAYICONCPUUSAGE "Promedio CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Uso de memoria: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Uso de memoria: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Uso de CPU: %3d%%"
     IDS_STATUS_PROCESSES "Procesos: %d"
     IDS_NOT_RESPONDING "No responde"
index aa453bd..94d3c58 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "Octets d'écriture E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 127, 108, 10
     CONTROL "Autres E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 138, 108, 10
     CONTROL "Octets d'autres E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 149, 108, 10
+    CONTROL "&Ligne de commande", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 129, 160, 95, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Octets de lecture E/S"
     IDS_TAB_IOWRITESBYTES "Octets d'écriture E/S"
     IDS_TAB_IOOTHERBYTES "Octets d'autres E/S"
+    IDS_TAB_COMMANDLINE "Ligne de commande"
     IDS_MENU_SELECTCOLUMNS "&Sélectionner les colonnes..."
     IDS_MENU_16BITTASK "&Afficher les tâches 16 bits"
     IDS_MENU_WINDOWS "&Fenêtres"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Impossible de changer la priorité"
     IDS_MSG_WARNINGCHANGEPRIORITY "ATTENTION : Changer la priorité du processus peut causer des\neffets indésirables comme l'instabilité du système.\nÊtes-vous sûr de vouloir changer la priorité ?"
     IDS_MSG_TRAYICONCPUUSAGE "UC utilisée : %d%%"
-    IDS_STATUS_MEMUSAGE "Fichier d'échange utilisé : %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Fichier d'échange utilisé : %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "UC utilisée : %3d%%"
     IDS_STATUS_PROCESSES "Processus : %d"
     IDS_NOT_RESPONDING "Ne répond pas"
index 2a706d1..518e0b8 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Select Columns..."
     IDS_MENU_16BITTASK "&Show 16-bit tasks"
     IDS_MENU_WINDOWS "&Windows"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU Usage: %d%%"
-    IDS_STATUS_MEMUSAGE "Mem Usage: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Mem Usage: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU Usage: %3d%%"
     IDS_STATUS_PROCESSES "Processes: %d"
     IDS_NOT_RESPONDING "Not Responding"
index 896f2d5..9a42941 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O Írott bájtok", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "Egyéb I/O    mûveletek", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "Egyéb I/O mûveletek bájtjai", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Olvasott bájtok"
     IDS_TAB_IOWRITESBYTES "I/O Írott bájtok"
     IDS_TAB_IOOTHERBYTES "Egyéb I/O bájtok"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Oszlopok kiválasztása..."
     IDS_MENU_16BITTASK "&16bites feladatok megjelenítése"
     IDS_MENU_WINDOWS "&Ablak"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Nem lehetséges a prioritás megváltoztatása"
     IDS_MSG_WARNINGCHANGEPRIORITY "FIGYELEM: A prioritás megváltoztatása\nkellemetlenségeket, akár rendszer instabilitást is okozhat.\nBiztosan megakarod változtatni a prioritást?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU használat: %d%%"
-    IDS_STATUS_MEMUSAGE "Mem használat: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Mem használat: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU használat: %3d%%"
     IDS_STATUS_PROCESSES "Folyamatok: %d"
     IDS_NOT_RESPONDING "Nem válaszol"
index 2c7f974..ff67ec3 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O Write Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O Other", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Other Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Select Columns..."
     IDS_MENU_16BITTASK "&Show 16-bit tasks"
     IDS_MENU_WINDOWS "&Windows"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "Pemakaian CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Pemakaian Mem: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Pemakaian Mem: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Pemakaian CPU: %3d%%"
     IDS_STATUS_PROCESSES "Proses: %d"
     IDS_NOT_RESPONDING "Tidak Merespon"
index 421ac70..a3197c4 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "Scritture I/O Byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 69, 10
     CONTROL "Altro I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "Altro I/O  Bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "&Linea di comando", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Letture Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Scritture Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Altro Bytes"
+    IDS_TAB_COMMANDLINE "Linea di comando"
     IDS_MENU_SELECTCOLUMNS "&Selezione Colonne..."
     IDS_MENU_16BITTASK "&Mostra task 16-bit"
     IDS_MENU_WINDOWS "&Finestre"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Impossibile cambiare la Priorità"
     IDS_MSG_WARNINGCHANGEPRIORITY "ATTENZIONE: La modifica della classe di priorità può provocare\n effetti indesiderati compresa la perdita di dati o l'instabilità del sistema.\nSei sicuro di voler procedere?"
     IDS_MSG_TRAYICONCPUUSAGE "Uso CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Uso Mem: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Uso Mem: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Uso CPU: %3d%%"
     IDS_STATUS_PROCESSES "Processi: %d"
     IDS_NOT_RESPONDING "Non risponde"
index c4ce745..38be086 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "I/O 書き込みバイト数", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O その他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O その他のバイト数", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O 読み取りバイト数"
     IDS_TAB_IOWRITESBYTES "I/O 書き込みバイト数"
     IDS_TAB_IOOTHERBYTES "I/O その他のバイト数"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "列の選択(&S)..."
     IDS_MENU_16BITTASK "16 ビット タスクの表示(&S)"
     IDS_MENU_WINDOWS "ウィンドウ(&W)"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "優先度を変更できません"
     IDS_MSG_WARNINGCHANGEPRIORITY "警告: このプロセスの優先度クラスを変更すると、システムが不安定に\nなるなど、予期しない結果になることがあります。\n優先度クラスを変更しますか?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU 使用率: %d%%"
-    IDS_STATUS_MEMUSAGE "メモリ使用量: %dKB / %dKB"
+    IDS_STATUS_MEMUSAGE "メモリ使用量: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU 使用率: %3d%%"
     IDS_STATUS_PROCESSES "プロセス: %d"
     IDS_NOT_RESPONDING "応答なし"
index de3236b..b54eda8 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O 쓰기 바이트", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O 기타", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O 기타 바이트", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O 읽기 바이트"
     IDS_TAB_IOWRITESBYTES "I/O 쓰기 바이트"
     IDS_TAB_IOOTHERBYTES "I/O 기타 바이트"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "열 선택(&S)"
     IDS_MENU_16BITTASK "16비트 작업 보이기(&S)"
     IDS_MENU_WINDOWS "창(&W)"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "우선 순위를 바꿀 수 없음"
     IDS_MSG_WARNINGCHANGEPRIORITY "경고: 이 프로세스의 우선 순위 클래스를 변경하면 시스템 불안정을 포함하여\n예기치 않은 결과를 초래할 수도 있습니다.\n우선 순위 클래스를 변경하시겠습니까?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU 사용: %d%%"
-    IDS_STATUS_MEMUSAGE "메모리 사용: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "메모리 사용: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU 사용: %3d%%"
     IDS_STATUS_PROCESSES "프로세스: %d"
     IDS_NOT_RESPONDING "응답 없음"
index fcc775e..ddeb52a 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "I/O: geschreven bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 127, 100, 10
     CONTROL "I/O: overig", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 138, 100, 10
     CONTROL "I/O: overige bytes", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 149, 100, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 117, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O: gelezen bytes"
     IDS_TAB_IOWRITESBYTES "I/O: geschreven bytes"
     IDS_TAB_IOOTHERBYTES "I/O: overige bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Kolommen selecteren..."
     IDS_MENU_16BITTASK "16-&bits taken weergeven"
     IDS_MENU_WINDOWS "&Vensters"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Kan de prioriteit niet wijzigen"
     IDS_MSG_WARNINGCHANGEPRIORITY "Waarschuwing: het wijzigen van de prioriteitsklasse van dit proces\nkan ongewenste resultaten hebben, zoals een instabiel systeem. Weet u\nzeker dat u de prioriteitsklasse wilt wijzigen?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU-gebruik: %d%%"
-    IDS_STATUS_MEMUSAGE "Geheugengebruik: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Geheugengebruik: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU-gebruik: %3d%%"
     IDS_STATUS_PROCESSES "Processen: %d"
     IDS_NOT_RESPONDING "Reageert niet"
index f5c48ec..1e538c9 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "I/O skrevne byte", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 70, 10
     CONTROL "I/O Annet", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Andre byte", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Leser Byte"
     IDS_TAB_IOWRITESBYTES "I/O Skriver Byte"
     IDS_TAB_IOOTHERBYTES "I/O Annet Byte"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Velg kolonner..."
     IDS_MENU_16BITTASK "&Vis 16-biter oppgave"
     IDS_MENU_WINDOWS "&Vinduer"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Ikke i stand til endre prioritet"
     IDS_MSG_WARNINGCHANGEPRIORITY "ADVARSEL: Endring av prioritet klasse av denne prosess kan\nforutsake uønsket resultat inkluderer systemet kan bli ustabilt. Er du\nsikker på at du vil endre prioritet klassen?"
     IDS_MSG_TRAYICONCPUUSAGE "Prosessorbruk: %d%%"
-    IDS_STATUS_MEMUSAGE "Tildelt minne: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Tildelt minne: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Prosessorbruk: %3d%%"
     IDS_STATUS_PROCESSES "Prosesser: %d"
     IDS_NOT_RESPONDING "Ingen reaksjon"
index 7205b00..a3643c8 100644 (file)
@@ -323,6 +323,7 @@ BEGIN
     CONTROL "Zapisy We/Wy w bajtach", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "Inne We/Wy", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "Inne We/Wy w bajtach", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Linia poleceń", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -418,6 +419,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Odczyty We/Wy w bajtach"
     IDS_TAB_IOWRITESBYTES "Zapisy We/Wy w bajtach"
     IDS_TAB_IOOTHERBYTES "Inne We/Wy w bajtach"
+    IDS_TAB_COMMANDLINE "Linia poleceń"
     IDS_MENU_SELECTCOLUMNS "Wybierz &kolumny..."
     IDS_MENU_16BITTASK "Pokaż 16-&bitowe zadania"
     IDS_MENU_WINDOWS "O&kna"
@@ -441,7 +443,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Nie można zmienić priorytetu"
     IDS_MSG_WARNINGCHANGEPRIORITY "UWAGA: Zmiana priorytetu tego procesu może przynieść\nniepożądane skutki, w tym również niestabilność systemu.\nCzy na pewno chcesz zmieni priorytet?"
     IDS_MSG_TRAYICONCPUUSAGE "Użycie procesora: %d%%"
-    IDS_STATUS_MEMUSAGE "Pam. zadeklar.: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Pam. zadeklar.: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Użycie procesora: %3d%%"
     IDS_STATUS_PROCESSES "Procesy: %d"
     IDS_NOT_RESPONDING "Nie odpowiada"
index 7c123d7..fe940cf 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "Bytes de gravação de E/S", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 127, 97, 10
     CONTROL "Outras E/S", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 138, 47, 10
     CONTROL "Outros bytes de E/S", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 149, 77, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 123, 160, 95, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Bytes de leitura de E/S"
     IDS_TAB_IOWRITESBYTES "Bytes de gravação de E/S"
     IDS_TAB_IOOTHERBYTES "Outros Bytes de E/S"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Selecionar colunas..."
     IDS_MENU_16BITTASK "&Exibir tarefas de 16 bits"
     IDS_MENU_WINDOWS "&Janelas"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Não é possível alterar a prioridade"
     IDS_MSG_WARNINGCHANGEPRIORITY "AVISO: a alteração da classe de prioridade do processo\npode causar efeitos indesejáveis, inclusive a instabilidade do sistema. Tem\ncerteza de que deseja alterar a classe de prioridade?"
     IDS_MSG_TRAYICONCPUUSAGE "Uso de CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Uso de Memória: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Uso de Memória: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Uso de CPU: %3d%%"
     IDS_STATUS_PROCESSES "Processo: %d"
     IDS_NOT_RESPONDING "Não respondendo"
index e6c2665..60deced 100644 (file)
@@ -321,6 +321,7 @@ BEGIN
     CONTROL "In/Ex octeți scriși", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 127, 110, 10
     CONTROL "In/Ex altceva", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 138, 110, 10
     CONTROL "In/Ex octeți din altceva", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 149, 110, 10
+    CONTROL "&Linia de comandă", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 120, 160, 65, 10
 END
 
 /* String Tables */
@@ -416,6 +417,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "In/Ex octeți citiți"
     IDS_TAB_IOWRITESBYTES "In/Ex octeți scriși"
     IDS_TAB_IOOTHERBYTES "In/Ex octeți din altceva"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Selectare coloane…"
     IDS_MENU_16BITTASK "Afișează activități pe 16 &biți"
     IDS_MENU_WINDOWS "F&erestre"
@@ -439,7 +441,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Nu se poate schimba prioritatea"
     IDS_MSG_WARNINGCHANGEPRIORITY "Schimbarea priorității poate duce la efecte colaterale\nprecum instabilitatea sistemului.\nSigur doriți schimbarea priorității procesului?"
     IDS_MSG_TRAYICONCPUUSAGE "Utilizare procesor: %d%%"
-    IDS_STATUS_MEMUSAGE "Utilizare memorie: %dko/%dko"
+    IDS_STATUS_MEMUSAGE "Utilizare memorie: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Utilizare procesor: %3d%%"
     IDS_STATUS_PROCESSES "Procese: %d"
     IDS_NOT_RESPONDING "EXECUȚIE ANORMALĂ"
index 4fc295e..f001896 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "Записано байт", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "Прочий ввод-вывод", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 90, 10
     CONTROL "Прочих байт при вводе-выводе", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 122, 10
+    CONTROL "Коммандная строка", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 90, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Прочитано байт"
     IDS_TAB_IOWRITESBYTES "Записано байт"
     IDS_TAB_IOOTHERBYTES "Прочих байт при вводе-выводе"
+    IDS_TAB_COMMANDLINE "Коммандная строка"
     IDS_MENU_SELECTCOLUMNS "В&ыбрать столбцы..."
     IDS_MENU_16BITTASK "&Отображать 16-разрядные задачи"
     IDS_MENU_WINDOWS "&Окна"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Не удалось изменить приоритет"
     IDS_MSG_WARNINGCHANGEPRIORITY "ВНИМАНИЕ: Изменение приоритета этого процесса может привести к нежелательным результатам, в том числе к нестабильной работе системы.\nВы действительно хотите изменить класс приоритета?"
     IDS_MSG_TRAYICONCPUUSAGE "Загрузка ЦП: %d%%"
-    IDS_STATUS_MEMUSAGE "Выделение памяти: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Выделение памяти: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Загрузка ЦП: %3d%%"
     IDS_STATUS_PROCESSES "Процессов: %d"
     IDS_NOT_RESPONDING "Не отвечает"
index c7d3268..0598c83 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "Vstup a výstup - zapísané bajty", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 127, 112, 10
     CONTROL "Vstup a výstup - iné", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 138, 77, 10
     CONTROL "Vstup a výstup - iné bajty", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 149, 97, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 130, 160, 95, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Vstup a výstup - prečítané bajty"
     IDS_TAB_IOWRITESBYTES "Vstup a výstup - zapísané bajty"
     IDS_TAB_IOOTHERBYTES "Vstup a výstup - iné bajty"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Vybrať stĺpce..."
     IDS_MENU_16BITTASK "&Zobraziť 16-bitové úlohy"
     IDS_MENU_WINDOWS "&Okna"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Priorita sa nedá zmeniť."
     IDS_MSG_WARNINGCHANGEPRIORITY "UPOZORNENIE: Zmena triedy priority procesu môže mať\nnežiadúce dôsledky vrátane nestability systému.\nNaozaj chcete zmeniť triedu priority procesu?"
     IDS_MSG_TRAYICONCPUUSAGE "Využitie procesora: %d%%"
-    IDS_STATUS_MEMUSAGE "Využitá pamäť: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Využitá pamäť: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Využitie procesora: %3d%%"
     IDS_STATUS_PROCESSES "Procesy: %d"
     IDS_NOT_RESPONDING "Neodpovedá"
index 5c1c812..5d6196e 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "Shkruan I/O Bytes", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O te tjere", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O Byte te tjere", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Lexo Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Shkruaj Bytes"
     IDS_TAB_IOOTHERBYTES "I/O te tjere Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "Zgjidh kolonat..."
     IDS_MENU_16BITTASK "&Shfaq 16-bit tasks"
     IDS_MENU_WINDOWS "Dritare"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "E pamundur ndryshimi i prioritetit"
     IDS_MSG_WARNINGCHANGEPRIORITY "KUJDES: Ndryshimi i klases se prioritetit te ketij procesi mund te \nsjell rrezultate te padeshirushme ne stabilitetin e sistemit. Jeni i sigurt\nper ndryshimin e klases se prioriteteve?"
     IDS_MSG_TRAYICONCPUUSAGE "Perdorimi i CPU: %d%%"
-    IDS_STATUS_MEMUSAGE "Perdorimi i  Mem: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Perdorimi i  Mem: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Perdorimi i CPU: %3d%%"
     IDS_STATUS_PROCESSES "Proceset: %d"
     IDS_NOT_RESPONDING "Nuk pergjigjet"
index 6d4ed2c..4f85436 100644 (file)
@@ -317,6 +317,7 @@ BEGIN
     CONTROL "I/O, &antal tecken skrivna", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 127, 113, 10
     CONTROL "And&ra I/O åtgärder", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 138, 89, 10
     CONTROL "Antal tecken, andra I/O åtgärder", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 149, 141, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 133, 160, 95, 10
 END
 
 /* String Tables */
@@ -412,6 +413,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Antal tecken lästa, andra I/O-åtgärder"
     IDS_TAB_IOWRITESBYTES "Antal tecken skrivna, andra I/O-åtgärder"
     IDS_TAB_IOOTHERBYTES "I/O, antal tecken"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Välj kolumner..."
     IDS_MENU_16BITTASK "&Visa 16-bitsprocesser"
     IDS_MENU_WINDOWS "&Fönster"
@@ -435,7 +437,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Kunde inte ändra prioritet"
     IDS_MSG_WARNINGCHANGEPRIORITY "VARNING: Ändring av prioritetsklassen hos den här processen kan\norsaka oönskade effekter och påverka systemets stabilitet. Är du\nsäker på att du vill ändra prioritetsklassen?"
     IDS_MSG_TRAYICONCPUUSAGE "Processoranvändning: %d%%"
-    IDS_STATUS_MEMUSAGE "Minnesanv: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Minnesanv: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Processoranv: %3d%%"
     IDS_STATUS_PROCESSES "Processer: %d"
     IDS_NOT_RESPONDING "Svarar inte"
index 1e56cbc..41deace 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "G/Ç Yazma Çokluları", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "G/Ç Başka", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "G/Ç Başka Çoklular", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "G/Ç Okuma Çokluları"
     IDS_TAB_IOWRITESBYTES "G/Ç Yazma Çokluları"
     IDS_TAB_IOOTHERBYTES "G/Ç Başka Çoklular"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "&Dikeçleri Seç..."
     IDS_MENU_16BITTASK "&16 Bitlik Görevleri Göster"
     IDS_MENU_WINDOWS "&Pencereler"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Önceliğin Değiştirilememesi"
     IDS_MSG_WARNINGCHANGEPRIORITY "UYARI: Bu işlemin öncelik sınıfının değiştirilmesi, dizge\nkararsızlığını içeren istenmeyen sonuçlara neden olabilir. Öncelik \nsınıfını değiştirmek istediğinizden emin misiniz?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU Kullanımı: %%%d"
-    IDS_STATUS_MEMUSAGE "Bellek Kullanımı: %d KB / %d KB"
+    IDS_STATUS_MEMUSAGE "Bellek Kullanımı: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU Kullanımı: %%%3d"
     IDS_STATUS_PROCESSES "İşlem: %d"
     IDS_NOT_RESPONDING "Yanıt Vermiyor"
index cb6febe..370b382 100644 (file)
@@ -315,6 +315,7 @@ BEGIN
     CONTROL "Записано байтів", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 67, 10
     CONTROL "Інший ввід-вивід", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 71, 10
     CONTROL "Інших байтів при вводі-виводі", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 114, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -410,6 +411,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "Прочитано байтів"
     IDS_TAB_IOWRITESBYTES "Записано байтів"
     IDS_TAB_IOOTHERBYTES "Інших байтів під час вводу-виводу"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "В&ибрати стовпці..."
     IDS_MENU_16BITTASK "&Відображати 16-розрядні завдання"
     IDS_MENU_WINDOWS "В&ікна"
@@ -433,7 +435,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Неможливо змінити пріоритет"
     IDS_MSG_WARNINGCHANGEPRIORITY "УВАГА! Зміна класу пріоритету цього процесу може призвести до \nнебажаних наслідків, включаючи нестабільну роботу \nсистеми.  Ви дійсно бажаєте змінити пріоритет класу?"
     IDS_MSG_TRAYICONCPUUSAGE "Використання ЦП: %d%%"
-    IDS_STATUS_MEMUSAGE "Пам'ять: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "Пам'ять: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "Використання ЦП: %3d%%"
     IDS_STATUS_PROCESSES "Процесів: %d"
     IDS_NOT_RESPONDING "Не відповідає"
index 54ba7e4..d42e0dd 100644 (file)
@@ -321,6 +321,7 @@ BEGIN
     CONTROL "I/O 写入字节", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "I/O 其他", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "I/O 其他字节", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -416,6 +417,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O Read Bytes"
     IDS_TAB_IOWRITESBYTES "I/O Write Bytes"
     IDS_TAB_IOOTHERBYTES "I/O Other Bytes"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "选择列(&S)..."
     IDS_MENU_16BITTASK "显示 16 位任务(&S)"
     IDS_MENU_WINDOWS "窗口(&W)"
@@ -439,7 +441,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "Unable to Change Priority"
     IDS_MSG_WARNINGCHANGEPRIORITY "WARNING: Changing the priority class of this process may\ncause undesired results including system instability. Are you\nsure you want to change the priority class?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情况: %d%%"
-    IDS_STATUS_MEMUSAGE "内存使用情况: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "内存使用情况: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU 使用情况: %3d%%"
     IDS_STATUS_PROCESSES "處理程序: %d"
     IDS_NOT_RESPONDING "没有回应"
index 51c54f8..eb6ee18 100644 (file)
@@ -323,6 +323,7 @@ BEGIN
     CONTROL "I/O 寫入位元組", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 127, 65, 10
     CONTROL "其他 I/O", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 138, 46, 10
     CONTROL "其他 I/O 位元組", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 149, 65, 10
+    CONTROL "Command &Line", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 107, 160, 65, 10
 END
 
 /* String Tables */
@@ -418,6 +419,7 @@ BEGIN
     IDS_TAB_IOREADBYTES "I/O 讀取位元組"
     IDS_TAB_IOWRITESBYTES "I/O 寫入位元組"
     IDS_TAB_IOOTHERBYTES "其他 I/O 位元組"
+    IDS_TAB_COMMANDLINE "Command Line"
     IDS_MENU_SELECTCOLUMNS "選擇列(&S)..."
     IDS_MENU_16BITTASK "顯示 16 位工作(&S)"
     IDS_MENU_WINDOWS "窗口(&W)"
@@ -441,7 +443,7 @@ BEGIN
     IDS_MSG_UNABLECHANGEPRIORITY "無法更改優先順序"
     IDS_MSG_WARNINGCHANGEPRIORITY "警告: 更改此程序的優先順序可能導致系統不穩定。\n你是否確定要更改優先順序?"
     IDS_MSG_TRAYICONCPUUSAGE "CPU 使用情況: %d%%"
-    IDS_STATUS_MEMUSAGE "記憶體使用情況: %dK / %dK"
+    IDS_STATUS_MEMUSAGE "記憶體使用情況: %s / %s (%d%%)"
     IDS_STATUS_CPUUSAGE "CPU 使用情況: %3d%%"
     IDS_STATUS_PROCESSES "處理程序: %d"
     IDS_NOT_RESPONDING "沒有回應"
index ac23b16..3ecb0d8 100644 (file)
@@ -3,7 +3,8 @@
  *
  *  perfdata.c
  *
- *  Copyright (C) 1999 - 2001  Brian Palmer  <brianp@reactos.org>
+ *  Copyright (C) 1999 - 2001  Brian Palmer                <brianp@reactos.org>
+ *  Copyright (C)        2014  Ismael Ferreras Morezuelas  <swyterzone+ros@gmail.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
 #include <aclapi.h>
 
 #define NTOS_MODE_USER
+#include <ndk/psfuncs.h>
 #include <ndk/exfuncs.h>
 
 CRITICAL_SECTION                           PerfDataCriticalSection;
 PPERFDATA                                  pPerfDataOld = NULL;    /* Older perf data (saved to establish delta values) */
-PPERFDATA                                  pPerfData = NULL;    /* Most recent copy of perf data */
+PPERFDATA                                  pPerfData = NULL;       /* Most recent copy of perf data */
 ULONG                                      ProcessCountOld = 0;
 ULONG                                      ProcessCount = 0;
 double                                     dbIdleTime;
@@ -46,6 +48,10 @@ SYSTEM_HANDLE_INFORMATION                  SystemHandleInfo;
 PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION  SystemProcessorTimeInfo = NULL;
 PSID                                       SystemUserSid = NULL;
 
+PCMD_LINE_CACHE global_cache = NULL;
+
+#define CMD_LINE_MIN(a, b) (a < b ? a - sizeof(WCHAR) : b)
+
 typedef struct _SIDTOUSERNAME
 {
     LIST_ENTRY List;
@@ -371,7 +377,7 @@ void PerfDataRefresh(void)
         pPerfData[Idx].HandleCount = pSPI->HandleCount;
         pPerfData[Idx].ThreadCount = pSPI->NumberOfThreads;
         pPerfData[Idx].SessionId = pSPI->SessionId;
-        pPerfData[Idx].UserName[0] = L'\0';
+        pPerfData[Idx].UserName[0] = UNICODE_NULL;
         pPerfData[Idx].USERObjectCount = 0;
         pPerfData[Idx].GDIObjectCount = 0;
         ProcessUser = SystemUserSid;
@@ -472,7 +478,7 @@ ULONG PerfDataGetProcessorSystemUsage(void)
     return (ULONG)dbKernelTime;
 }
 
-BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, int nMaxCount)
+BOOL PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount)
 {
     BOOL  bSuccessful;
 
@@ -504,7 +510,7 @@ ULONG PerfDataGetProcessId(ULONG Index)
     return ProcessId;
 }
 
-BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
+BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount)
 {
     BOOL  bSuccessful;
 
@@ -522,6 +528,130 @@ BOOL PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, int nMaxCount)
     return bSuccessful;
 }
 
+BOOL PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount)
+{
+    static const LPWSTR ellipsis = L"...";
+
+    PROCESS_BASIC_INFORMATION pbi = {0};
+    UNICODE_STRING CommandLineStr = {0};
+
+    PVOID ProcessParams = NULL;
+    HANDLE hProcess;
+    ULONG ProcessId;
+
+    NTSTATUS Status;
+    BOOL result;
+
+    PCMD_LINE_CACHE new_entry;
+    LPWSTR new_string;
+
+    PCMD_LINE_CACHE cache = global_cache;
+
+    /* [A] Search for a string already in cache? If so, use it */
+    while (cache && cache->pnext != NULL)
+    {
+        if (cache->idx == Index && cache->str != NULL)
+        {
+            /* Found it. Use it, and add some ellipsis at the very end to make it cute */
+            wcsncpy(lpCommandLine, cache->str, CMD_LINE_MIN(nMaxCount, cache->len));
+            wcscpy(lpCommandLine + CMD_LINE_MIN(nMaxCount, cache->len) - sizeof(ellipsis)/sizeof(WCHAR), ellipsis);
+            return TRUE;
+        }
+
+        cache = cache->pnext;
+    }
+
+    /* [B] We don't; let's allocate and load a value from the process mem... and cache it */
+    ProcessId = PerfDataGetProcessId(Index);
+
+    /* Default blank command line in case things don't work out */
+    wcsncpy(lpCommandLine, L"", nMaxCount);
+
+    /* Ask for a handle to the target process so that we can read its memory and query stuff */
+    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessId);
+    if (!hProcess)
+        goto cleanup;
+
+    /* First off, get the ProcessEnvironmentBlock location in that process' address space */
+    Status = NtQueryInformationProcess(hProcess, 0, &pbi, sizeof(pbi), NULL);
+    if (!NT_SUCCESS(Status))
+        goto cleanup;
+
+    /* Then get the PEB.ProcessParameters member pointer */
+    result = ReadProcessMemory(hProcess,
+                               (PVOID)((ULONG_PTR)pbi.PebBaseAddress + FIELD_OFFSET(PEB, ProcessParameters)),
+                               &ProcessParams,
+                               sizeof(ProcessParams),
+                               NULL);
+    if (!result)
+        goto cleanup;
+
+    /* Then copy the PEB->ProcessParameters.CommandLine member
+       to get the pointer to the string buffer and its size */
+    result = ReadProcessMemory(hProcess,
+                               (PVOID)((ULONG_PTR)ProcessParams + FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, CommandLine)),
+                               &CommandLineStr,
+                               sizeof(CommandLineStr),
+                               NULL);
+    if (!result)
+        goto cleanup;
+
+    /* Allocate the next cache entry and its accompanying string in one go */
+    new_entry = HeapAlloc(GetProcessHeap(),
+                          HEAP_ZERO_MEMORY,
+                          sizeof(CMD_LINE_CACHE) + CommandLineStr.Length + sizeof(UNICODE_NULL));
+    if (!new_entry)
+        goto cleanup;
+
+    new_string = (LPWSTR)((ULONG_PTR)new_entry + sizeof(CMD_LINE_CACHE));
+
+    /* Bingo, the command line should be stored there,
+       copy the string from the other process */
+    result = ReadProcessMemory(hProcess,
+                               CommandLineStr.Buffer,
+                               new_string,
+                               CommandLineStr.Length,
+                               NULL);
+    if (!result)
+    {
+        /* Weird, after sucessfully reading the mem of that process
+           various times it fails now, forget it and bail out */
+        HeapFree(GetProcessHeap(), 0, new_entry);
+        goto cleanup;
+    }
+
+    /* Add our pointer to the cache... */
+    new_entry->idx = Index;
+    new_entry->str = new_string;
+    new_entry->len = CommandLineStr.Length;
+
+    if (!global_cache)
+        global_cache = new_entry;
+    else
+        cache->pnext = new_entry;
+
+    /* ... and print the buffer for the first time */
+    wcsncpy(lpCommandLine, new_string, CMD_LINE_MIN(nMaxCount, CommandLineStr.Length));
+
+cleanup:
+    if (hProcess) CloseHandle(hProcess);
+    return TRUE;
+}
+
+void PerfDataDeallocCommandLineCache()
+{
+    PCMD_LINE_CACHE cache = global_cache;
+    PCMD_LINE_CACHE cache_old;
+
+    while (cache && cache->pnext != NULL)
+    {
+        cache_old = cache;
+        cache = cache->pnext;
+
+        HeapFree(GetProcessHeap(), 0, cache_old);
+    }
+}
+
 ULONG PerfDataGetSessionId(ULONG Index)
 {
     ULONG  SessionId;
index 6bb7005..51e11f4 100644 (file)
@@ -55,19 +55,31 @@ typedef struct _PERFDATA
        LARGE_INTEGER           KernelTime;
 } PERFDATA, *PPERFDATA;
 
+typedef struct _CMD_LINE_CACHE
+{
+     DWORD idx;
+    LPWSTR str;
+     ULONG len;
+    struct _CMD_LINE_CACHE* pnext;
+} CMD_LINE_CACHE, *PCMD_LINE_CACHE;
+
 BOOL   PerfDataInitialize(void);
 void   PerfDataUninitialize(void);
 void   PerfDataRefresh(void);
 
-BOOL    PerfDataGet(ULONG Index, PPERFDATA *lppData);
-ULONG   PerfDataGetProcessIndex(ULONG pid);
+BOOL   PerfDataGet(ULONG Index, PPERFDATA *lppData);
+ULONG  PerfDataGetProcessIndex(ULONG pid);
 ULONG  PerfDataGetProcessCount(void);
 ULONG  PerfDataGetProcessorUsage(void);
 ULONG  PerfDataGetProcessorSystemUsage(void);
 
-BOOL   PerfDataGetImageName(ULONG Index, LPTSTR lpImageName, int nMaxCount);
+BOOL   PerfDataGetImageName(ULONG Index, LPWSTR lpImageName, ULONG nMaxCount);
 ULONG  PerfDataGetProcessId(ULONG Index);
-BOOL   PerfDataGetUserName(ULONG Index, LPTSTR lpUserName, int nMaxCount);
+BOOL   PerfDataGetUserName(ULONG Index, LPWSTR lpUserName, ULONG nMaxCount);
+
+BOOL   PerfDataGetCommandLine(ULONG Index, LPWSTR lpCommandLine, ULONG nMaxCount);
+void   PerfDataDeallocCommandLineCache();
+
 ULONG  PerfDataGetSessionId(ULONG Index);
 ULONG  PerfDataGetCPUUsage(ULONG Index);
 LARGE_INTEGER  PerfDataGetCPUTime(ULONG Index);
index b675312..84b4923 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #include "precomp.h"
+#include <shlwapi.h>
 
 TGraphCtrl PerformancePageCpuUsageHistoryGraph;
 TGraphCtrl PerformancePageMemUsageHistoryGraph;
@@ -311,20 +312,20 @@ void RefreshPerformancePage(void)
 
 DWORD WINAPI PerformancePageRefreshThread(void *lpParameter)
 {
-    ULONG  CommitChargeTotal;
-    ULONG  CommitChargeLimit;
-    ULONG  CommitChargePeak;
+    ULONGLONG  CommitChargeTotal;
+    ULONGLONG  CommitChargeLimit;
+    ULONGLONG  CommitChargePeak;
 
     ULONG  CpuUsage;
     ULONG  CpuKernelUsage;
 
-    ULONG  KernelMemoryTotal;
-    ULONG  KernelMemoryPaged;
-    ULONG  KernelMemoryNonPaged;
+    ULONGLONG  KernelMemoryTotal;
+    ULONGLONG  KernelMemoryPaged;
+    ULONGLONG  KernelMemoryNonPaged;
 
-    ULONG  PhysicalMemoryTotal;
-    ULONG  PhysicalMemoryAvailable;
-    ULONG  PhysicalMemorySystemCache;
+    ULONGLONG  PhysicalMemoryTotal;
+    ULONGLONG  PhysicalMemoryAvailable;
+    ULONGLONG  PhysicalMemorySystemCache;
 
     ULONG  TotalHandles;
     ULONG  TotalThreads;
@@ -342,6 +343,9 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter)
         int nBarsUsed1;
         int nBarsUsed2;
 
+        WCHAR szChargeTotalFormat[256];
+        WCHAR szChargeLimitFormat[256];
+
         /*  Wait for an the event or application close */
         if (GetMessage(&msg, NULL, 0, 0) <= 0)
             return 0;
@@ -353,14 +357,25 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter)
              */
             CommitChargeTotal = PerfDataGetCommitChargeTotalK();
             CommitChargeLimit = PerfDataGetCommitChargeLimitK();
-            CommitChargePeak = PerfDataGetCommitChargePeakK();
+            CommitChargePeak  = PerfDataGetCommitChargePeakK();
             _ultow(CommitChargeTotal, Text, 10);
             SetWindowTextW(hPerformancePageCommitChargeTotalEdit, Text);
             _ultow(CommitChargeLimit, Text, 10);
             SetWindowTextW(hPerformancePageCommitChargeLimitEdit, Text);
             _ultow(CommitChargePeak, Text, 10);
             SetWindowTextW(hPerformancePageCommitChargePeakEdit, Text);
-            wsprintfW(Text, szMemUsage, CommitChargeTotal, CommitChargeLimit);
+
+            StrFormatByteSizeW(CommitChargeTotal * 1024,
+                               szChargeTotalFormat,
+                               sizeof(szChargeTotalFormat));
+
+            StrFormatByteSizeW(CommitChargeLimit * 1024,
+                               szChargeLimitFormat,
+                               sizeof(szChargeLimitFormat));
+
+            wsprintfW(Text, szMemUsage, szChargeTotalFormat, szChargeLimitFormat,
+                      (CommitChargeLimit ? ((CommitChargeTotal * 100) / CommitChargeLimit) : 0));
+
             SendMessageW(hStatusWnd, SB_SETTEXT, 2, (LPARAM)Text);
 
             /*
index 40739e3..35a7b32 100644 (file)
@@ -52,9 +52,9 @@ void AddProcess(ULONG Index);
 void UpdateProcesses();
 void gethmsfromlargeint(LARGE_INTEGER largeint, DWORD *dwHours, DWORD *dwMinutes, DWORD *dwSeconds);
 void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam);
-void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount);
+void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount);
 void ProcessPageShowContextMenu(DWORD dwProcessId);
-BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount);
+BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount);
 DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
 int ProcessRunning(ULONG ProcessId);
 
@@ -245,7 +245,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
             Index = PerfDataGetProcessIndex(pData->ProcessId);
             ColumnIndex = pnmdi->item.iSubItem;
 
-            PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax);
+            PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, (ULONG)pnmdi->item.cchTextMax);
 
             break;
 
@@ -290,7 +290,7 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
     }
 }
 
-void CommaSeparateNumberString(LPWSTR strNumber, int nMaxCount)
+void CommaSeparateNumberString(LPWSTR strNumber, ULONG nMaxCount)
 {
     WCHAR  temp[260];
     UINT   i, j, k;
@@ -530,7 +530,7 @@ void AddProcess(ULONG Index)
     }
 }
 
-BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCount)
+BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, ULONG nMaxCount)
 {
     IO_COUNTERS    iocounters;
     LARGE_INTEGER  time;
@@ -541,6 +541,8 @@ BOOL PerfDataGetText(ULONG Index, ULONG ColumnIndex, LPTSTR lpText, int nMaxCoun
         wsprintfW(lpText, L"%lu", PerfDataGetProcessId(Index));
     if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME)
         PerfDataGetUserName(Index, lpText, nMaxCount);
+    if (ColumnDataHints[ColumnIndex] == COLUMN_COMMANDLINE)
+        PerfDataGetCommandLine(Index, lpText, nMaxCount);
     if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID)
         wsprintfW(lpText, L"%lu", PerfDataGetSessionId(Index));
     if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE)
@@ -753,6 +755,12 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
         PerfDataGetUserName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
         ret = _wcsicmp(text1, text2);
     }
+    else if (TaskManagerSettings.SortColumn == COLUMN_COMMANDLINE)
+    {
+        PerfDataGetCommandLine(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
+        PerfDataGetCommandLine(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
+        ret = _wcsicmp(text1, text2);
+    }
     else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)
     {
         l1 = PerfDataGetSessionId(IndexParam1);
index 785193b..8aca1bd 100644 (file)
 #define IDC_IOOTHERBYTES                 1047
 #define IDC_CPU_USAGE_GRAPH              1047
 #define IDC_CPU29                        1048
+#define IDC_COMMANDLINE                  1048
 #define IDC_MEM_USAGE_GRAPH2             1048
 #define IDC_MEM_USAGE_GRAPH              1048
 #define IDC_CPU30                        1049
 #define IDS_TAB_IOREADBYTES   337
 #define IDS_TAB_IOWRITESBYTES 338
 #define IDS_TAB_IOOTHERBYTES  339
+#define IDS_TAB_COMMANDLINE   368
 
 #define IDS_MENU_SELECTCOLUMNS   340
 #define IDS_MENU_16BITTASK       341
index 2eb384b..1b8a4b0 100644 (file)
@@ -480,6 +480,8 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
             TaskManagerSettings.Maximized = TRUE;
         else
             TaskManagerSettings.Maximized = FALSE;
+        /* Get rid of the allocated command line cache, if any */
+        PerfDataDeallocCommandLineCache();
         return DefWindowProcW(hDlg, message, wParam, lParam);
 
     case WM_TIMER:
@@ -1140,7 +1142,7 @@ LPWSTR GetLastErrorText(LPWSTR lpszBuf, DWORD dwSize)
     DWORD  dwRet;
     LPWSTR lpszTemp = NULL;
 
-    dwRet = FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY,
+    dwRet = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
                            NULL,
                            GetLastError(),
                            LANG_NEUTRAL,
index b78cff4..237dbf4 100644 (file)
@@ -7,7 +7,7 @@ STRINGTABLE
 BEGIN
     IDS_APPTITLE "ReactOS - Velkommen"
     IDS_DEFAULTTOPICTITLE "ReactOS"
-    IDS_DEFAULTTOPICDESC "Velkommen til ReactOs operativ System.\n\nKlik på et emne til venstre."
+    IDS_DEFAULTTOPICDESC "Velkommen til ReactOS operativ System.\n\nKlik på et emne til venstre."
 //    IDS_CHECKTEXT "Vis denne dialog igen ved opstart"
 //    IDS_CLOSETEXT "Afslut"
 END
@@ -46,7 +46,7 @@ END
 STRINGTABLE
 BEGIN
     IDS_TOPICDESC0 "Opret en ny ReactOS installation på din computer eller opgradere en eksisterende installation."
-    IDS_TOPICDESC1 "Gennemse Reactos Installations Cdrom"
+    IDS_TOPICDESC1 "Gennemse ReactOS Installations Cdrom"
     IDS_TOPICDESC2 "Klik på Afslut for at lukke."
 //    IDS_TOPICDESC3 "Topic description 3.\n\nDescribe topic 3 here."
 //    IDS_TOPICDESC4 "Topic description 4.\n\nDescribe topic 4 here."
index c189bd6..d9c4b13 100644 (file)
@@ -411,7 +411,7 @@ VERIFY [ON | OFF]\n\n\
 Skriv VERIFY uten parametre for å vise gjeldende VERIFY innstillinger.\n"
     STRING_VERIFY_HELP2 "VERIFY er %s.\n"
     STRING_VERIFY_HELP3 "Må spesifisere ON eller OFF."
-    STRING_VERSION_HELP1 "Vis Reactos versjonen\n\n\
+    STRING_VERSION_HELP1 "Vis ReactOS versjonen\n\n\
 VER [/C][/R][/W]\n\n\
   /C  Vis anerkjennelse.\n\
   /R  Vis videreformidlingsinformasjon.\n\
index ecdd380..da739c6 100644 (file)
@@ -411,7 +411,7 @@ VERIFY [ON | OFF]\n\n\
 Skriv VERIFY uten parametre för att visa aktuell VERIFY inställninar.\n"
     STRING_VERIFY_HELP2 "VERIFY är %s.\n"
     STRING_VERIFY_HELP3 "Må ange ON eller OFF."
-    STRING_VERSION_HELP1 "Vis Reactos versjonen\n\n\
+    STRING_VERSION_HELP1 "Vis ReactOS versjonen\n\n\
 VER [/C][/R][/W]\n\n\
   /C  Vis anerkjennelse.\n\
   /R  Vis videreformidlingsinformasjon.\n\
index 9c6d756..d16cecc 100644 (file)
@@ -39,7 +39,7 @@ BEGIN
     BEGIN
         MENUITEM "Åîåñåýíçóç &FAQ...", ID_EXPLORER_FAQ
         MENUITEM "&Ó÷åôéêÜ ìå ôïí åîåñåõíçôÞ", ID_ABOUT_EXPLORER
-        MENUITEM "&Ó÷åôéêÜ ìå ôï Reactos", ID_ABOUT_WINDOWS
+        MENUITEM "&Ó÷åôéêÜ ìå ôï ReactOS", ID_ABOUT_WINDOWS
     END
 END
 
@@ -102,7 +102,7 @@ BEGIN
     BEGIN
         MENUITEM "Åîåñåýíçóç &FAQ", ID_EXPLORER_FAQ
         MENUITEM "&Ó÷åôéêÜ ìå ôïí åîåñåõíçôÞ", ID_ABOUT_EXPLORER
-        MENUITEM "&Ó÷åôéêÜ ìå ôï Reactos", ID_ABOUT_WINDOWS
+        MENUITEM "&Ó÷åôéêÜ ìå ôï ReactOS", ID_ABOUT_WINDOWS
     END
 END
 
index 58746d4..086e3e3 100644 (file)
@@ -232,7 +232,7 @@ END
 
 STRINGTABLE
 BEGIN
-    IDS_TITLE "Reactos 浏览器"
+    IDS_TITLE "ReactOS 浏览器"
     IDS_START "开始"
     IDS_LOGOFF "注销..."
     IDS_SHUTDOWN "关闭..."
index 4e606a2..3070e7c 100644 (file)
@@ -48,7 +48,7 @@ CAPTION "
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "High Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+    LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 0b29558..3e174a6 100644 (file)
@@ -48,7 +48,7 @@ CAPTION "Zobrazení"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Funkce Vysoký kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Vyberte tuto možnost pokud chcete, aby Reactos používal barvy a písma určené pro snadnou čitelnost.",
+    LTEXT "Vyberte tuto možnost pokud chcete, aby ReactOS používal barvy a písma určené pro snadnou čitelnost.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Použít funkci Vysoký kontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Nastavení", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index c76cd28..b0d8a6e 100644 (file)
@@ -11,7 +11,7 @@ BEGIN
     AUTOCHECKBOX "×ñÞóç &Áóýã÷ñïíùí ðëÞêôñùí", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Ñõèìßóåéò", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "Ößëôñï ðëÞêôñùí", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "×ñçóéìïðïéÞóôå ôï Ößëôñï ðëÞêôñùí, áí èÝëåôå ôï Reactos íá áãíïÞóåé ôçí åðáíÜëçøç ÷áñáêôÞñùí, Þ áí ìåéþóåé ôï ñõèìü åðáíÜëçøçò.",
+    LTEXT "×ñçóéìïðïéÞóôå ôï Ößëôñï ðëÞêôñùí, áí èÝëåôå ôï ReactOS íá áãíïÞóåé ôçí åðáíÜëçøç ÷áñáêôÞñùí, Þ áí ìåéþóåé ôï ñõèìü åðáíÜëçøçò.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "×ñÞóç &Ößëôñïõ ðëÞêôñùí", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Ñ&õèìßóåéò", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -30,7 +30,7 @@ CAPTION "
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "ÏðôéêÞ Ýíäåéîç Þ÷ïõ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "×ñçóéìïðïéÞóôå ôçí ÏðôéêÞ Ýíäåéîç Þ÷ïõ, áí èÝëåôå ôï Reactos íá ÷ñçóéìïðïéåß ïðôéêÝò åíäåßîåéò üôáí ôï óýóôçìÜ óáò ðáñÜãåé Þ÷ï.",
+    LTEXT "×ñçóéìïðïéÞóôå ôçí ÏðôéêÞ Ýíäåéîç Þ÷ïõ, áí èÝëåôå ôï ReactOS íá ÷ñçóéìïðïéåß ïðôéêÝò åíäåßîåéò üôáí ôï óýóôçìÜ óáò ðáñÜãåé Þ÷ï.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "×ñÞóç ÏðôéêÞò Ýíäåéîçò Þ÷ïõ", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "ÅðéëïãÞ ïðôéêÞò ðñïåéäïðïßçóçò", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -48,7 +48,7 @@ CAPTION "
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "ÁíôéèÝóåéò", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "×ñçóéìïðïéÞóôå áõôÞí ôçí åðéëïãÞ, áí èÝëåôå ôï Reactos íá ÷ñçóéìïðïéåß ÷ñþìáìôá êáé ãñáììáôïóåéñÝò ó÷åäéáóìÝíá ãéá åýêïëç áíÜãíùóç.",
+    LTEXT "×ñçóéìïðïéÞóôå áõôÞí ôçí åðéëïãÞ, áí èÝëåôå ôï ReactOS íá ÷ñçóéìïðïéåß ÷ñþìáìôá êáé ãñáììáôïóåéñÝò ó÷åäéáóìÝíá ãéá åýêïëç áíÜãíùóç.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Ìå áíôéèÝóåéò", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Ñõèìßóåéò", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 0e80a95..0a48229 100644 (file)
@@ -11,7 +11,7 @@ BEGIN
     AUTOCHECKBOX "&Use StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Settings", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+    LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "S&ettings", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -30,7 +30,7 @@ CAPTION "Sound"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+    LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -48,7 +48,7 @@ CAPTION "Display"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "High Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+    LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 6ff58a0..e281e88 100644 (file)
@@ -13,7 +13,7 @@ BEGIN
     AUTOCHECKBOX "Utilizar &StickyKeys ", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Configuración", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Use FilterKeys si desea que Reactos omita la pulsaciones repetidas o breves, o reducir la velocidad de repetición.",
+    LTEXT "Use FilterKeys si desea que ReactOS omita la pulsaciones repetidas o breves, o reducir la velocidad de repetición.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Utilizar &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Co&nfiguración", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -32,7 +32,7 @@ CAPTION "Sonido"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Vigilante Auditivo ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Use el Vigilante Auditivo si desea que Reactos genere avisos visuales cuando el sistema emita un sonido.",
+    LTEXT "Use el Vigilante Auditivo si desea que ReactOS genere avisos visuales cuando el sistema emita un sonido.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Utilizar Vigilante Auditivo", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Elija la advertencia visual:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -50,7 +50,7 @@ CAPTION "Pantalla"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Contraste alto ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Use esta opción si desea que Reactos use colores y letras diseñadas para una lectura más cómoda.",
+    LTEXT "Use esta opción si desea que ReactOS use colores y letras diseñadas para una lectura más cómoda.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Utilizar Contraste alto", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "C&onfiguración", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 6e260bb..3cd9439 100644 (file)
@@ -32,7 +32,7 @@ CAPTION "Son"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Sons visuels", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Utilisez les sons visuels si vous voulez que Reactos génère un avertissement visuel lorsque votre système émet un son.",
+    LTEXT "Utilisez les sons visuels si vous voulez que ReactOS génère un avertissement visuel lorsque votre système émet un son.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Utiliser les &sons visuels", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Utiliser l'avertissement suivant :", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
index e2a246f..384ca73 100644 (file)
@@ -13,7 +13,7 @@ BEGIN
     AUTOCHECKBOX "השתמש במקשים דביקים", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "הגדרות", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+    LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "הגדרות", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -32,7 +32,7 @@ CAPTION "צליל"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "שומר קולי", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+    LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "השתמש בשומר הקולי", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "השתמש באזהרות הבאות:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -50,7 +50,7 @@ CAPTION "תצןגה"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "ניגודיות גבוהה", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+    LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "השתמש בניגודיות גבוהה", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "הגדרות", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 32f862e..6765fa5 100644 (file)
@@ -13,7 +13,7 @@ BEGIN
     AUTOCHECKBOX "&Beragadó billentyûk használata", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Beállítások", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+    LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "B&eállítások", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -32,7 +32,7 @@ CAPTION "Hang"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "HangFigyelõ", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Ezt a funkciót akkor használja, ha szeretné, hogy a Reactos látható figyelmeztetéseket küldjön olyankor, amikor a rendszer hangjelzést ad.",
+    LTEXT "Ezt a funkciót akkor használja, ha szeretné, hogy a ReactOS látható figyelmeztetéseket küldjön olyankor, amikor a rendszer hangjelzést ad.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&HangFigyelõ használata", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "User the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -50,7 +50,7 @@ CAPTION "K
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Nagy kontraszt", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Ha azt szeretné, hogy a Reactos olyan színeket használjon, amelyek a könnyû olvasást teszik lehetõvé, akkor válassza ki ezt a lehetõséget.",
+    LTEXT "Ha azt szeretné, hogy a ReactOS olyan színeket használjon, amelyek a könnyû olvasást teszik lehetõvé, akkor válassza ki ezt a lehetõséget.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Nagy kontraszt használata", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Bellítások", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 621d615..b67c8fd 100644 (file)
@@ -13,7 +13,7 @@ BEGIN
     AUTOCHECKBOX "&Gunakan StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Setelan", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Gunakan FilterKeys jika anda ingin Reactos untuk mengabaikan atau tombol berulang, atau rata-rata ulangan lambat.",
+    LTEXT "Gunakan FilterKeys jika anda ingin ReactOS untuk mengabaikan atau tombol berulang, atau rata-rata ulangan lambat.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Gunakan &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "S&etelan", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -32,7 +32,7 @@ CAPTION "Suara"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Gunakan SoundSentry jika anda ingin Reactos untuk membuat peringatan visual ketika sistem anda membuat suara.",
+    LTEXT "Gunakan SoundSentry jika anda ingin ReactOS untuk membuat peringatan visual ketika sistem anda membuat suara.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Gunakan &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "User the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -50,7 +50,7 @@ CAPTION "Tampilan"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Kontras Tinggi", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Gunakan opsi ini jika anda ingin Reactos untuk memakai warna dan font yang didesain guna memudahkan pembacaan.",
+    LTEXT "Gunakan opsi ini jika anda ingin ReactOS untuk memakai warna dan font yang didesain guna memudahkan pembacaan.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Gunakan Kontras Tinggi", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Setelan", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 75ca57a..29d8579 100644 (file)
@@ -15,7 +15,7 @@ BEGIN
     AUTOCHECKBOX "&Plaktoetsen Gebruiken", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Instellingen...", IDC_STICKY_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "Filtertoetsen", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "U kunt Filtertoetsen gebruiken als u wilt dat Reactos korte of herhaalde toetsaanslagen negeert, of als u de herhaalsnelheid wilt verlagen.",
+    LTEXT "U kunt Filtertoetsen gebruiken als u wilt dat ReactOS korte of herhaalde toetsaanslagen negeert, of als u de herhaalsnelheid wilt verlagen.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Filtertoetsen gebruiken", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Inst&ellingen...", IDC_FILTER_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -34,7 +34,7 @@ CAPTION "Geluid"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Geluidswaarschuwingen", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Schakel Geluidswaarschuwingen gebruiken in als u wilt dat Reactos een visuele waarschuwing weergeeft wanneer het systeem een geluid laat horen.",
+    LTEXT "Schakel Geluidswaarschuwingen gebruiken in als u wilt dat ReactOS een visuele waarschuwing weergeeft wanneer het systeem een geluid laat horen.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Geluidswaarschuwingen gebruiken", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -52,7 +52,7 @@ CAPTION "Weergave"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Hoog Contrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH_NL - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "U kunt deze optie gebruiken als u wilt dat Reactos kleuren en lettertypen zodanig instelt dat deze gemakkelijk te lezen zijn.",
+    LTEXT "U kunt deze optie gebruiken als u wilt dat ReactOS kleuren en lettertypen zodanig instelt dat deze gemakkelijk te lezen zijn.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH_NL - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Hoog contrast gebruiken", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH_NL - PROPSHEETPADDING(20), 14
     PUSHBUTTON "I&nstellingen...", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH_NL - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index ffa2b90..eac3c64 100644 (file)
@@ -11,7 +11,7 @@ BEGIN
     AUTOCHECKBOX "&Bruk Trege taster", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Innstillinger", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "Filtertaster", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Bruk filtertaster hvis du vil at Reactos skal ignorere lette eller gjentatte tastetrykk, eller senke repetisjonshastigheten.",
+    LTEXT "Bruk filtertaster hvis du vil at ReactOS skal ignorere lette eller gjentatte tastetrykk, eller senke repetisjonshastigheten.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Bruk &filtertaster", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "I&nnstillinger", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -30,7 +30,7 @@ CAPTION "Lyd"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Skjermsignal", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Bruk skjermsignal hvis du vil at Reactos skal gi en visuell varsling når systemet lager lyd.",
+    LTEXT "Bruk skjermsignal hvis du vil at ReactOS skal gi en visuell varsling når systemet lager lyd.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Bruk &skjermsignal", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Velg følgende varsling:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -48,7 +48,7 @@ CAPTION "Skjerm"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Høykontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Velg dette alternativet hvis du vil at Reactos skal bruke farger og skrifter som er laget for å gjøre det lett leselig.",
+    LTEXT "Velg dette alternativet hvis du vil at ReactOS skal bruke farger og skrifter som er laget for å gjøre det lett leselig.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Bruk høykontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Innstillinger", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 787a190..106f4c0 100644 (file)
@@ -54,7 +54,7 @@ CAPTION "Ekran"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Wysoki Kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Użyj tej funkcji, jeśli chcesz, żeby Reactos używał kolorów i czcionek zaprojektowanych do łatwego czytania",
+    LTEXT "Użyj tej funkcji, jeśli chcesz, żeby ReactOS używał kolorów i czcionek zaprojektowanych do łatwego czytania",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Użyj funkcji Wysoki Kontrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "U&stawienia", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 9689ccf..7d41b14 100644 (file)
@@ -15,7 +15,7 @@ BEGIN
     AUTOCHECKBOX "&Use StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Settings", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Use FilterKeys if you want Reactos to ignore brief or repeated keystrokes, or slow the repeat rate.",
+    LTEXT "Use FilterKeys if you want ReactOS to ignore brief or repeated keystrokes, or slow the repeat rate.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "S&ettings", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -34,7 +34,7 @@ CAPTION "Zvuk"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Use SoundSentry if you want Reactos to generate visual warnings when your system makes a sound.",
+    LTEXT "Use SoundSentry if you want ReactOS to generate visual warnings when your system makes a sound.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Use &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Use the following warning:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -52,7 +52,7 @@ CAPTION "Obrazovka"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Vysoký kontrast", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Use this option if you want Reactos to use colors and fonts designed for easy reading.",
+    LTEXT "Use this option if you want ReactOS to use colors and fonts designed for easy reading.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "&Use High Contrast", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "&Settings", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 8857577..b064253 100644 (file)
@@ -15,7 +15,7 @@ BEGIN
     AUTOCHECKBOX "&Perdor StickyKeys", IDC_STICKY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Konfigurime", IDC_STICKY_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     GROUPBOX "FilterKeys", -1, PROPSHEETPADDING(1), LABELLINE(8) + 5, PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(7) + 2
-    LTEXT "Perdp FilterKeys nese doni Reactos te injorohe ose perserise keystrokes, ose te ngadalsoje kohen e perseritjes.",
+    LTEXT "Perdp FilterKeys nese doni ReactOS te injorohe ose perserise keystrokes, ose te ngadalsoje kohen e perseritjes.",
           -1, PROPSHEETPADDING(2), LABELLINE(10) - 3, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Perdor &FilterKeys", IDC_FILTER_BOX, PROPSHEETPADDING(2), LABELLINE(13) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Konfigurime", IDC_FILTER_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(13) + 2, PROPSHEETPADDING(15), 14
@@ -34,7 +34,7 @@ CAPTION "Zë"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "SoundSentry", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(10) + PROPSHEETPADDING(1)
-    LTEXT "Perdor SoundSentry nese doni qe Reactos te gjeneroj gabime vizuale kur sistemi juaj jep nje zë.",
+    LTEXT "Perdor SoundSentry nese doni qe ReactOS te gjeneroj gabime vizuale kur sistemi juaj jep nje zë.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Perdor &SoundSentry", IDC_SENTRY_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
     LTEXT "Perdor gabimet e metejshme:", IDC_SENTRY_TEXT, PROPSHEETPADDING(2), LABELLINE(8) - 2, PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(1)
@@ -52,7 +52,7 @@ CAPTION "Ekrani"
 FONT 8, "MS Shell Dlg", 0, 0, 0x0
 BEGIN
     GROUPBOX "Kontrast i lartë", -1, PROPSHEETPADDING(1), LABELLINE(1), PROPSHEETWIDTH - PROPSHEETPADDING(2), LABELLINE(6) + PROPSHEETPADDING(1)
-    LTEXT "Përdoreni këtë mundësi nëse doni Reactos të përdorni ngjyrat dhe gërmat projektuar për leximin e lehtë.",
+    LTEXT "Përdoreni këtë mundësi nëse doni ReactOS të përdorni ngjyrat dhe gërmat projektuar për leximin e lehtë.",
           -1, PROPSHEETPADDING(2), LABELLINE(2), PROPSHEETWIDTH - PROPSHEETPADDING(4), LABELLINE(3)
     AUTOCHECKBOX "Perdor kontrast te larte", IDC_CONTRAST_BOX, PROPSHEETPADDING(2), LABELLINE(5) + 2, PROPSHEETWIDTH - PROPSHEETPADDING(20), 14
     PUSHBUTTON "Konfigurime", IDC_CONTRAST_BUTTON, PROPSHEETWIDTH - PROPSHEETPADDING(17), LABELLINE(5) + 2, PROPSHEETPADDING(15), 14
index 0315b15..44c5b50 100644 (file)
@@ -27,7 +27,7 @@ STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
 CAPTION "Geluiden"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    LTEXT "Een geluidsschema is een verzameling geluiden die worden toegepast op Reactos- en programmagebeurtenissen. U kunt een bestaand schema slecteren of een aangepast schema opslaan.", -1, 8, 7, 230, 40
+    LTEXT "Een geluidsschema is een verzameling geluiden die worden toegepast op ReactOS- en programmagebeurtenissen. U kunt een bestaand schema slecteren of een aangepast schema opslaan.", -1, 8, 7, 230, 40
     LTEXT "Geluid&sschema:", -1, 8, 42, 150, 17
     COMBOBOX IDC_SOUND_SCHEME, 8, 53, 230, 46, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
     PUSHBUTTON "&Opslaan als...", IDC_SAVEAS_BTN, 104, 70, 65, 15
index 16863d9..0894a89 100644 (file)
 @ stdcall RtlFirstFreeAce(ptr ptr)
 @ stdcall RtlFlushSecureMemoryCache(ptr ptr)
 @ stdcall RtlFormatCurrentUserKeyPath(ptr)
-@ stdcall RtlFormatMessage(ptr long long long long ptr ptr long)
-@ stdcall RtlFormatMessageEx(ptr long long long long ptr ptr long long)
+@ stdcall RtlFormatMessage(ptr long long long long ptr ptr long ptr)
+@ stdcall RtlFormatMessageEx(ptr long long long long ptr ptr long ptr long)
 @ stdcall RtlFreeActivationContextStack(ptr)
 @ stdcall RtlFreeAnsiString(long)
 @ stdcall RtlFreeHandle(ptr ptr)
index df6c02f..72251cb 100644 (file)
@@ -1166,9 +1166,7 @@ IntAllocConsole(LPWSTR Title,
                 PCONSOLE_START_INFO ConsoleStartInfo)
 {
     BOOL Success = TRUE;
-#ifdef USE_CONSOLE_INIT_HANDLES
     NTSTATUS Status;
-#endif
 
     CONSOLE_API_MESSAGE ApiMessage;
     PCONSOLE_ALLOCCONSOLE AllocConsoleRequest = &ApiMessage.Data.AllocConsoleRequest;
@@ -1229,9 +1227,9 @@ IntAllocConsole(LPWSTR Title,
         goto Quit;
     }
 
-#ifdef USE_CONSOLE_INIT_HANDLES
-    // Is AllocConsoleRequest->ConsoleStartInfo->Events aligned on handle boundary ????
-    Status = NtWaitForMultipleObjects(2, AllocConsoleRequest->ConsoleStartInfo->Events,
+    // Is AllocConsoleRequest->ConsoleStartInfo->InitEvents aligned on handle boundary ????
+    Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+                                      AllocConsoleRequest->ConsoleStartInfo->InitEvents,
                                       WaitAny, FALSE, NULL);
     if (!NT_SUCCESS(Status))
     {
@@ -1240,15 +1238,14 @@ IntAllocConsole(LPWSTR Title,
         goto Quit;
     }
 
-    NtClose(AllocConsoleRequest->ConsoleStartInfo->Events[0]);
-    NtClose(AllocConsoleRequest->ConsoleStartInfo->Events[1]);
-    if (Status != STATUS_SUCCESS)
+    NtClose(AllocConsoleRequest->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+    NtClose(AllocConsoleRequest->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+    if (Status != INIT_SUCCESS)
     {
         NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
         Success = FALSE;
     }
     else
-#endif
     {
         RtlCopyMemory(ConsoleStartInfo,
                       AllocConsoleRequest->ConsoleStartInfo,
@@ -2505,9 +2502,7 @@ IntAttachConsole(DWORD ProcessId,
                  PCONSOLE_START_INFO ConsoleStartInfo)
 {
     BOOL Success = TRUE;
-#ifdef USE_CONSOLE_INIT_HANDLES
     NTSTATUS Status;
-#endif
 
     CONSOLE_API_MESSAGE ApiMessage;
     PCONSOLE_ATTACHCONSOLE AttachConsoleRequest = &ApiMessage.Data.AttachConsoleRequest;
@@ -2541,9 +2536,9 @@ IntAttachConsole(DWORD ProcessId,
         goto Quit;
     }
 
-#ifdef USE_CONSOLE_INIT_HANDLES
-    // Is AttachConsoleRequest->ConsoleStartInfo->Events aligned on handle boundary ????
-    Status = NtWaitForMultipleObjects(2, AttachConsoleRequest->ConsoleStartInfo->Events,
+    // Is AttachConsoleRequest->ConsoleStartInfo->InitEvents aligned on handle boundary ????
+    Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+                                      AttachConsoleRequest->ConsoleStartInfo->InitEvents,
                                       WaitAny, FALSE, NULL);
     if (!NT_SUCCESS(Status))
     {
@@ -2552,15 +2547,14 @@ IntAttachConsole(DWORD ProcessId,
         goto Quit;
     }
 
-    NtClose(AttachConsoleRequest->ConsoleStartInfo->Events[0]);
-    NtClose(AttachConsoleRequest->ConsoleStartInfo->Events[1]);
-    if (Status != STATUS_SUCCESS)
+    NtClose(AttachConsoleRequest->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+    NtClose(AttachConsoleRequest->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+    if (Status != INIT_SUCCESS)
     {
         NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
         Success = FALSE;
     }
     else
-#endif
     {
         RtlCopyMemory(ConsoleStartInfo,
                       AttachConsoleRequest->ConsoleStartInfo,
index 5134028..985cb66 100644 (file)
@@ -308,9 +308,10 @@ ConnectConsole(IN PWSTR SessionDir,
     /* Nothing to do if this is not a console app */
     if (!ConnectInfo->IsConsoleApp) return TRUE;
 
-#ifdef USE_CONSOLE_INIT_HANDLES
     /* Wait for the connection to finish */
-    Status = NtWaitForMultipleObjects(2, ConnectInfo->ConsoleStartInfo.Events,
+    // Is ConnectInfo->ConsoleStartInfo.InitEvents aligned on handle boundary ????
+    Status = NtWaitForMultipleObjects(MAX_INIT_EVENTS,
+                                      ConnectInfo->ConsoleStartInfo.InitEvents,
                                       WaitAny, FALSE, NULL);
     if (!NT_SUCCESS(Status))
     {
@@ -318,15 +319,13 @@ ConnectConsole(IN PWSTR SessionDir,
         return FALSE;
     }
 
-    NtClose(ConnectInfo->ConsoleStartInfo.Events[0]);
-    NtClose(ConnectInfo->ConsoleStartInfo.Events[1]);
-
-    if (Status != STATUS_SUCCESS)
+    NtClose(ConnectInfo->ConsoleStartInfo.InitEvents[INIT_SUCCESS]);
+    NtClose(ConnectInfo->ConsoleStartInfo.InitEvents[INIT_FAILURE]);
+    if (Status != INIT_SUCCESS)
     {
         NtCurrentPeb()->ProcessParameters->ConsoleHandle = NULL;
         return FALSE;
     }
-#endif
 
     return TRUE;
 }
index da22daf..0948f8b 100644 (file)
@@ -3992,7 +3992,7 @@ StartScan:
         if (!NT_SUCCESS(Status))
         {
             /* Bail out on failure */
-            DPRINT1("Failed to reserved memory for VDM: %lx\n", Status);
+            DPRINT1("Failed to reserve memory for VDM: %lx\n", Status);
             BaseSetLastNTError(Status);
             Result = FALSE;
             goto Quickie;
index 79e1d9a..b6462af 100644 (file)
 #define HANDLE_CREATE_NEW_CONSOLE   (HANDLE)-2
 #define HANDLE_CREATE_NO_WINDOW     (HANDLE)-3
 
-// Enable (and then get rid of) this define when support for
-// console initialization handles is implemented in CONSRV.
-// #define USE_CONSOLE_INIT_HANDLES
-
 
 /* FUNCTION PROTOTYPES ********************************************************/
 
index 14ea0dd..dc55707 100644 (file)
@@ -5,8 +5,8 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYS
 CAPTION "ReactOS Setup"
 FONT 8, "MS Shell Dlg"
 BEGIN
-    LTEXT "Welkom bij de Reactos installatiewizard.", IDC_WELCOMETITLE, 115, 8, 195, 24
-    LTEXT "Deze wizard zal Reactos op je computer installeren. De wizard heeft informatie over jou en jouw computer nodig om Reactos correct in te stellen.", IDC_STATIC, 115, 40, 195, 100
+    LTEXT "Welkom bij de ReactOS installatiewizard.", IDC_WELCOMETITLE, 115, 8, 195, 24
+    LTEXT "Deze wizard zal ReactOS op je computer installeren. De wizard heeft informatie over jou en jouw computer nodig om ReactOS correct in te stellen.", IDC_STATIC, 115, 40, 195, 100
     LTEXT "Klik op Volgende om voort te gaan met de installatie.", IDC_STATIC, 115, 169, 195, 17
 END
 
index ac4d641..675a2d8 100644 (file)
@@ -314,4 +314,22 @@ GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType)
     return NULL;
 }
 
+PFILENAME_ATTRIBUTE
+GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord)
+{
+    PFILENAME_ATTRIBUTE FileName;
+
+    FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
+    if (FileName == NULL)
+    {
+        FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
+        if (FileName == NULL)
+        {
+            FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
+        }
+    }
+
+    return FileName;
+}
+
 /* EOF */
index 088b69f..60c59a8 100644 (file)
@@ -137,15 +137,7 @@ NtfsGetNameInformation(PDEVICE_EXTENSION DeviceExt,
 
     DPRINT("NtfsGetNameInformation() called\n");
 
-    FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
-    if (FileName == NULL)
-    {
-        FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
-        if (FileName == NULL)
-        {
-            FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
-        }
-    }
+    FileName = GetBestFileNameFromRecord(FileRecord);
     ASSERT(FileName != NULL);
 
     Length = FileName->NameLength * sizeof (WCHAR);
@@ -173,15 +165,7 @@ NtfsGetDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
 
     DPRINT("NtfsGetDirectoryInformation() called\n");
 
-    FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
-    if (FileName == NULL)
-    {
-        FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
-        if (FileName == NULL)
-        {
-            FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
-        }
-    }
+    FileName = GetBestFileNameFromRecord(FileRecord);
     ASSERT(FileName != NULL);
 
     Length = FileName->NameLength * sizeof (WCHAR);
@@ -222,15 +206,7 @@ NtfsGetFullDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
 
     DPRINT("NtfsGetFullDirectoryInformation() called\n");
 
-    FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
-    if (FileName == NULL)
-    {
-        FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
-        if (FileName == NULL)
-        {
-            FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
-        }
-    }
+    FileName = GetBestFileNameFromRecord(FileRecord);
     ASSERT(FileName != NULL);
 
     Length = FileName->NameLength * sizeof (WCHAR);
@@ -272,15 +248,7 @@ NtfsGetBothDirectoryInformation(PDEVICE_EXTENSION DeviceExt,
 
     DPRINT("NtfsGetBothDirectoryInformation() called\n");
 
-    FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_POSIX);
-    if (FileName == NULL)
-    {
-        FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_WIN32);
-        if (FileName == NULL)
-        {
-            FileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
-        }
-    }
+    FileName = GetBestFileNameFromRecord(FileRecord);
     ASSERT(FileName != NULL);
     ShortFileName = GetFileNameFromRecord(FileRecord, NTFS_FILE_NAME_DOS);
 
@@ -380,14 +348,7 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
                 return STATUS_INSUFFICIENT_RESOURCES;
             }
 
-            Status = RtlUpcaseUnicodeString(&Pattern, SearchPattern, FALSE);
-            if (!NT_SUCCESS(Status))
-            {
-                DPRINT1("RtlUpcaseUnicodeString('%wZ') failed with status 0x%08lx\n", &Pattern, Status);
-                ExFreePoolWithTag(Ccb->DirectorySearchPattern, TAG_NTFS);
-                Ccb->DirectorySearchPattern = NULL;
-                return Status;
-            }
+            memcpy(Ccb->DirectorySearchPattern, SearchPattern->Buffer, SearchPattern->Length);
             Ccb->DirectorySearchPattern[SearchPattern->Length / sizeof(WCHAR)] = 0;
         }
     }
index 7ab896b..8be7030 100644 (file)
@@ -396,7 +396,7 @@ NtfsMakeFCBFromDirEntry(PNTFS_VCB Vcb,
 
     DPRINT1("NtfsMakeFCBFromDirEntry(%p, %p, %wZ, %p, %p)\n", Vcb, DirectoryFCB, Name, Record, fileFCB);
 
-    FileName = GetFileNameFromRecord(Record, NTFS_FILE_NAME_WIN32);
+    FileName = GetBestFileNameFromRecord(Record);
     if (!FileName)
     {
         return STATUS_OBJECT_NAME_NOT_FOUND; // Not sure that's the best here
index eb91ae9..a1cdad2 100644 (file)
@@ -59,7 +59,7 @@ NtfsGetStandardInformation(PNTFS_FCB Fcb,
 
     StandardInfo->AllocationSize = Fcb->RFCB.AllocationSize;
     StandardInfo->EndOfFile = Fcb->RFCB.FileSize;
-    StandardInfo->NumberOfLinks = 0;
+    StandardInfo->NumberOfLinks = 0; /* FIXME */
     StandardInfo->DeletePending = FALSE;
     StandardInfo->Directory = NtfsFCBIsDirectory(Fcb);
 
@@ -75,15 +75,12 @@ NtfsGetPositionInformation(PFILE_OBJECT FileObject,
                            PFILE_POSITION_INFORMATION PositionInfo,
                            PULONG BufferLength)
 {
-    UNREFERENCED_PARAMETER(FileObject);
-
     DPRINT("NtfsGetPositionInformation() called\n");
 
     if (*BufferLength < sizeof(FILE_POSITION_INFORMATION))
         return STATUS_BUFFER_OVERFLOW;
 
-    PositionInfo->CurrentByteOffset.QuadPart = 0;
-//    FileObject->CurrentByteOffset.QuadPart;
+    PositionInfo->CurrentByteOffset.QuadPart = FileObject->CurrentByteOffset.QuadPart;
 
     DPRINT("Getting position %I64x\n",
            PositionInfo->CurrentByteOffset.QuadPart);
@@ -102,29 +99,19 @@ NtfsGetBasicInformation(PFILE_OBJECT FileObject,
                         PFILE_BASIC_INFORMATION BasicInfo,
                         PULONG BufferLength)
 {
+    PFILENAME_ATTRIBUTE FileName = &Fcb->Entry;
+
     DPRINT("NtfsGetBasicInformation() called\n");
 
     if (*BufferLength < sizeof(FILE_BASIC_INFORMATION))
         return STATUS_BUFFER_OVERFLOW;
 
-#if 0
-    CdfsDateTimeToFileTime(Fcb,
-                           &BasicInfo->CreationTime);
-    CdfsDateTimeToFileTime(Fcb,
-                           &BasicInfo->LastAccessTime);
-    CdfsDateTimeToFileTime(Fcb,
-                           &BasicInfo->LastWriteTime);
-    CdfsDateTimeToFileTime(Fcb,
-                           &BasicInfo->ChangeTime);
-
-    CdfsFileFlagsToAttributes(Fcb,
-                              &BasicInfo->FileAttributes);
-#else
-    UNREFERENCED_PARAMETER(FileObject);
-    UNREFERENCED_PARAMETER(Fcb);
-    UNREFERENCED_PARAMETER(DeviceObject);
-    UNREFERENCED_PARAMETER(BasicInfo);
-#endif
+    BasicInfo->CreationTime.QuadPart = FileName->CreationTime;
+    BasicInfo->LastAccessTime.QuadPart = FileName->LastAccessTime;
+    BasicInfo->LastWriteTime.QuadPart = FileName->LastWriteTime;
+    BasicInfo->ChangeTime.QuadPart = FileName->ChangeTime;
+
+    NtfsFileFlagsToAttributes(FileName->FileAttributes, &BasicInfo->FileAttributes);
 
     *BufferLength -= sizeof(FILE_BASIC_INFORMATION);
 
index 3e83fe8..acecf2d 100644 (file)
@@ -466,6 +466,7 @@ CompareFileName(PUNICODE_STRING FileName,
                 PINDEX_ENTRY_ATTRIBUTE IndexEntry,
                 BOOLEAN DirSearch)
 {
+    BOOLEAN Ret, Alloc = FALSE;
     UNICODE_STRING EntryName;
 
     EntryName.Buffer = IndexEntry->FileName.Name;
@@ -474,7 +475,25 @@ CompareFileName(PUNICODE_STRING FileName,
 
     if (DirSearch)
     {
-        return FsRtlIsNameInExpression(FileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
+        UNICODE_STRING IntFileName;
+        if (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX)
+        {
+            NT_VERIFY(NT_SUCCESS(RtlUpcaseUnicodeString(&IntFileName, FileName, TRUE)));
+            Alloc = TRUE;
+        }
+        else
+        {
+            IntFileName = *FileName;
+        }
+
+        Ret = FsRtlIsNameInExpression(&IntFileName, &EntryName, (IndexEntry->FileName.NameType != NTFS_FILE_NAME_POSIX), NULL);
+
+        if (Alloc)
+        {
+            RtlFreeUnicodeString(&IntFileName);
+        }
+
+        return Ret;
     }
     else
     {
@@ -547,6 +566,14 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
         while (IndexEntry < IndexEntryEnd &&
                !(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
         {
+            UNICODE_STRING EntryName;
+            EntryName.Buffer = IndexEntry->FileName.Name;
+            EntryName.Length = 
+            EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+            if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+                DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
             if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
                 CurrentEntry >= *FirstEntry &&
                 CompareFileName(FileName, IndexEntry, DirSearch))
@@ -638,6 +665,14 @@ NtfsFindMftRecord(PDEVICE_EXTENSION Vcb,
                 while (IndexEntry < IndexEntryEnd &&
                        !(IndexEntry->Flags & NTFS_INDEX_ENTRY_END))
                 {
+                    UNICODE_STRING EntryName;
+                    EntryName.Buffer = IndexEntry->FileName.Name;
+                    EntryName.Length = 
+                    EntryName.MaximumLength = IndexEntry->FileName.NameLength * sizeof(WCHAR);
+
+                    if (IndexEntry->Flags & NTFS_INDEX_ENTRY_NODE)
+                        DPRINT1("Warning: sub-node browsing unimplemented! (%wZ)\n", &EntryName);
+
                     if ((IndexEntry->Data.Directory.IndexedFile & NTFS_MFT_MASK) > 0x10 &&
                         CurrentEntry >= *FirstEntry &&
                         CompareFileName(FileName, IndexEntry, DirSearch))
index 39db578..bb72e01 100644 (file)
@@ -195,6 +195,7 @@ typedef enum
 #define NTFS_FILE_TYPE_HIDDEN     0x2
 #define NTFS_FILE_TYPE_SYSTEM     0x4
 #define NTFS_FILE_TYPE_ARCHIVE    0x20
+#define NTFS_FILE_TYPE_REPARSE    0x400
 #define NTFS_FILE_TYPE_COMPRESSED 0x800
 #define NTFS_FILE_TYPE_DIRECTORY  0x10000000
 
@@ -308,7 +309,15 @@ typedef struct
     ULONGLONG AllocatedSize;
     ULONGLONG DataSize;
     ULONG FileAttributes;
-    ULONG AlignmentOrReserved;
+    union
+    {
+        struct
+        {
+            USHORT PackedEaSize;
+            USHORT AlignmentOrReserved;
+        } EaInfo;
+        ULONG ReparseTag;
+    } Extended;
     UCHAR NameLength;
     UCHAR NameType;
     WCHAR Name[1];
@@ -371,6 +380,13 @@ typedef struct
     ULONG Unknown2;
 } VOLINFO_ATTRIBUTE, *PVOLINFO_ATTRIBUTE;
 
+typedef struct {
+    ULONG ReparseTag;
+    USHORT DataLength;
+    USHORT Reserved;
+    UCHAR Data[1];
+} REPARSE_POINT_ATTRIBUTE, *PREPARSE_POINT_ATTRIBUTE;
+
 typedef struct
 {
     NTFSIDENTIFIER Identifier;
@@ -452,6 +468,9 @@ NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord);
 PFILENAME_ATTRIBUTE
 GetFileNameFromRecord(PFILE_RECORD_HEADER FileRecord, UCHAR NameType);
 
+PFILENAME_ATTRIBUTE
+GetBestFileNameFromRecord(PFILE_RECORD_HEADER FileRecord);
+
 /* blockdev.c */
 
 NTSTATUS
index 0db7e81..0585b0d 100644 (file)
@@ -34,6 +34,7 @@
 #include <scsi.h>
 #include <ntddscsi.h>
 #include <ntdddisk.h>
+#include <mountdev.h>
 
 #define NDEBUG
 #include <debug.h>
@@ -2877,8 +2878,20 @@ ScsiPortDeviceControl(IN PDEVICE_OBJECT DeviceObject,
           break;
 
       default:
-          if ('M' == (Stack->Parameters.DeviceIoControl.IoControlCode >> 16)) {
-            DPRINT1("  got ioctl intended for the mount manager: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
+          if (DEVICE_TYPE_FROM_CTL_CODE(Stack->Parameters.DeviceIoControl.IoControlCode) == MOUNTDEVCONTROLTYPE)
+          {
+            switch (Stack->Parameters.DeviceIoControl.IoControlCode)
+            {
+            case IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:
+                DPRINT1("Got unexpected IOCTL_MOUNTDEV_QUERY_DEVICE_NAME\n");
+                break;
+            case IOCTL_MOUNTDEV_QUERY_UNIQUE_ID:
+                DPRINT1("Got unexpected IOCTL_MOUNTDEV_QUERY_UNIQUE_ID\n");
+                break;
+            default:
+                DPRINT1("  got ioctl intended for the mount manager: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
+                break;
+            }
           } else {
             DPRINT1("  unknown ioctl code: 0x%lX\n", Stack->Parameters.DeviceIoControl.IoControlCode);
           }
index 426ff88..38de319 100644 (file)
@@ -1,5 +1,5 @@
 #define REACTOS_VERSION_DLL
-#define REACTOS_STR_FILE_DESCRIPTION  "Reactos audio mapper driver"
+#define REACTOS_STR_FILE_DESCRIPTION  "ReactOS audio mapper driver"
 #define REACTOS_STR_INTERNAL_NAME     "wdmaud"
 #define REACTOS_STR_ORIGINAL_FILENAME "wdmaud.sys"
 #include <reactos/version.rc>
index e3fa8de..8e26ba1 100644 (file)
@@ -41,6 +41,27 @@ WINAPI
 VDDTerminateVDM(VOID);
 
 
+/*
+ * IRQ services
+ */
+
+WORD
+WINAPI
+VDDReserveIrqLine
+(
+    IN HANDLE hVdd,
+    IN WORD   IrqLine
+);
+
+BOOL
+WINAPI
+VDDReleaseIrqLine
+(
+    IN HANDLE hVdd,
+    IN WORD   IrqLine
+);
+
+
 /*
  * I/O Port services
  */
@@ -76,19 +97,69 @@ BOOL
 WINAPI
 VDDInstallIOHook
 (
-    HANDLE            hVdd,
-    WORD              cPortRange,
-    PVDD_IO_PORTRANGE pPortRange,
-    PVDD_IO_HANDLERS  IOhandler
+    IN HANDLE            hVdd,
+    IN WORD              cPortRange,
+    IN PVDD_IO_PORTRANGE pPortRange,
+    IN PVDD_IO_HANDLERS  IOhandler
 );
 
 VOID
 WINAPI
 VDDDeInstallIOHook
 (
-    HANDLE            hVdd,
-    WORD              cPortRange,
-    PVDD_IO_PORTRANGE pPortRange
+    IN HANDLE            hVdd,
+    IN WORD              cPortRange,
+    IN PVDD_IO_PORTRANGE pPortRange
+);
+
+
+/*
+ * DMA services
+ */
+
+typedef struct _VDD_DMA_INFO
+{
+    WORD    addr;
+    WORD    count;
+    WORD    page;
+    BYTE    status;
+    BYTE    mode;
+    BYTE    mask;
+} VDD_DMA_INFO, *PVDD_DMA_INFO;
+
+#define VDD_DMA_ADDR    0x01
+#define VDD_DMA_COUNT   0x02
+#define VDD_DMA_PAGE    0x04
+#define VDD_DMA_STATUS  0x08
+#define VDD_DMA_ALL     (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS)
+
+DWORD
+WINAPI
+VDDRequestDMA
+(
+    IN HANDLE    hVdd,
+    IN WORD      iChannel,
+    IN OUT PVOID Buffer,
+    IN DWORD     length
+);
+
+BOOL
+WINAPI
+VDDQueryDMA
+(
+    IN HANDLE        hVdd,
+    IN WORD          iChannel,
+    IN PVDD_DMA_INFO pDmaInfo
+);
+
+BOOL
+WINAPI
+VDDSetDMA
+(
+    IN HANDLE        hVdd,
+    IN WORD          iChannel,
+    IN WORD          fDMA,
+    IN PVDD_DMA_INFO pDmaInfo
 );
 
 
index 444bb8a..fe01526 100644 (file)
@@ -828,10 +828,15 @@ extern "C++" { \
 #define MAXULONG  0xffffffff
 #define MAXLONGLONG (0x7fffffffffffffffLL)
 
-/* Multiplication and Shift Operations. Note: we don't use inline
-   asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+    !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
 
 #if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
 /* Use native math */
index 0f2c67a..ae87512 100644 (file)
@@ -611,16 +611,20 @@ extern "C" {
 #define SPQ_SCAN_INFORM_USER   0x00000010
 #define SPQ_SCAN_PRUNE_COPY_QUEUE      0x00000020
 #define SPRDI_FIND_DUPS        0x00000001
-#define SPSVCINST_TAGTOFRONT   0x00000001
-#define SPSVCINST_ASSOCSERVICE 0x00000002
-#define SPSVCINST_DELETEEVENTLOGENTRY  0x00000004
-#define SPSVCINST_NOCLOBBER_DISPLAYNAME        0x00000008
-#define SPSVCINST_NOCLOBBER_STARTTYPE  0x00000010
-#define SPSVCINST_NOCLOBBER_ERRORCONTROL       0x00000020
-#define SPSVCINST_NOCLOBBER_LOADORDERGROUP     0x00000040
-#define SPSVCINST_NOCLOBBER_DEPENDENCIES       0x00000080
-#define SPSVCINST_NOCLOBBER_DESCRIPTION        0x00000100
-#define SPSVCINST_STOPSERVICE  0x00000200
+
+#define SPSVCINST_TAGTOFRONT               0x00000001
+#define SPSVCINST_ASSOCSERVICE             0x00000002
+#define SPSVCINST_DELETEEVENTLOGENTRY      0x00000004
+#define SPSVCINST_NOCLOBBER_DISPLAYNAME    0x00000008
+#define SPSVCINST_NOCLOBBER_STARTTYPE      0x00000010
+#define SPSVCINST_NOCLOBBER_ERRORCONTROL   0x00000020
+#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
+#define SPSVCINST_NOCLOBBER_DEPENDENCIES   0x00000080
+#define SPSVCINST_NOCLOBBER_DESCRIPTION    0x00000100
+#define SPSVCINST_STOPSERVICE              0x00000200
+#define SPSVCINST_CLOBBER_SECURITY         0x00000400
+#define SPSVCINST_STARTSERVICE             0x00000800
+
 #define SPWPT_SELECTDEVICE     0x00000001
 #define SPWP_USE_DEVINFO_DATA  0x00000001
 #define SRCINFO_PATH   1
@@ -2350,6 +2354,22 @@ SetupSetSourceListW(
 WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(_In_ PVOID);
 WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(_In_ HSPFILELOG);
 
+WINSETUPAPI
+BOOL
+WINAPI
+SetupUninstallOEMInfA(
+  _In_ PCSTR InfFileName,
+  _In_ DWORD Flags,
+  _In_ PVOID Reserved);
+
+WINSETUPAPI
+BOOL
+WINAPI
+SetupUninstallOEMInfW(
+  _In_ PCWSTR InfFileName,
+  _In_ DWORD Flags,
+  _In_ PVOID Reserved);
+
 WINSETUPAPI DWORD WINAPI StampFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR);
 
 
@@ -2520,6 +2540,7 @@ WINSETUPAPI PSTR WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
 #define SetupSetFileQueueAlternatePlatform     SetupSetFileQueueAlternatePlatformW
 #define SetupSetPlatformPathOverride   SetupSetPlatformPathOverrideW
 #define SetupSetSourceList     SetupSetSourceListW
+#define SetupUninstallOEMInf    SetupUninstallOEMInfW
 #else
 #define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
 #define SetupAddInstallSectionToDiskSpaceList  SetupAddInstallSectionToDiskSpaceListA
@@ -2642,6 +2663,7 @@ WINSETUPAPI PSTR WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
 #define SetupSetFileQueueAlternatePlatform     SetupSetFileQueueAlternatePlatformA
 #define SetupSetPlatformPathOverride   SetupSetPlatformPathOverrideA
 #define SetupSetSourceList     SetupSetSourceListA
+#define SetupUninstallOEMInf    SetupUninstallOEMInfA
 #endif /* UNICODE */
 
 #endif /* RC_INVOKED */
index 55be73a..de89e85 100644 (file)
@@ -761,10 +761,15 @@ extern "C++" { \
 #define MAXDWORD  0xffffffff
 #define MAXLONGLONG (0x7fffffffffffffffLL)
 
-/* Multiplication and Shift Operations. Note: we don't use inline
-   asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+    !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
 
 #if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
 /* Use native math */
index 085dd1b..6cfca41 100644 (file)
@@ -2177,7 +2177,7 @@ ULONG     WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG);
 ULONG     WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN);
 BOOLEAN   WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *);
 NTSTATUS  WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING);
-NTSTATUS  WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,LPWSTR,ULONG);
+NTSTATUS  WINAPI RtlFormatMessage(PWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,va_list *,PWSTR,ULONG,PULONG);
 void      WINAPI RtlFreeAnsiString(PANSI_STRING);
 BOOLEAN   WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *);
 BOOLEAN   WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
index 42d8398..26201b3 100644 (file)
@@ -158,6 +158,13 @@ typedef struct _CONSOLE_PROPERTIES
     UINT uCodePage;
 } CONSOLE_PROPERTIES;
 
+enum
+{
+    INIT_SUCCESS, // STATUS_WAIT_0
+    INIT_FAILURE, // STATUS_WAIT_1
+    MAX_INIT_EVENTS
+};
+
 typedef struct _CONSOLE_START_INFO
 {
     HANDLE ConsoleHandle;
@@ -165,7 +172,7 @@ typedef struct _CONSOLE_START_INFO
     HANDLE InputHandle;
     HANDLE OutputHandle;
     HANDLE ErrorHandle;
-    HANDLE Events[2];
+    HANDLE InitEvents[MAX_INIT_EVENTS];
 
     CONSOLE_PROPERTIES;
 } CONSOLE_START_INFO, *PCONSOLE_START_INFO;
index 30b2c1e..3555b1e 100644 (file)
@@ -747,10 +747,15 @@ $if(_WINNT_)
 $endif(_WINNT_)
 #define MAXLONGLONG (0x7fffffffffffffffLL)
 
-/* Multiplication and Shift Operations. Note: we don't use inline
-   asm functions, the compiler can optimize this better. */
-#define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
-#define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
+#if defined(_M_IX86) && defined(__GNUC__) && \
+    !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
+ #define Int32x32To64(a,b) __emul(a,b)
+ #define UInt32x32To64(a,b) __emulu(a,b)
+#else
+ #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
+ #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
+#endif
 
 #if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE)
 /* Use native math */
index b5da805..4488e4a 100644 (file)
 #define THREAD_BASE_PRIORITY_MAX    2
 #define THREAD_BASE_PRIORITY_MIN    (-2)
 #define THREAD_BASE_PRIORITY_IDLE    (-15)
+
+#define PROCESS_SET_LIMITED_INFORMATION 0x2000
+#define THREAD_RESUME 0x1000
+
 /*
  * To prevent gcc compiler warnings, bracket these defines when initialising
  * a  SID_IDENTIFIER_AUTHORITY, eg.
index 147a5c0..52f2fc7 100644 (file)
@@ -294,8 +294,9 @@ Fast486InterruptInternal(PFAST486_STATE State,
             State->PrefixFlags |= FAST486_PREFIX_OPSIZE;
         }
 
-        /* Check if the interrupt handler is more privileged */
-        if (Fast486GetCurrentPrivLevel(State) > GET_SEGMENT_RPL(SegmentSelector))
+        /* Check if the interrupt handler is more privileged or if we're in V86 mode */
+        if ((Fast486GetCurrentPrivLevel(State) > GET_SEGMENT_RPL(SegmentSelector))
+            || State->Flags.Vm)
         {
             /* Read the TSS */
             if (!Fast486ReadLinearMemory(State,
@@ -310,6 +311,24 @@ Fast486InterruptInternal(PFAST486_STATE State,
             /* Switch to the new privilege level */
             State->Cpl = GET_SEGMENT_RPL(SegmentSelector);
 
+            if (State->Flags.Vm)
+            {
+                /* Clear the VM flag */
+                State->Flags.Vm = FALSE;
+
+                /* Push GS, FS, DS and ES */
+                if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_GS].Selector)) goto Cleanup;
+                if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_FS].Selector)) goto Cleanup;
+                if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_DS].Selector)) goto Cleanup;
+                if (!Fast486StackPush(State, State->SegmentRegs[FAST486_REG_ES].Selector)) goto Cleanup;
+
+                /* Now load them with NULL selectors, since they are useless in protected mode */
+                if (!Fast486LoadSegment(State, FAST486_REG_GS, 0)) goto Cleanup;
+                if (!Fast486LoadSegment(State, FAST486_REG_FS, 0)) goto Cleanup;
+                if (!Fast486LoadSegment(State, FAST486_REG_DS, 0)) goto Cleanup;
+                if (!Fast486LoadSegment(State, FAST486_REG_ES, 0)) goto Cleanup;
+            }
+
             /* Check the new (higher) privilege level */
             switch (State->Cpl)
             {
index 381ed03..6385e62 100644 (file)
@@ -303,7 +303,7 @@ Fast486StackPush(PFAST486_STATE State,
     BOOLEAN Size = State->SegmentRegs[FAST486_REG_CS].Size;
 
     /* The OPSIZE prefix toggles the size */
-    if (State->PrefixFlags & FAST486_PREFIX_OPSIZE) Size = !Size;
+    TOGGLE_OPSIZE(Size);
 
     if (Size)
     {
@@ -317,15 +317,19 @@ Fast486StackPush(PFAST486_STATE State,
             return FALSE;
         }
 
+        /* Store the value in SS:[ESP - 4] */
+        if (!Fast486WriteMemory(State,
+                                FAST486_REG_SS,
+                                State->GeneralRegs[FAST486_REG_ESP].Long - sizeof(ULONG),
+                                &Value,
+                                sizeof(ULONG)))
+        {
+            /* Exception occurred */
+            return FALSE;
+        }
+
         /* Subtract ESP by 4 */
         State->GeneralRegs[FAST486_REG_ESP].Long -= sizeof(ULONG);
-
-        /* Store the value in SS:ESP */
-        return Fast486WriteMemory(State,
-                                  FAST486_REG_SS,
-                                  State->GeneralRegs[FAST486_REG_ESP].Long,
-                                  &Value,
-                                  sizeof(ULONG));
     }
     else
     {
@@ -339,16 +343,22 @@ Fast486StackPush(PFAST486_STATE State,
             return FALSE;
         }
 
+        /* Store the value in SS:[SP - 2] */
+        if (!Fast486WriteMemory(State,
+                                FAST486_REG_SS,
+                                LOWORD(State->GeneralRegs[FAST486_REG_ESP].LowWord - sizeof(USHORT)),
+                                &ShortValue,
+                                sizeof(USHORT)))
+        {
+            /* Exception occurred */
+            return FALSE;
+        }
+
         /* Subtract SP by 2 */
         State->GeneralRegs[FAST486_REG_ESP].LowWord -= sizeof(USHORT);
-
-        /* Store the value in SS:SP */
-        return Fast486WriteMemory(State,
-                                  FAST486_REG_SS,
-                                  State->GeneralRegs[FAST486_REG_ESP].LowWord,
-                                  &ShortValue,
-                                  sizeof(USHORT));
     }
+
+    return TRUE;
 }
 
 FORCEINLINE
index e8a6a25..90cdc61 100644 (file)
@@ -754,7 +754,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeClearInt)
     if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
     {
         /* Check IOPL */
-        if (State->Flags.Iopl >= State->SegmentRegs[FAST486_REG_CS].Dpl)
+        if (State->Flags.Iopl >= Fast486GetCurrentPrivLevel(State))
         {
             /* Clear the interrupt flag */
             State->Flags.If = FALSE;
@@ -789,7 +789,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeSetInt)
     if (State->ControlRegisters[FAST486_REG_CR0] & FAST486_CR0_PE)
     {
         /* Check IOPL */
-        if (State->Flags.Iopl >= State->SegmentRegs[FAST486_REG_CS].Dpl)
+        if (State->Flags.Iopl >= Fast486GetCurrentPrivLevel(State))
         {
             /* Set the interrupt flag */
             State->Flags.If = TRUE;
@@ -4548,6 +4548,14 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeInt)
 {
     UCHAR IntNum;
 
+    /* Check for V86 mode */
+    if (State->Flags.Vm && (State->Flags.Iopl != 3))
+    {
+        /* Call the V86 monitor */
+        Fast486Exception(State, FAST486_EXCEPTION_GP);
+        return;
+    }
+
     switch (Opcode)
     {
         case 0xCC:  // INT 3
@@ -4679,7 +4687,7 @@ FAST486_OPCODE_HANDLER(Fast486OpcodeIret)
             /* Return to VM86 mode */
             ULONG Es, Ds, Fs, Gs;
 
-            /* Pop ESP, SS, ES, FS, GS */
+            /* Pop ESP, SS, ES, DS, FS, GS */
             if (!Fast486StackPop(State, &StackPtr)) return;
             if (!Fast486StackPop(State, &StackSel)) return;
             if (!Fast486StackPop(State, &Es)) return;
index 5d50945..0f0f7aa 100644 (file)
 NTSTATUS
 NTAPI
 RtlFindMessage(
-    PVOID BaseAddress,
-    ULONG Type,
-    ULONG Language,
-    ULONG MessageId,
-    PMESSAGE_RESOURCE_ENTRY *MessageResourceEntry)
+    IN PVOID BaseAddress,
+    IN ULONG Type,
+    IN ULONG Language,
+    IN ULONG MessageId,
+    OUT PMESSAGE_RESOURCE_ENTRY* MessageResourceEntry)
 {
     LDR_RESOURCE_INFO ResourceInfo;
     PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry;
@@ -122,41 +122,47 @@ RtlFindMessage(
     return STATUS_SUCCESS;
 }
 
+/*
+ * @unimplemented
+ */
 NTSTATUS
 NTAPI
 RtlFormatMessageEx(
-    PWSTR Message,
-    UCHAR MaxWidth,
-    BOOLEAN IgnoreInserts,
-    BOOLEAN Ansi,
-    BOOLEAN ArgumentIsArray,
-    va_list *Arguments,
-    PWSTR Buffer,
-    ULONG BufferSize,
-    ULONG Flags)
+    IN PWSTR Message,
+    IN ULONG MaxWidth OPTIONAL,
+    IN BOOLEAN IgnoreInserts,
+    IN BOOLEAN ArgumentsAreAnsi,
+    IN BOOLEAN ArgumentsAreAnArray,
+    IN va_list* Arguments,
+    OUT PWSTR Buffer,
+    IN ULONG BufferSize,
+    OUT PULONG ReturnLength OPTIONAL,
+    IN ULONG Flags)
 {
-    DPRINT1("RtlFormatMessage(%S, %u, %s, %s, %s, %s, %p, %lu %lx)\n",
-            Message, MaxWidth, IgnoreInserts ? "TRUE" : "FALSE", Ansi ? "TRUE" : "FALSE",
-            ArgumentIsArray ? "TRUE" : "FALSE", (PSTR)Arguments, Buffer, BufferSize, Flags);
+    DPRINT1("RtlFormatMessage(%S, %lu, %s, %s, %s, %p, %p, %lu, %p, %lx)\n",
+            Message, MaxWidth, IgnoreInserts ? "TRUE" : "FALSE", ArgumentsAreAnsi ? "TRUE" : "FALSE",
+            ArgumentsAreAnArray ? "TRUE" : "FALSE", Arguments, Buffer, BufferSize,
+            ReturnLength, Flags);
 
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 /**********************************************************************
- *     RtlFormatMessage  (NTDLL.@)
+ *  RtlFormatMessage  (NTDLL.@)
  *
  * Formats a message (similar to sprintf).
  *
  * PARAMS
- *   Message          [I] Message to format.
- *   MaxWidth         [I] Maximum width in characters of each output line.
- *   IgnoreInserts    [I] Whether to copy the message without processing inserts.
- *   Ansi             [I] Whether Arguments may have ANSI strings.
- *   ArgumentsIsArray [I] Whether Arguments is actually an array rather than a va_list *.
- *   Arguments        [I]
- *   Buffer           [O] Buffer to store processed message in.
- *   BufferSize       [I] Size of Buffer (in bytes?).
+ *   Message             [I] Message to format.
+ *   MaxWidth            [I] Maximum width in characters of each output line (optional).
+ *   IgnoreInserts       [I] Whether to copy the message without processing inserts.
+ *   ArgumentsAreAnsi    [I] Whether Arguments may have ANSI strings.
+ *   ArgumentsAreAnArray [I] Whether Arguments is actually an array rather than a va_list *.
+ *   Arguments           [I]
+ *   Buffer              [O] Buffer to store processed message in.
+ *   BufferSize          [I] Size of Buffer (in bytes).
+ *   ReturnLength        [O] Size of the formatted message (in bytes; optional).
  *
  * RETURNS
  *      NTSTATUS code.
@@ -166,16 +172,27 @@ RtlFormatMessageEx(
 NTSTATUS
 NTAPI
 RtlFormatMessage(
-    PWSTR Message,
-    UCHAR MaxWidth,
-    BOOLEAN IgnoreInserts,
-    BOOLEAN Ansi,
-    BOOLEAN ArgumentIsArray,
-    va_list *Arguments,
-    PWSTR Buffer,
-    ULONG BufferSize)
+    IN PWSTR Message,
+    IN ULONG MaxWidth OPTIONAL,
+    IN BOOLEAN IgnoreInserts,
+    IN BOOLEAN ArgumentsAreAnsi,
+    IN BOOLEAN ArgumentsAreAnArray,
+    IN va_list* Arguments,
+    OUT PWSTR Buffer,
+    IN ULONG BufferSize,
+    OUT PULONG ReturnLength OPTIONAL)
 {
-    return RtlFormatMessageEx(Message, MaxWidth, IgnoreInserts, Ansi, ArgumentIsArray, Arguments, Buffer, BufferSize, 0);
+    /* Call the extended API */
+    return RtlFormatMessageEx(Message,
+                              MaxWidth,
+                              IgnoreInserts,
+                              ArgumentsAreAnsi,
+                              ArgumentsAreAnArray,
+                              Arguments,
+                              Buffer,
+                              BufferSize,
+                              ReturnLength,
+                              0);
 }
 
 /* EOF */
index b0969cf..03fb65f 100644 (file)
@@ -33,27 +33,27 @@ _main(
 static
 VOID FASTCALL EnvironmentStringToUnicodeString (PWCHAR wsIn, PUNICODE_STRING usOut)
 {
-   if (wsIn)
-   {
-      PWCHAR CurrentChar = wsIn;
-      
-      while (*CurrentChar)
-      {
-         while(*CurrentChar++);
-      }
-      /* double nullterm at end */
-      CurrentChar++;
-
-      usOut->Buffer = wsIn;
-      /* FIXME: the last (double) nullterm should perhaps not be included in Length
-       * but only in MaximumLength. -Gunnar */
-      usOut->MaximumLength = usOut->Length =  (CurrentChar-wsIn) * sizeof(WCHAR);
-   }
-   else
-   {
-      usOut->Buffer = NULL;
-      usOut->Length =  usOut->MaximumLength = 0;
-   }
+    if (wsIn)
+    {
+        PWCHAR CurrentChar = wsIn;
+
+        while (*CurrentChar)
+        {
+            while(*CurrentChar++);
+        }
+        /* double nullterm at end */
+        CurrentChar++;
+
+        usOut->Buffer = wsIn;
+        /* FIXME: the last (double) nullterm should perhaps not be included in Length
+        * but only in MaximumLength. -Gunnar */
+        usOut->MaximumLength = usOut->Length =  (CurrentChar-wsIn) * sizeof(WCHAR);
+    }
+    else
+    {
+        usOut->Buffer = NULL;
+        usOut->Length =  usOut->MaximumLength = 0;
+    }
 }
 
 
@@ -91,9 +91,9 @@ NtProcessStartup(PPEB Peb)
     ArgumentList = RtlAllocateHeap(RtlGetProcessHeap(), 0, 512 * sizeof(PCHAR));
     if (!ArgumentList)
     {
-       DPRINT1("ERR: no mem!");
-       Status = STATUS_NO_MEMORY;
-       goto fail;
+        DPRINT1("ERR: no mem!");
+        Status = STATUS_NO_MEMORY;
+        goto fail;
     }
 
     /* Use a null pointer as default */
@@ -117,8 +117,8 @@ NtProcessStartup(PPEB Peb)
     Status = RtlUnicodeStringToAnsiString(&AnsiCmdLine, CmdLineString, TRUE);
     if (!NT_SUCCESS(Status))
     {
-       DPRINT1("ERR: no mem(guess)\n");
-       goto fail;
+        DPRINT1("ERR: no mem(guess)\n");
+        goto fail;
     }
 
     /* Save parameters for parsing */
@@ -130,12 +130,12 @@ NtProcessStartup(PPEB Peb)
     {
         /* Allocate a buffer for the destination */
         Destination = RtlAllocateHeap(RtlGetProcessHeap(), 0, Length + sizeof(WCHAR));
-       if (!Destination)
-       {
-          DPRINT1("ERR: no mem!");
-          Status = STATUS_NO_MEMORY;
-          goto fail;
-       }
+        if (!Destination)
+        {
+            DPRINT1("ERR: no mem!");
+            Status = STATUS_NO_MEMORY;
+            goto fail;
+        }
 
         /* Start parsing */
         while (*Source)
@@ -164,33 +164,33 @@ NtProcessStartup(PPEB Peb)
     /* Null terminate the token pointer list */
     *ArgumentList++ = NULL;
 
-    /* Now handle the enviornment, point the envp at our current list location. */
+    /* Now handle the environment, point the envp at our current list location. */
     envp = ArgumentList;
 
     if (ProcessParameters->Environment)
     {
-      EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
-      Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
-      if (!NT_SUCCESS(Status))
-      {
-         DPRINT1("ERR: no mem(guess)\n");
-         goto fail;
-      }
-
-      ASSERT(AnsiEnvironment.Buffer);
-
-      Source = AnsiEnvironment.Buffer;
-      while (*Source)
-       {
-               /* Save a pointer to this token */
-               *ArgumentList++ = Source;
-
-               /* Keep looking for another variable */
-         while (*Source++);
-          }
-
-       /* Null terminate the list again */
-       *ArgumentList++ = NULL;
+        EnvironmentStringToUnicodeString(ProcessParameters->Environment, &UnicodeEnvironment);
+        Status = RtlUnicodeStringToAnsiString (& AnsiEnvironment, & UnicodeEnvironment, TRUE);
+        if (!NT_SUCCESS(Status))
+        {
+            DPRINT1("ERR: no mem(guess)\n");
+            goto fail;
+        }
+
+        ASSERT(AnsiEnvironment.Buffer);
+
+        Source = AnsiEnvironment.Buffer;
+        while (*Source)
+        {
+            /* Save a pointer to this token */
+            *ArgumentList++ = Source;
+
+            /* Keep looking for another variable */
+            while (*Source++);
+        }
+
+        /* Null terminate the list again */
+        *ArgumentList++ = NULL;
     }
     /* Breakpoint if we were requested to do so */
     if (ProcessParameters->DebugFlags) DbgBreakPoint();
index 9608032..1fa81df 100644 (file)
@@ -143,7 +143,7 @@ CcPinRead (
         if (CcPinMappedData(FileObject, FileOffset, Length, Flags, Bcb))
             return TRUE;
         else
-            CcUnpinData(Bcb);
+            CcUnpinData(*Bcb);
     }
     return FALSE;
 }
index b607a74..97373ac 100644 (file)
@@ -199,7 +199,10 @@ IopCaptureUnicodeString(PUNICODE_STRING DstName, PUNICODE_STRING SrcName)
     }
     _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
     {
-        if (Name.Buffer) ExFreePool(Name.Buffer);
+        if (Name.Buffer)
+        {
+            ExFreePool(Name.Buffer);
+        }
         Status = _SEH2_GetExceptionCode();
     }
     _SEH2_END;
index 41732e3..0535a7d 100644 (file)
@@ -300,7 +300,9 @@ NTAPI
 MmMpwThreadMain(PVOID Parameter)
 {
     NTSTATUS Status;
+#ifndef NEWCC
     ULONG PagesWritten;
+#endif
     LARGE_INTEGER Timeout;
 
     UNREFERENCED_PARAMETER(Parameter);
@@ -321,9 +323,9 @@ MmMpwThreadMain(PVOID Parameter)
             return;
         }
 
+#ifndef NEWCC
         PagesWritten = 0;
 
-#ifndef NEWCC
         // XXX arty -- we flush when evicting pages or destorying cache
         // sections.
         CcRosFlushDirtyPages(128, &PagesWritten, FALSE);
index abb4835..fd2f037 100644 (file)
@@ -904,17 +904,16 @@ MmUnsharePageEntrySectionSegment(PROS_SECTION_OBJECT Section,
     if (SHARE_COUNT_FROM_SSE(Entry) == 0)
     {
         PFILE_OBJECT FileObject;
-#ifndef NEWCC
-        PROS_SHARED_CACHE_MAP SharedCacheMap;
-#endif
         SWAPENTRY SavedSwapEntry;
         PFN_NUMBER Page;
+#ifndef NEWCC
+        PROS_SHARED_CACHE_MAP SharedCacheMap;
         BOOLEAN IsImageSection;
         LARGE_INTEGER FileOffset;
 
         FileOffset.QuadPart = Offset->QuadPart + Segment->Image.FileOffset;
-
         IsImageSection = Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
+#endif
 
         Page = PFN_FROM_SSE(Entry);
         FileObject = Section->FileObject;
@@ -1873,14 +1872,14 @@ MmPageOutSectionView(PMMSUPPORT AddressSpace,
     PFN_NUMBER Page;
     MM_SECTION_PAGEOUT_CONTEXT Context;
     SWAPENTRY SwapEntry;
-    ULONGLONG FileOffset;
     NTSTATUS Status;
-    PFILE_OBJECT FileObject;
 #ifndef NEWCC
+    ULONGLONG FileOffset;
+    PFILE_OBJECT FileObject;
     PROS_SHARED_CACHE_MAP SharedCacheMap = NULL;
+    BOOLEAN IsImageSection;
 #endif
     BOOLEAN DirectMapped;
-    BOOLEAN IsImageSection;
     PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
     KIRQL OldIrql;
 
@@ -1896,16 +1895,16 @@ MmPageOutSectionView(PMMSUPPORT AddressSpace,
 
     Context.Offset.QuadPart = (ULONG_PTR)Address - (ULONG_PTR)MemoryArea->StartingAddress
                               + MemoryArea->Data.SectionData.ViewOffset.QuadPart;
-    FileOffset = Context.Offset.QuadPart + Context.Segment->Image.FileOffset;
 
-    IsImageSection = Context.Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
-
-    FileObject = Context.Section->FileObject;
     DirectMapped = FALSE;
 
     MmLockSectionSegment(Context.Segment);
 
 #ifndef NEWCC
+    FileOffset = Context.Offset.QuadPart + Context.Segment->Image.FileOffset;
+    IsImageSection = Context.Section->AllocationAttributes & SEC_IMAGE ? TRUE : FALSE;
+    FileObject = Context.Section->FileObject;
+
     if (FileObject != NULL &&
             !(Context.Segment->Image.Characteristics & IMAGE_SCN_MEM_SHARED))
     {
@@ -2284,7 +2283,9 @@ MmWritePageSectionView(PMMSUPPORT AddressSpace,
     BOOLEAN Private;
     NTSTATUS Status;
     PFILE_OBJECT FileObject;
+#ifndef NEWCC
     PROS_SHARED_CACHE_MAP SharedCacheMap = NULL;
+#endif
     BOOLEAN DirectMapped;
     BOOLEAN IsImageSection;
     PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
@@ -2306,7 +2307,9 @@ MmWritePageSectionView(PMMSUPPORT AddressSpace,
     if (FileObject != NULL &&
             !(Segment->Image.Characteristics & IMAGE_SCN_MEM_SHARED))
     {
+#ifndef NEWCC
         SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
+#endif
 
         /*
          * If the file system is letting us go directly to the cache and the
@@ -3987,8 +3990,10 @@ MmFreeSectionPage(PVOID Context, MEMORY_AREA* MemoryArea, PVOID Address,
                   PFN_NUMBER Page, SWAPENTRY SwapEntry, BOOLEAN Dirty)
 {
     ULONG_PTR Entry;
+#ifndef NEWCC
     PFILE_OBJECT FileObject;
     PROS_SHARED_CACHE_MAP SharedCacheMap;
+#endif
     LARGE_INTEGER Offset;
     SWAPENTRY SavedSwapEntry;
     PROS_SECTION_OBJECT Section;
@@ -4028,9 +4033,9 @@ MmFreeSectionPage(PVOID Context, MEMORY_AREA* MemoryArea, PVOID Address,
     {
         if (Page == PFN_FROM_SSE(Entry) && Dirty)
         {
+#ifndef NEWCC
             FileObject = MemoryArea->Data.SectionData.Section->FileObject;
             SharedCacheMap = FileObject->SectionObjectPointer->SharedCacheMap;
-#ifndef NEWCC
             CcRosMarkDirtyVacb(SharedCacheMap, Offset.QuadPart + Segment->Image.FileOffset);
 #endif
             ASSERT(SwapEntry == 0);
index 0dbd377..f32adaa 100644 (file)
@@ -277,9 +277,9 @@ PopGracefulShutdown(IN PVOID Context)
 
     /* Note that modified pages should be written here (MiShutdownSystem) */
 #ifdef NEWCC
-       /* Flush all user files before we start shutting down IO */
-       /* This is where modified pages are written back by the IO manager */
-       CcShutdownSystem();
+    /* Flush all user files before we start shutting down IO */
+    /* This is where modified pages are written back by the IO manager */
+    CcShutdownSystem();
 #endif
 
     /* In this step, the I/O manager does last-chance shutdown notification */
index 758eb9d..6bccb3e 100644 (file)
@@ -682,7 +682,8 @@ NtPowerInformation(IN POWER_INFORMATION_LEVEL PowerInformationLevel,
             Status = STATUS_SUCCESS;
             break;
         }
-               case SystemPowerCapabilities:
+
+        case SystemPowerCapabilities:
         {
             PSYSTEM_POWER_CAPABILITIES PowerCapabilities = (PSYSTEM_POWER_CAPABILITIES)OutputBuffer;
 
@@ -794,8 +795,8 @@ NtSetThreadExecutionState(IN EXECUTION_STATE esFlags,
 NTSTATUS
 NTAPI
 NtSetSystemPowerState(IN POWER_ACTION SystemAction,
-                             IN SYSTEM_POWER_STATE MinSystemState,
-                             IN ULONG Flags)
+                      IN SYSTEM_POWER_STATE MinSystemState,
+                      IN ULONG Flags)
 {
     KPROCESSOR_MODE PreviousMode = KeGetPreviousMode();
     POP_POWER_ACTION Action = {0};
@@ -834,7 +835,7 @@ NtSetSystemPowerState(IN POWER_ACTION SystemAction,
         }
 
         /* Do it as a kernel-mode caller for consistency with system state */
-        return ZwSetSystemPowerState (SystemAction, MinSystemState, Flags);
+        return ZwSetSystemPowerState(SystemAction, MinSystemState, Flags);
     }
 
     /* Read policy settings (partial shutdown vs. full shutdown) */
index add151f..f510e9d 100644 (file)
@@ -1,5 +1,8 @@
 
+PROJECT(NTVDM)
+
 include_directories(${REACTOS_SOURCE_DIR}/include/reactos/libs/fast486)
+
 spec2def(ntvdm.exe ntvdm.spec)
 
 list(APPEND SOURCE
@@ -16,13 +19,14 @@ list(APPEND SOURCE
     cpu/cpu.c
     cpu/registers.c
     hardware/cmos.c
+    hardware/dma.c
     hardware/keyboard.c
     hardware/mouse.c
     hardware/pic.c
+    hardware/pit.c
     hardware/ps2.c
-    hardware/speaker.c
-    hardware/timer.c
-    hardware/vga.c
+    hardware/sound/speaker.c
+    hardware/video/vga.c
     dos/dos32krnl/bios.c
     dos/dos32krnl/dos.c
     dos/dos32krnl/dosfiles.c
index bff238b..548e7dd 100644 (file)
@@ -29,7 +29,7 @@
 #include "io.h"
 #include "hardware/cmos.h"
 #include "hardware/pic.h"
-#include "hardware/timer.h"
+#include "hardware/pit.h"
 
 /* Extra PSDK/NDK Headers */
 #include <ndk/kefuncs.h>
@@ -151,6 +151,19 @@ static VOID WINAPI BiosMiscService(LPWORD Stack)
 {
     switch (getAH())
     {
+        /* OS Hooks for Multitasking */
+        case 0x80:  // Device Open
+        case 0x81:  // Device Close
+        case 0x82:  // Program Termination
+        case 0x90:  // Device Busy
+        case 0x91:  // Device POST
+        {
+            /* Return success by default */
+            setAH(0x00);
+            Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
+            break;
+        }
+
         /* Keyboard intercept */
         case 0x4F:
         {
@@ -234,6 +247,15 @@ static VOID WINAPI BiosMiscService(LPWORD Stack)
             break;
         }
 
+        /* Switch to Protected Mode */
+        case 0x89:
+        {
+            DPRINT1("BIOS INT 15h, AH=89h \"Switch to Protected Mode\" is UNIMPLEMENTED");
+
+            Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
+            break;
+        }
+
         /* Get Configuration */
         case 0xC0:
         {
@@ -255,6 +277,8 @@ static VOID WINAPI BiosMiscService(LPWORD Stack)
             // Stack[STACK_FLAGS] &= ~EMULATOR_FLAG_CF;
             // setES(???);
 
+            UNIMPLEMENTED;
+
             /* We do not support EBDA yet */
             Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
 
index cb854c1..8bafefa 100644 (file)
@@ -19,7 +19,7 @@
 // #include "vidbios.h"
 
 #include "io.h"
-#include "hardware/vga.h"
+#include "hardware/video/vga.h"
 
 /* DEFINES ********************************************************************/
 
@@ -1943,132 +1943,153 @@ static CONST UCHAR Font8x16[VGA_FONT_CHARACTERS * 16] =
 
 /* PRIVATE FUNCTIONS **********************************************************/
 
-static VOID VidBiosReadWindow(LPWORD Buffer, SMALL_RECT Rectangle, BYTE Page)
+static BOOLEAN VidBiosScrollWindow(SCROLL_DIRECTION Direction,
+                                   DWORD Amount,
+                                   SMALL_RECT Rectangle,
+                                   BYTE Page,
+                                   BYTE FillAttribute)
 {
     INT i, j;
-    INT Counter = 0;
-    WORD Character;
     DWORD VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+    WORD FillCharacter = MAKEWORD(' ', FillAttribute);
 
-    for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
-    {
-        for (j = Rectangle.Left; j <= Rectangle.Right; j++)
-        {
-            /* Read from video memory */
-            EmulatorReadMemory(&EmulatorContext,
-                               VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
-                               (LPVOID)&Character,
-                               sizeof(WORD));
+    WORD WindowWidth, WindowHeight;
 
-            /* Write the data to the buffer in row order */
-            Buffer[Counter++] = Character;
-        }
-    }
-}
-
-static VOID VidBiosWriteWindow(LPWORD Buffer, SMALL_RECT Rectangle, BYTE Page)
-{
-    INT i, j;
-    INT Counter = 0;
-    WORD Character;
-    DWORD VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+    /* Fixup the rectangle if needed */
+    Rectangle.Left   = min(max(Rectangle.Left  , 0), Bda->ScreenColumns - 1);
+    Rectangle.Right  = min(max(Rectangle.Right , 0), Bda->ScreenColumns - 1);
+    Rectangle.Top    = min(max(Rectangle.Top   , 0), Bda->ScreenRows);
+    Rectangle.Bottom = min(max(Rectangle.Bottom, 0), Bda->ScreenRows);
 
-    for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
-    {
-        for (j = Rectangle.Left; j <= Rectangle.Right; j++)
-        {
-            Character = Buffer[Counter++];
-
-            /* Write to video memory */
-            EmulatorWriteMemory(&EmulatorContext,
-                                VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
-                                (LPVOID)&Character,
-                                sizeof(WORD));
-        }
-    }
-}
+    WindowWidth  = Rectangle.Right  - Rectangle.Left + 1;
+    WindowHeight = Rectangle.Bottom - Rectangle.Top  + 1;
 
-static BOOLEAN VidBiosScrollWindow(INT Direction,
-                                   DWORD Amount,
-                                   SMALL_RECT Rectangle,
-                                   BYTE Page,
-                                   BYTE FillAttribute)
-{
-    DWORD i;
-    LPWORD WindowData;
-    WORD WindowWidth = Rectangle.Right - Rectangle.Left + 1;
-    WORD WindowHeight = Rectangle.Bottom - Rectangle.Top + 1;
-    DWORD WindowSize = WindowWidth * WindowHeight;
-
-    /* Allocate a buffer for the window */
-    WindowData = (LPWORD)HeapAlloc(GetProcessHeap(),
-                                   HEAP_ZERO_MEMORY,
-                                   WindowSize * sizeof(WORD));
-    if (WindowData == NULL) return FALSE;
-
-    /* Read the window data */
-    VidBiosReadWindow(WindowData, Rectangle, Page);
-
-    if ((Amount == 0)
-        || (((Direction == SCROLL_DIRECTION_UP)
-        || (Direction == SCROLL_DIRECTION_DOWN))
-        && (Amount >= WindowHeight))
-        || (((Direction == SCROLL_DIRECTION_LEFT)
-        || (Direction == SCROLL_DIRECTION_RIGHT))
-        && (Amount >= WindowWidth)))
+    /* Amount == 0 means we clear all the rectangle */
+    if ((Amount == 0) ||
+        (((Direction == SCROLL_UP  ) || (Direction == SCROLL_DOWN )) && (Amount >= WindowHeight)) ||
+        (((Direction == SCROLL_LEFT) || (Direction == SCROLL_RIGHT)) && (Amount >= WindowWidth )))
     {
-        /* Fill the window */
-        for (i = 0; i < WindowSize; i++)
+        /* Fill the rectangle */
+        for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
         {
-            WindowData[i] = MAKEWORD(' ', FillAttribute);
+            for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+            {
+                EmulatorWriteMemory(&EmulatorContext,
+                                    VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                    (LPVOID)&FillCharacter,
+                                    sizeof(FillCharacter));
+            }
         }
 
-        goto Done;
+        return TRUE;
     }
 
     switch (Direction)
     {
-        case SCROLL_DIRECTION_UP:
+        case SCROLL_UP:
         {
-            RtlMoveMemory(WindowData,
-                          &WindowData[WindowWidth * Amount],
-                          (WindowSize - WindowWidth * Amount) * sizeof(WORD));
+            /* Move text lines up */
+            for (i = Rectangle.Top + Amount; i <= Rectangle.Bottom; i++)
+            {
+                EmulatorWriteMemory(&EmulatorContext,
+                                    VideoAddress + ((i - Amount) * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD),
+                       REAL_TO_PHYS(VideoAddress + ( i           * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD)),
+                                    (Rectangle.Right - Rectangle.Left + 1) * sizeof(WORD));
+            }
 
-            for (i = 0; i < Amount * WindowWidth; i++)
+            /* Fill the bottom of the rectangle */
+            for (i = Rectangle.Bottom - Amount + 1; i <= Rectangle.Bottom; i++)
             {
-                WindowData[WindowSize - i - 1] = MAKEWORD(' ', FillAttribute);
+                for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+                {
+                    EmulatorWriteMemory(&EmulatorContext,
+                                        VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                        (LPVOID)&FillCharacter,
+                                        sizeof(FillCharacter));
+                }
             }
 
             break;
         }
 
-        case SCROLL_DIRECTION_DOWN:
+        case SCROLL_DOWN:
         {
-            RtlMoveMemory(&WindowData[WindowWidth * Amount],
-                          WindowData,
-                          (WindowSize - WindowWidth * Amount) * sizeof(WORD));
+            /* Move text lines down */
+            for (i = Rectangle.Bottom - Amount; i >= Rectangle.Top; i--)
+            {
+                EmulatorWriteMemory(&EmulatorContext,
+                                    VideoAddress + ((i + Amount) * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD),
+                       REAL_TO_PHYS(VideoAddress + ( i           * Bda->ScreenColumns + Rectangle.Left) * sizeof(WORD)),
+                                    (Rectangle.Right - Rectangle.Left + 1) * sizeof(WORD));
+            }
 
-            for (i = 0; i < Amount * WindowWidth; i++)
+            /* Fill the top of the rectangle */
+            for (i = Rectangle.Top; i <= Rectangle.Top + Amount - 1; i++)
             {
-                WindowData[i] = MAKEWORD(' ', FillAttribute);
+                for (j = Rectangle.Left; j <= Rectangle.Right; j++)
+                {
+                    EmulatorWriteMemory(&EmulatorContext,
+                                        VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                        (LPVOID)&FillCharacter,
+                                        sizeof(FillCharacter));
+                }
             }
 
             break;
         }
 
-        default:
+        case SCROLL_LEFT:
         {
-            // TODO: NOT IMPLEMENTED!
-            UNIMPLEMENTED;
+            /* Move text lines left */
+            for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+            {
+                EmulatorWriteMemory(&EmulatorContext,
+                                    VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left         ) * sizeof(WORD),
+                       REAL_TO_PHYS(VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left + Amount) * sizeof(WORD)),
+                                    (Rectangle.Right - Rectangle.Left - Amount + 1) * sizeof(WORD));
+            }
+
+            /* Fill the right of the rectangle */
+            for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+            {
+                for (j = Rectangle.Right - Amount + 1; j <= Rectangle.Right; j++)
+                {
+                    EmulatorWriteMemory(&EmulatorContext,
+                                        VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                        (LPVOID)&FillCharacter,
+                                        sizeof(FillCharacter));
+                }
+            }
+
+            break;
         }
-    }
 
-Done:
-    /* Write back the window data */
-    VidBiosWriteWindow(WindowData, Rectangle, Page);
+        case SCROLL_RIGHT:
+        {
+            /* Move text lines right */
+            for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+            {
+                EmulatorWriteMemory(&EmulatorContext,
+                                    VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left + Amount) * sizeof(WORD),
+                       REAL_TO_PHYS(VideoAddress + (i * Bda->ScreenColumns + Rectangle.Left         ) * sizeof(WORD)),
+                                    (Rectangle.Right - Rectangle.Left - Amount + 1) * sizeof(WORD));
+            }
+
+            /* Fill the left of the rectangle */
+            for (i = Rectangle.Top; i <= Rectangle.Bottom; i++)
+            {
+                for (j = Rectangle.Left; j <= Rectangle.Left + Amount - 1; j++)
+                {
+                    EmulatorWriteMemory(&EmulatorContext,
+                                        VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                        (LPVOID)&FillCharacter,
+                                        sizeof(FillCharacter));
+                }
+            }
 
-    /* Free the window buffer */
-    HeapFree(GetProcessHeap(), 0, WindowData);
+            break;
+        }
+    }
 
     return TRUE;
 }
@@ -2339,7 +2360,7 @@ VOID VidBiosSyncCursorPosition(VOID)
     VidBiosSetCursorPosition(Row, Column, Bda->VideoPage);
 }
 
-static BYTE VidBiosGetVideoMode(VOID)
+static inline BYTE VidBiosGetVideoMode(VOID)
 {
     /* Bit 7 of VideoMode is determined by bit 7 of VGAOptions */
     return Bda->VideoMode | (Bda->VGAOptions & 0x80);
@@ -2427,6 +2448,31 @@ static BOOLEAN VidBiosSetVideoMode(BYTE ModeNumber)
 
     // FIXME: We need to reset the fonts and the font vectors. (INT 1Fh and 43h).
 
+    // HACK: We clear here all the text memory. TODO: Do it better!
+    if (!DoNotClear && ((ModeNumber >= 0x00 && ModeNumber <= 0x03) || (ModeNumber == 0x07)))
+    {
+        INT i, j;
+        DWORD VideoAddress;
+        WORD FillCharacter = MAKEWORD(' ', DEFAULT_ATTRIBUTE);
+
+        for (Page = 0; Page < BIOS_MAX_PAGES; ++Page)
+        {
+            VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize);
+
+            for (i = 0; i <= Bda->ScreenRows; i++)
+            {
+                for (j = 0; j <= Bda->ScreenColumns - 1; j++)
+                {
+                    /* Write to video memory */
+                    EmulatorWriteMemory(&EmulatorContext,
+                                        VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD),
+                                        (LPVOID)&FillCharacter,
+                                        sizeof(FillCharacter));
+                }
+            }
+        }
+    }
+
     /* Refresh display */
     VgaRefreshDisplay();
 
@@ -2552,13 +2598,7 @@ static VOID VidBiosPrintCharacter(CHAR Character, BYTE Attribute, BYTE Page)
     {
         /* The screen must be scrolled up */
         SMALL_RECT Rectangle = { 0, 0, Bda->ScreenColumns - 1, Bda->ScreenRows };
-
-        VidBiosScrollWindow(SCROLL_DIRECTION_UP,
-                            1,
-                            Rectangle,
-                            Page,
-                            DEFAULT_ATTRIBUTE);
-
+        VidBiosScrollWindow(SCROLL_UP, 1, Rectangle, Page, DEFAULT_ATTRIBUTE/*Attribute*/);
         Row--;
     }
 
@@ -2629,13 +2669,8 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
         {
             SMALL_RECT Rectangle = { getCL(), getCH(), getDL(), getDH() };
 
-            /* Call the internal function */
-            VidBiosScrollWindow((getAH() == 0x06) ? SCROLL_DIRECTION_UP
-                                                  : SCROLL_DIRECTION_DOWN,
-                                getAL(),
-                                Rectangle,
-                                Bda->VideoPage,
-                                getBH());
+            VidBiosScrollWindow((getAH() == 0x06) ? SCROLL_UP : SCROLL_DOWN,
+                                getAL(), Rectangle, Bda->VideoPage, getBH());
 
             break;
         }
@@ -3177,12 +3212,12 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
             break;
         }
 
-        /* Display combination code */
+        /* Get/Set Display combination code */
         case 0x1A:
         {
             switch (getAL())
             {
-                case 0x00: /* Get Display combiantion code */
+                case 0x00: /* Get Display combination code */
                    setAX(MAKEWORD(0x1A, 0x1A));
                    setBX(MAKEWORD(0x08, 0x00)); /* VGA w/ color analog display */
                    break;
index 32118a8..99849d5 100644 (file)
 #define FONT_8x16_OFFSET        0x0800
 #define FONT_8x14_OFFSET        0x1800
 
-enum
+typedef enum
 {
-    SCROLL_DIRECTION_UP,
-    SCROLL_DIRECTION_DOWN,
-    SCROLL_DIRECTION_LEFT,
-    SCROLL_DIRECTION_RIGHT
-};
+    SCROLL_UP,
+    SCROLL_DOWN,
+    SCROLL_LEFT,
+    SCROLL_RIGHT
+} SCROLL_DIRECTION;
 
 /* FUNCTIONS ******************************************************************/
 
index 14f67d5..305ccc2 100644 (file)
@@ -18,8 +18,8 @@
 
 #include "hardware/cmos.h"
 #include "hardware/ps2.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
 
 /* Extra PSDK/NDK Headers */
 #include <ndk/kefuncs.h>
index 7b56e08..6666978 100644 (file)
@@ -24,9 +24,9 @@
 #include "hardware/mouse.h"
 #include "hardware/pic.h"
 #include "hardware/ps2.h"
-#include "hardware/speaker.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/sound/speaker.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
 
 #include "io.h"
 
index 9e1078f..e65c2ef 100644 (file)
@@ -236,7 +236,7 @@ Command:
             {
                 /* Expand the environment size */
                 EnvSize = CommandInfo.EnvLen;
-                Env = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Env, EnvSize);
+                CommandInfo.Env = Env = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Env, EnvSize);
 
                 /* Repeat the request */
                 goto Command;
@@ -423,7 +423,7 @@ static VOID WINAPI DosStart(LPWORD Stack)
     RegisterBop(BOP_START_DOS, NULL);
 
     /* Load the mouse driver */
-    DosMouseInitialize();
+    // DosMouseInitialize();
 
 #ifndef STANDALONE
 
index 743b4b6..4e2fc18 100644 (file)
@@ -403,40 +403,60 @@ static VOID DosChangeMemoryOwner(WORD Segment, WORD NewOwner)
     Mcb->OwnerPsp = NewOwner;
 }
 
-static WORD DosCopyEnvironmentBlock(LPCSTR Environment, LPCSTR ProgramName)
+static WORD DosCopyEnvironmentBlock(LPCSTR Environment OPTIONAL,
+                                    LPCSTR ProgramName)
 {
     PCHAR Ptr, DestBuffer = NULL;
     ULONG TotalSize = 0;
     WORD DestSegment;
 
-    Ptr = (PCHAR)Environment;
+    /* If we have an environment strings list, compute its size */
+    if (Environment)
+    {
+        /* Calculate the size of the environment block */
+        Ptr = (PCHAR)Environment;
+        while (*Ptr) Ptr += strlen(Ptr) + 1;
+        TotalSize = (ULONG_PTR)Ptr - (ULONG_PTR)Environment;
+    }
+    else
+    {
+        /* Empty environment string */
+        TotalSize = 1;
+    }
+    /* Add the final environment block NULL-terminator */
+    TotalSize++;
 
-    /* Calculate the size of the environment block */
-    while (*Ptr) Ptr += strlen(Ptr) + 1;
-    TotalSize = (ULONG_PTR)Ptr - (ULONG_PTR)Environment + 1; // Add final NULL-terminator
+    /* Add the two bytes for the program name tag */
+    TotalSize += 2;
 
     /* Add the string buffer size */
     TotalSize += strlen(ProgramName) + 1;
 
-    /* Add the two extra bytes */
-    TotalSize += 2;
-
     /* Allocate the memory for the environment block */
     DestSegment = DosAllocateMemory((WORD)((TotalSize + 0x0F) >> 4), NULL);
     if (!DestSegment) return 0;
 
-    Ptr = (PCHAR)Environment;
-
     DestBuffer = (PCHAR)SEG_OFF_TO_PTR(DestSegment, 0);
-    while (*Ptr)
+
+    /* If we have an environment strings list, copy it */
+    if (Environment)
     {
-        /* Copy the string and NULL-terminate it */
-        strcpy(DestBuffer, Ptr);
-        DestBuffer += strlen(Ptr);
-        *(DestBuffer++) = '\0';
+        Ptr = (PCHAR)Environment;
+        while (*Ptr)
+        {
+            /* Copy the string and NULL-terminate it */
+            strcpy(DestBuffer, Ptr);
+            DestBuffer += strlen(Ptr);
+            *(DestBuffer++) = '\0';
 
-        /* Move to the next string */
-        Ptr += strlen(Ptr) + 1;
+            /* Move to the next string */
+            Ptr += strlen(Ptr) + 1;
+        }
+    }
+    else
+    {
+        /* Empty environment string */
+        *(DestBuffer++) = '\0';
     }
     /* NULL-terminate the environment block */
     *(DestBuffer++) = '\0';
@@ -900,7 +920,7 @@ VOID DosInitializePsp(WORD PspSegment, LPCSTR CommandLine, WORD ProgramSize, WOR
 DWORD DosLoadExecutable(IN DOS_EXEC_TYPE LoadType,
                         IN LPCSTR ExecutablePath,
                         IN LPCSTR CommandLine,
-                        IN LPCSTR Environment,
+                        IN LPCSTR Environment OPTIONAL,
                         OUT PDWORD StackLocation OPTIONAL,
                         OUT PDWORD EntryPoint OPTIONAL)
 {
@@ -920,7 +940,7 @@ DWORD DosLoadExecutable(IN DOS_EXEC_TYPE LoadType,
             LoadType,
             ExecutablePath,
             CommandLine,
-            Environment,
+            Environment ? Environment : "n/a",
             StackLocation,
             EntryPoint);
 
@@ -1144,7 +1164,7 @@ Cleanup:
 
 DWORD DosStartProcess(IN LPCSTR ExecutablePath,
                       IN LPCSTR CommandLine,
-                      IN LPCSTR Environment)
+                      IN LPCSTR Environment OPTIONAL)
 {
     DWORD Result;
 
index 3da70b6..a7da71b 100644 (file)
@@ -224,7 +224,7 @@ DWORD DosLoadExecutable(
     IN DOS_EXEC_TYPE LoadType,
     IN LPCSTR ExecutablePath,
     IN LPCSTR CommandLine,
-    IN LPCSTR Environment,
+    IN LPCSTR Environment OPTIONAL,
     OUT PDWORD StackLocation OPTIONAL,
     OUT PDWORD EntryPoint OPTIONAL
 );
@@ -236,7 +236,7 @@ WORD DosCreateProcess(
 DWORD DosStartProcess(
     IN LPCSTR ExecutablePath,
     IN LPCSTR CommandLine,
-    IN LPCSTR Environment
+    IN LPCSTR Environment OPTIONAL
 );
 VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode);
 BOOLEAN DosHandleIoctl(BYTE ControlCode, WORD FileHandle);
index 2d22307..004418a 100644 (file)
 #include "clock.h"
 #include "bios/rom.h"
 #include "hardware/cmos.h"
+#include "hardware/dma.h"
 #include "hardware/keyboard.h"
 #include "hardware/mouse.h"
 #include "hardware/pic.h"
 #include "hardware/ps2.h"
-#include "hardware/speaker.h"
-#include "hardware/timer.h"
-#include "hardware/vga.h"
+#include "hardware/sound/speaker.h"
+#include "hardware/pit.h"
+#include "hardware/video/vga.h"
 
 #include "vddsup.h"
 #include "io.h"
@@ -626,6 +627,7 @@ BOOLEAN EmulatorInitialize(HANDLE ConsoleInput, HANDLE ConsoleOutput)
     CpuInitialize();
 
     /* Initialize DMA */
+    DmaInitialize();
 
     /* Initialize the PIC, the PIT, the CMOS and the PC Speaker */
     PicInitialize();
@@ -706,6 +708,8 @@ VOID EmulatorCleanup(VOID)
     // PitCleanup();
     // PicCleanup();
 
+    // DmaCleanup();
+
     CpuCleanup();
 
 #ifdef STANDALONE
diff --git a/subsystems/ntvdm/hardware/dma.c b/subsystems/ntvdm/hardware/dma.c
new file mode 100644 (file)
index 0000000..e442242
--- /dev/null
@@ -0,0 +1,462 @@
+/*
+ * COPYRIGHT:       GPL - See COPYING in the top level directory
+ * PROJECT:         ReactOS Virtual DOS Machine
+ * FILE:            dma.c
+ * PURPOSE:         Direct Memory Access Controller emulation -
+ *                  i8237A compatible with 74LS612 Memory Mapper extension
+ * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+/* INCLUDES *******************************************************************/
+
+#define NDEBUG
+
+#include "emulator.h"
+#include "io.h"
+#include "dma.h"
+
+/* PRIVATE VARIABLES **********************************************************/
+
+/*
+ * DMA Controller 0 (Channels 0..3): Slave controller
+ * DMA Controller 1 (Channels 4..7): Master controller
+ */
+static DMA_CONTROLLER DmaControllers[DMA_CONTROLLERS];
+
+/* External page registers for each channel of the two DMA controllers */
+static DMA_PAGE_REGISTER DmaPageRegisters[DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS];
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+#define READ_ADDR(CtrlIndex, ChanIndex, Data)   \
+do {                                            \
+    (Data) =                                    \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrAddress + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01));                    \
+    DmaControllers[(CtrlIndex)].FlipFlop ^= 1;                                  \
+} while(0)
+
+#define READ_CNT(CtrlIndex, ChanIndex, Data)    \
+do {                                            \
+    (Data) =                                    \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrWordCnt + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01));                    \
+    DmaControllers[(CtrlIndex)].FlipFlop ^= 1;                                  \
+} while(0)
+
+static BYTE WINAPI DmaReadPort(USHORT Port)
+{
+    BYTE ReadValue = 0xFF;
+
+    switch (Port)
+    {
+        /* Start Address Registers */
+        {
+        case 0x00:
+            READ_ADDR(0, 0, ReadValue);
+            return ReadValue;
+        case 0x02:
+            READ_ADDR(0, 1, ReadValue);
+            return ReadValue;
+        case 0x04:
+            READ_ADDR(0, 2, ReadValue);
+            return ReadValue;
+        case 0x06:
+            READ_ADDR(0, 3, ReadValue);
+            return ReadValue;
+        case 0xC0:
+            READ_ADDR(1, 0, ReadValue);
+            return ReadValue;
+        case 0xC4:
+            READ_ADDR(1, 1, ReadValue);
+            return ReadValue;
+        case 0xC8:
+            READ_ADDR(1, 2, ReadValue);
+            return ReadValue;
+        case 0xCC:
+            READ_ADDR(1, 3, ReadValue);
+            return ReadValue;
+        }
+
+        /* Count Address Registers */
+        {
+        case 0x01:
+            READ_CNT(0, 0, ReadValue);
+            return ReadValue;
+        case 0x03:
+            READ_CNT(0, 1, ReadValue);
+            return ReadValue;
+        case 0x05:
+            READ_CNT(0, 2, ReadValue);
+            return ReadValue;
+        case 0x07:
+            READ_CNT(0, 3, ReadValue);
+            return ReadValue;
+        case 0xC2:
+            READ_CNT(1, 0, ReadValue);
+            return ReadValue;
+        case 0xC6:
+            READ_CNT(1, 1, ReadValue);
+            return ReadValue;
+        case 0xCA:
+            READ_CNT(1, 2, ReadValue);
+            return ReadValue;
+        case 0xCE:
+            READ_CNT(1, 3, ReadValue);
+            return ReadValue;
+        }
+
+        /* Status Registers */
+        {
+        case 0x08:
+            return DmaControllers[0].Status;
+        case 0xD0:
+            return DmaControllers[1].Status;
+        }
+
+        /* DMA Intermediate (Temporary) Registers */
+        {
+        case 0x0D:
+            return DmaControllers[0].TempReg;
+        case 0xDA:
+            return DmaControllers[1].TempReg;
+        }
+    }
+
+    return 0x00;
+}
+
+#define WRITE_ADDR(CtrlIndex, ChanIndex, Data)  \
+do {                                            \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].BaseAddress + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data);           \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrAddress + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data);           \
+    DmaControllers[(CtrlIndex)].FlipFlop ^= 1;                                  \
+} while(0)
+
+#define WRITE_CNT(CtrlIndex, ChanIndex, Data)   \
+do {                                            \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].BaseWordCnt + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data);           \
+    *((PBYTE)&DmaControllers[(CtrlIndex)].DmaChannel[(ChanIndex)].CurrWordCnt + \
+             (DmaControllers[(CtrlIndex)].FlipFlop & 0x01)) = (Data);           \
+    DmaControllers[(CtrlIndex)].FlipFlop ^= 1;                                  \
+} while(0)
+
+static VOID WINAPI DmaWritePort(USHORT Port, BYTE Data)
+{
+    switch (Port)
+    {
+        /* Start Address Registers */
+        {
+        case 0x00:
+            WRITE_ADDR(0, 0, Data);
+            break;
+        case 0x02:
+            WRITE_ADDR(0, 1, Data);
+            break;
+        case 0x04:
+            WRITE_ADDR(0, 2, Data);
+            break;
+        case 0x06:
+            WRITE_ADDR(0, 3, Data);
+            break;
+        case 0xC0:
+            WRITE_ADDR(1, 0, Data);
+            break;
+        case 0xC4:
+            WRITE_ADDR(1, 1, Data);
+            break;
+        case 0xC8:
+            WRITE_ADDR(1, 2, Data);
+            break;
+        case 0xCC:
+            WRITE_ADDR(1, 3, Data);
+            break;
+        }
+
+        /* Count Address Registers */
+        {
+        case 0x01:
+            WRITE_CNT(0, 0, Data);
+            break;
+        case 0x03:
+            WRITE_CNT(0, 1, Data);
+            break;
+        case 0x05:
+            WRITE_CNT(0, 2, Data);
+            break;
+        case 0x07:
+            WRITE_CNT(0, 3, Data);
+            break;
+        case 0xC2:
+            WRITE_CNT(1, 0, Data);
+            break;
+        case 0xC6:
+            WRITE_CNT(1, 1, Data);
+            break;
+        case 0xCA:
+            WRITE_CNT(1, 2, Data);
+            break;
+        case 0xCE:
+            WRITE_CNT(1, 3, Data);
+            break;
+        }
+
+        /* Command Registers */
+        {
+        case 0x08:
+            DmaControllers[0].Command = Data;
+            break;
+        case 0xD0:
+            DmaControllers[1].Command = Data;
+            break;
+        }
+
+        /* Request Registers */
+        {
+        case 0x09:
+            DmaControllers[0].Request = Data;
+            break;
+        case 0xD2:
+            DmaControllers[1].Request = Data;
+            break;
+        }
+
+        /* Flip-Flop Reset */
+        {
+        case 0x0C:
+            DmaControllers[0].FlipFlop = 0;
+            break;
+        case 0xD8:
+            DmaControllers[1].FlipFlop = 0;
+            break;
+        }
+
+        /* DMA Master Reset */
+        {
+        case 0x0D:
+            DmaControllers[0].Command  = 0x00;
+            DmaControllers[0].Status   = 0x00;
+            DmaControllers[0].Request  = 0x00;
+            DmaControllers[0].TempReg  = 0x00;
+            DmaControllers[0].FlipFlop = 0;
+            DmaControllers[0].Mask     = 0x0F;
+            break;
+        case 0xDA:
+            DmaControllers[1].Command  = 0x00;
+            DmaControllers[1].Status   = 0x00;
+            DmaControllers[1].Request  = 0x00;
+            DmaControllers[1].TempReg  = 0x00;
+            DmaControllers[1].FlipFlop = 0;
+            DmaControllers[1].Mask     = 0x0F;
+            break;
+        }
+    }
+}
+
+/* Page Address Registers */
+
+static BYTE WINAPI DmaPageReadPort(USHORT Port)
+{
+    switch (Port)
+    {
+        case 0x87:
+            return DmaPageRegisters[0].Page;
+        case 0x83:
+            return DmaPageRegisters[1].Page;
+        case 0x81:
+            return DmaPageRegisters[2].Page;
+        case 0x82:
+            return DmaPageRegisters[3].Page;
+        case 0x8F:
+            return DmaPageRegisters[4].Page;
+        case 0x8B:
+            return DmaPageRegisters[5].Page;
+        case 0x89:
+            return DmaPageRegisters[6].Page;
+        case 0x8A:
+            return DmaPageRegisters[7].Page;
+    }
+
+    return 0x00;
+}
+
+static VOID WINAPI DmaPageWritePort(USHORT Port, BYTE Data)
+{
+    switch (Port)
+    {
+        case 0x87:
+            DmaPageRegisters[0].Page = Data;
+            break;
+        case 0x83:
+            DmaPageRegisters[1].Page = Data;
+            break;
+        case 0x81:
+            DmaPageRegisters[2].Page = Data;
+            break;
+        case 0x82:
+            DmaPageRegisters[3].Page = Data;
+            break;
+        case 0x8F:
+            DmaPageRegisters[4].Page = Data;
+            break;
+        case 0x8B:
+            DmaPageRegisters[5].Page = Data;
+            break;
+        case 0x89:
+            DmaPageRegisters[6].Page = Data;
+            break;
+        case 0x8A:
+            DmaPageRegisters[7].Page = Data;
+            break;
+    }
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+VOID DmaInitialize(VOID)
+{
+    /* Register the I/O Ports */
+
+    /* Channels 0(Reserved)..3 */
+    RegisterIoPort(0x00, NULL, DmaWritePort);           /* Start Address Register 0 (Reserved) */
+    RegisterIoPort(0x01, NULL, DmaWritePort);           /* Count Address Register 0 (Reserved) */
+    RegisterIoPort(0x02, NULL, DmaWritePort);           /* Start Address Register 1 */
+    RegisterIoPort(0x03, NULL, DmaWritePort);           /* Count Address Register 1 */
+    RegisterIoPort(0x04, NULL, DmaWritePort);           /* Start Address Register 2 */
+    RegisterIoPort(0x05, NULL, DmaWritePort);           /* Count Address Register 2 */
+    RegisterIoPort(0x06, NULL, DmaWritePort);           /* Start Address Register 3 */
+    RegisterIoPort(0x07, NULL, DmaWritePort);           /* Count Address Register 3 */
+
+    RegisterIoPort(0x08, DmaReadPort, DmaWritePort);    /* Status (Read) / Command (Write) Registers */
+    RegisterIoPort(0x09, NULL, DmaWritePort);           /* Request Register */
+    RegisterIoPort(0x0A, NULL, DmaWritePort);           /* Single Channel Mask Register */
+    RegisterIoPort(0x0B, NULL, DmaWritePort);           /* Mode Register */
+    RegisterIoPort(0x0C, NULL, DmaWritePort);           /* Flip-Flop Reset Register */
+    RegisterIoPort(0x0D, DmaReadPort, DmaWritePort);    /* Intermediate (Read) / Master Reset (Write) Registers */
+    RegisterIoPort(0x0E, NULL, DmaWritePort);           /* Mask Reset Register */
+    RegisterIoPort(0x0F, DmaReadPort, DmaWritePort);    /* Multi-Channel Mask Reset Register */
+
+
+    /* Channels 4(Reserved)..7 */
+    RegisterIoPort(0xC0, NULL, DmaWritePort);           /* Start Address Register 4 (Reserved) */
+    RegisterIoPort(0xC2, NULL, DmaWritePort);           /* Count Address Register 4 (Reserved) */
+    RegisterIoPort(0xC4, NULL, DmaWritePort);           /* Start Address Register 5 */
+    RegisterIoPort(0xC6, NULL, DmaWritePort);           /* Count Address Register 5 */
+    RegisterIoPort(0xC8, NULL, DmaWritePort);           /* Start Address Register 6 */
+    RegisterIoPort(0xCA, NULL, DmaWritePort);           /* Count Address Register 6 */
+    RegisterIoPort(0xCC, NULL, DmaWritePort);           /* Start Address Register 7 */
+    RegisterIoPort(0xCE, NULL, DmaWritePort);           /* Count Address Register 7 */
+
+    RegisterIoPort(0xD0, DmaReadPort, DmaWritePort);    /* Status (Read) / Command (Write) Registers */
+    RegisterIoPort(0xD2, NULL, DmaWritePort);           /* Request Register */
+    RegisterIoPort(0xD4, NULL, DmaWritePort);           /* Single Channel Mask Register */
+    RegisterIoPort(0xD6, NULL, DmaWritePort);           /* Mode Register */
+    RegisterIoPort(0xD8, NULL, DmaWritePort);           /* Flip-Flop Reset Register */
+    RegisterIoPort(0xDA, DmaReadPort, DmaWritePort);    /* Intermediate (Read) / Master Reset (Write) Registers */
+    RegisterIoPort(0xDC, NULL, DmaWritePort);           /* Mask Reset Register */
+    RegisterIoPort(0xDE, DmaReadPort, DmaWritePort);    /* Multi-Channel Mask Reset Register */
+
+
+    /* Channels Page Address Registers */
+    RegisterIoPort(0x87, DmaPageReadPort, DmaPageWritePort);    /* Channel 0 (Reserved) */
+    RegisterIoPort(0x83, DmaPageReadPort, DmaPageWritePort);    /* Channel 1 */
+    RegisterIoPort(0x81, DmaPageReadPort, DmaPageWritePort);    /* Channel 2 */
+    RegisterIoPort(0x82, DmaPageReadPort, DmaPageWritePort);    /* Channel 3 */
+    RegisterIoPort(0x8F, DmaPageReadPort, DmaPageWritePort);    /* Channel 4 (Reserved) */
+    RegisterIoPort(0x8B, DmaPageReadPort, DmaPageWritePort);    /* Channel 5 */
+    RegisterIoPort(0x89, DmaPageReadPort, DmaPageWritePort);    /* Channel 6 */
+    RegisterIoPort(0x8A, DmaPageReadPort, DmaPageWritePort);    /* Channel 7 */
+}
+
+
+
+DWORD
+WINAPI
+VDDRequestDMA(IN HANDLE    hVdd,
+              IN WORD      iChannel,
+              IN OUT PVOID Buffer,
+              IN DWORD     length)
+{
+    UNREFERENCED_PARAMETER(hVdd);
+
+    if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+    {
+        SetLastError(ERROR_INVALID_ADDRESS);
+        return FALSE;
+    }
+
+    UNIMPLEMENTED;
+    return 0;
+}
+
+BOOL
+WINAPI
+VDDQueryDMA(IN HANDLE        hVdd,
+            IN WORD          iChannel,
+            IN PVDD_DMA_INFO pDmaInfo)
+{
+    PDMA_CONTROLLER pDcp;
+    WORD Channel;
+
+    UNREFERENCED_PARAMETER(hVdd);
+
+    if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+    {
+        SetLastError(ERROR_INVALID_ADDRESS);
+        return FALSE;
+    }
+
+    pDcp    = &DmaControllers[iChannel / DMA_CONTROLLER_CHANNELS];
+    Channel = iChannel % DMA_CONTROLLER_CHANNELS;
+
+    pDmaInfo->addr  = pDcp->DmaChannel[Channel].CurrAddress;
+    pDmaInfo->count = pDcp->DmaChannel[Channel].CurrWordCnt;
+
+    // pDmaInfo->page   = DmaPageRegisters[iChannel].Page;
+    pDmaInfo->status = pDcp->Status;
+    pDmaInfo->mode   = pDcp->DmaChannel[Channel].Mode;
+    pDmaInfo->mask   = pDcp->Mask;
+
+    return TRUE;
+}
+
+BOOL
+WINAPI
+VDDSetDMA(IN HANDLE        hVdd,
+          IN WORD          iChannel,
+          IN WORD          fDMA,
+          IN PVDD_DMA_INFO pDmaInfo)
+{
+    PDMA_CONTROLLER pDcp;
+    WORD Channel;
+
+    UNREFERENCED_PARAMETER(hVdd);
+
+    if (iChannel >= DMA_CONTROLLERS * DMA_CONTROLLER_CHANNELS)
+    {
+        SetLastError(ERROR_INVALID_ADDRESS);
+        return FALSE;
+    }
+
+    pDcp    = &DmaControllers[iChannel / DMA_CONTROLLER_CHANNELS];
+    Channel = iChannel % DMA_CONTROLLER_CHANNELS;
+
+    if (fDMA & VDD_DMA_ADDR)
+        pDcp->DmaChannel[Channel].CurrAddress = pDmaInfo->addr;
+
+    if (fDMA & VDD_DMA_COUNT)
+        pDcp->DmaChannel[Channel].CurrWordCnt = pDmaInfo->count;
+
+    // if (fDMA & VDD_DMA_PAGE)
+        // DmaPageRegisters[iChannel].Page = pDmaInfo->page;
+
+    if (fDMA & VDD_DMA_STATUS)
+        pDcp->Status = pDmaInfo->status;
+
+    return TRUE;
+}
+
+/* EOF */
diff --git a/subsystems/ntvdm/hardware/dma.h b/subsystems/ntvdm/hardware/dma.h
new file mode 100644 (file)
index 0000000..1e41f28
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * COPYRIGHT:       GPL - See COPYING in the top level directory
+ * PROJECT:         ReactOS Virtual DOS Machine
+ * FILE:            dma.h
+ * PURPOSE:         Direct Memory Access Controller emulation -
+ *                  i8237A compatible with 74LS612 Memory Mapper extension
+ * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef _DMA_H_
+#define _DMA_H_
+
+/* INCLUDES *******************************************************************/
+
+#include "ntvdm.h"
+
+/* DEFINES ********************************************************************/
+
+#define DMA_CONTROLLERS         2
+#define DMA_CONTROLLER_CHANNELS 4 // Each DMA controller has 4 channels
+
+typedef struct _DMA_CHANNEL
+{
+    WORD BaseAddress;
+    WORD BaseWordCnt;
+    WORD CurrAddress;
+    WORD CurrWordCnt;
+    BYTE Mode;
+} DMA_CHANNEL, *PDMA_CHANNEL;
+
+typedef struct _DMA_CONTROLLER
+{
+    DMA_CHANNEL DmaChannel[DMA_CONTROLLER_CHANNELS];
+
+    WORD TempAddress;
+    WORD TempWordCnt;
+
+    BYTE TempReg;
+
+    BYTE Command;
+    BYTE Request;
+    BYTE Mask;
+    BYTE Status;
+
+    BOOLEAN FlipFlop; // 0: LSB ; 1: MSB
+
+} DMA_CONTROLLER, *PDMA_CONTROLLER;
+
+/* 74LS612 Memory Mapper extension */
+typedef struct _DMA_PAGE_REGISTER
+{
+    BYTE Page;
+} DMA_PAGE_REGISTER, *PDMA_PAGE_REGISTER;
+
+// The 74LS612 contains 16 bytes, each of them being a page register.
+// They are accessible via ports 0x80 through 0x8F .
+
+/* FUNCTIONS ******************************************************************/
+
+VOID DmaInitialize(VOID);
+
+#endif // _DMA_H_
+
+/* EOF */
index 624c825..2d6296a 100644 (file)
@@ -349,4 +349,24 @@ call_ica_hw_interrupt(INT  ms,
     }
 }
 
+WORD
+WINAPI
+VDDReserveIrqLine(IN HANDLE hVdd,
+                  IN WORD   IrqLine)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_INVALID_PARAMETER);
+    return 0xFFFF;
+}
+
+BOOL
+WINAPI
+VDDReleaseIrqLine(IN HANDLE hVdd,
+                  IN WORD   IrqLine)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_INVALID_PARAMETER);
+    return FALSE;
+}
+
 /* EOF */
similarity index 99%
rename from subsystems/ntvdm/hardware/timer.c
rename to subsystems/ntvdm/hardware/pit.c
index 839ea3c..037e062 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * COPYRIGHT:       GPL - See COPYING in the top level directory
  * PROJECT:         ReactOS Virtual DOS Machine
- * FILE:            timer.c
+ * FILE:            pit.c
  * PURPOSE:         Programmable Interval Timer emulation -
  *                  i82C54/8254 compatible
  * PROGRAMMERS:     Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
@@ -14,7 +14,7 @@
 
 #include "emulator.h"
 #include "io.h"
-#include "timer.h"
+#include "pit.h"
 #include "pic.h"
 
 /* PRIVATE VARIABLES **********************************************************/
similarity index 96%
rename from subsystems/ntvdm/hardware/timer.h
rename to subsystems/ntvdm/hardware/pit.h
index b25f5cf..8d32938 100644 (file)
@@ -1,15 +1,15 @@
 /*
  * COPYRIGHT:       GPL - See COPYING in the top level directory
  * PROJECT:         ReactOS Virtual DOS Machine
- * FILE:            timer.h
+ * FILE:            pit.h
  * PURPOSE:         Programmable Interval Timer emulation -
  *                  i82C54/8254 compatible
  * PROGRAMMERS:     Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
  *                  Hermes Belusca-Maito (hermes.belusca@sfr.fr)
  */
 
-#ifndef _TIMER_H_
-#define _TIMER_H_
+#ifndef _PIT_H_
+#define _PIT_H_
 
 /* INCLUDES *******************************************************************/
 
@@ -84,6 +84,6 @@ VOID PitClock(DWORD Count);
 
 VOID PitInitialize(VOID);
 
-#endif // _TIMER_H_
+#endif // _PIT_H_
 
 /* EOF */
similarity index 99%
rename from subsystems/ntvdm/hardware/speaker.c
rename to subsystems/ntvdm/hardware/sound/speaker.c
index 2f6d017..5f00b2c 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "emulator.h"
 #include "speaker.h"
-#include "timer.h"
+#include "hardware/pit.h"
 
 /* Extra PSDK/NDK Headers */
 #include <ndk/iofuncs.h>
index fb81ec1..54b868a 100644 (file)
 #include "emulator.h"
 #include "cpu/cpu.h"
 
-#include "clock.h"
-#include "hardware/ps2.h"
-#include "hardware/vga.h"
 #include "bios/bios.h"
-#include "dos/dem.h"
 
 #include "resource.h"
 
index 244bda9..4cd48a8 100644 (file)
@@ -1,6 +1,6 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM Registers exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM Registers ;;
+;;;;;;;;;;;;;;;;;;;;;
 
 @ stdcall getAF()
 @ stdcall getAH()
@@ -90,9 +90,9 @@
 @ stdcall setZF(long)
 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM CCPU MIPS exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM CCPU MIPS Compatibility ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 @ stdcall c_getAF()  getAF
 @ stdcall c_getAH()  getAH
 @ stdcall c_setZF(long)  setZF
 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM DOS-32 Emulation exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM DOS-32 Emulation ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 @ stdcall demClientErrorEx(long long long)
 @ stdcall demFileDelete(ptr)
 ;@ stdcall demWOWLFNInit
 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; NTVDM Miscellaneous exports ;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+;; NTVDM Miscellaneous ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;
 
 @ stdcall MGetVdmPointer(long long long)
 @ stdcall Sim32pGetVDMPointer(long long)
 ;@ stdcall VdmUnmapFlat(long long ptr long)  ; Not exported on x86
 
 @ stdcall call_ica_hw_interrupt(long long long)
+@ stdcall VDDReserveIrqLine(long long)
+@ stdcall VDDReleaseIrqLine(long long)
+
 @ stdcall VDDInstallIOHook(long long ptr ptr)
 @ stdcall VDDDeInstallIOHook(long long ptr)
 
+@ stdcall VDDRequestDMA(long long ptr long)
+@ stdcall VDDQueryDMA(long long ptr)
+@ stdcall VDDSetDMA(long long long ptr)
+
 @ stdcall VDDSimulate16()
 @ stdcall host_simulate()   VDDSimulate16
 @ stdcall VDDTerminateVDM()
index 0997216..7d3f4e2 100644 (file)
@@ -29,7 +29,7 @@ typedef struct _VDD_MODULE
 // TODO: Maybe use a linked list.
 // But the number of elements must be <= MAXUSHORT (MAXWORD)
 #define MAX_VDD_MODULES 0xFF + 1
-VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}};
+static VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}};
 
 // Valid handles of VDD DLLs start at 1 and finish at MAX_VDD_MODULES
 #define ENTRY_TO_HANDLE(Entry)  ((Entry)  + 1)
@@ -38,7 +38,7 @@ VDD_MODULE VDDList[MAX_VDD_MODULES] = {{NULL}};
 
 /* PRIVATE FUNCTIONS **********************************************************/
 
-USHORT GetNextFreeVDDEntry(VOID)
+static USHORT GetNextFreeVDDEntry(VOID)
 {
     USHORT Entry = MAX_VDD_MODULES;
     for (Entry = 0; Entry < sizeof(VDDList)/sizeof(VDDList[0]); ++Entry)
@@ -48,7 +48,7 @@ USHORT GetNextFreeVDDEntry(VOID)
     return Entry;
 }
 
-VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
+static VOID WINAPI ThirdPartyVDDBop(LPWORD Stack)
 {
     /* Get the Function Number and skip it */
     BYTE FuncNum = *(PBYTE)SEG_OFF_TO_PTR(getCS(), getIP());
@@ -231,7 +231,7 @@ Quit:
     }
 }
 
-BOOL LoadInstallableVDD(VOID)
+static BOOL LoadInstallableVDD(VOID)
 {
 #define ERROR_MEMORYVDD L"Insufficient memory to load installable Virtual Device Drivers."
 #define ERROR_REGVDD    L"Virtual Device Driver format in the registry is invalid."
index 87b471b..b0cfac8 100644 (file)
@@ -309,7 +309,7 @@ CsrInsertThread(IN PCSR_PROCESS Process,
                                       sizeof(ThreadInfo),
                                       NULL);
     if (!NT_SUCCESS(Status)) return Status;
-    if (ThreadInfo == TRUE) return STATUS_THREAD_IS_TERMINATING;
+    if (ThreadInfo) return STATUS_THREAD_IS_TERMINATING;
 
     /* Insert it into the Regular List */
     InsertTailList(&Process->ThreadList, &Thread->Link);
index dbd8e22..fb6deb6 100644 (file)
@@ -297,10 +297,10 @@ XFORMOBJ_iInverse(
     return XFORMOBJ_UpdateAccel(pxoDst);
 }
 
-
-BOOL
+static
+VOID
 NTAPI
-XFORMOBJ_bXformFixPoints(
+XFORMOBJ_vXformFixPoints(
     IN XFORMOBJ  *pxo,
     IN ULONG  cPoints,
     IN PPOINTL  pptIn,
@@ -426,8 +426,6 @@ XFORMOBJ_bXformFixPoints(
         }
         while (--i >= 0);
     }
-
-    return TRUE;
 }
 
 /** Public functions **********************************************************/
@@ -500,7 +498,7 @@ XFORMOBJ_bApplyXform(
 {
     MATRIX mx;
     XFORMOBJ xoInv;
-    POINTL *pptl;
+    PPOINTL pptlIn, pptlOut;
     INT i;
 
     /* Check parameters */
@@ -523,28 +521,29 @@ XFORMOBJ_bApplyXform(
     /* Convert POINTL to POINTFIX? */
     if (iMode == XF_LTOFX || iMode == XF_LTOL || iMode == XF_INV_LTOL)
     {
-        pptl = pvIn;
+        pptlIn = pvIn;
+        pptlOut = pvOut;
         for (i = cPoints - 1; i >= 0; i--)
         {
-            pptl[i].x = LONG2FIX(pptl[i].x);
-            pptl[i].y = LONG2FIX(pptl[i].y);
+            pptlOut[i].x = LONG2FIX(pptlIn[i].x);
+            pptlOut[i].y = LONG2FIX(pptlIn[i].y);
         }
+
+        /* The input is in the out buffer now! */
+        pvIn = pvOut;
     }
 
     /* Do the actual fixpoint transformation */
-    if (!XFORMOBJ_bXformFixPoints(pxo, cPoints, pvIn, pvOut))
-    {
-        return FALSE;
-    }
+    XFORMOBJ_vXformFixPoints(pxo, cPoints, pvIn, pvOut);
 
     /* Convert POINTFIX to POINTL? */
     if (iMode == XF_INV_FXTOL || iMode == XF_INV_LTOL || iMode == XF_LTOL)
     {
-        pptl = pvOut;
+        pptlOut = pvOut;
         for (i = cPoints - 1; i >= 0; i--)
         {
-            pptl[i].x = FIX2LONG(pptl[i].x);
-            pptl[i].y = FIX2LONG(pptl[i].y);
+            pptlOut[i].x = FIX2LONG(pptlOut[i].x);
+            pptlOut[i].y = FIX2LONG(pptlOut[i].y);
         }
     }
 
index 37357ac..857da89 100644 (file)
@@ -1701,7 +1701,7 @@ NtUserSwitchDesktop(HDESK hdesk)
     * is the logon application itself
     */
    if((pdesk->rpwinstaParent->Flags & WSS_LOCKED) &&
-      LogonProcess != PsGetCurrentProcessWin32Process())
+      gpidLogon != PsGetCurrentProcessId())
    {
       ObDereferenceObject(pdesk);
       ERR("Switching desktop 0x%p denied because the window station is locked!\n", hdesk);
index 097b852..c8a7a73 100644 (file)
@@ -936,10 +936,16 @@ ProcessKeyEvent(WORD wVk, WORD wScanCode, DWORD dwFlags, BOOL bInjected, DWORD d
                 Msg.lParam |= KF_MENUMODE << 16;
         }
 
+        // Post mouse move before posting key buttons, to keep it syned.
+        if (pFocusQueue->QF_flags & QF_MOUSEMOVED)
+        {
+           IntCoalesceMouseMove(pti);
+        }
+
         /* Post a keyboard message */
         TRACE("Posting keyboard msg %u wParam 0x%x lParam 0x%x\n", Msg.message, Msg.wParam, Msg.lParam);
         if (!Wnd) {ERR("Window is NULL\n");}
-        MsqPostMessage(pti, &Msg, TRUE, QS_KEY, 0);
+        MsqPostMessage(pti, &Msg, TRUE, QS_KEY, 0, dwExtraInfo);
     }
 
     return TRUE;
@@ -1154,7 +1160,7 @@ IntTranslateKbdMessage(LPMSG lpMsg,
         NewMsg.message = (lpMsg->message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
         NewMsg.wParam = HIWORD(lpMsg->lParam);
         NewMsg.lParam = LOWORD(lpMsg->lParam);
-        MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0);
+        MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0, 0);
         return TRUE;
     }
 
@@ -1183,7 +1189,7 @@ IntTranslateKbdMessage(LPMSG lpMsg,
         {
             TRACE("Msg: %x '%lc' (%04x) %08x\n", NewMsg.message, wch[i], wch[i], NewMsg.lParam);
             NewMsg.wParam = wch[i];
-            MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0);
+            MsqPostMessage(pti, &NewMsg, FALSE, QS_KEY, 0, 0);
         }
         bResult = TRUE;
     }
index bfc68de..44648aa 100644 (file)
@@ -213,10 +213,8 @@ DestroyProcessInfo(PEPROCESS Process)
     /*
      * Deregister logon application automatically
      */
-    if(LogonProcess == ppiCurrent)
-    {
-        LogonProcess = NULL;
-    }
+    if (gpidLogon == ppiCurrent->peProcess->UniqueProcessId)
+        gpidLogon = 0;
 
     /* Close the current window station */
     UserSetProcessWindowStation(NULL);
@@ -409,7 +407,7 @@ UserCreateThreadInfo(struct _ETHREAD *Thread)
 
     /* Assign a default window station and desktop to the process */
     /* Do not try to open a desktop or window station before winlogon initializes */
-    if(ptiCurrent->ppi->hdeskStartup == NULL && LogonProcess != NULL)
+    if (ptiCurrent->ppi->hdeskStartup == NULL && gpidLogon != 0)
     {
         HWINSTA hWinSta = NULL;
         HDESK hDesk = NULL;
@@ -749,17 +747,23 @@ DriverEntry(
     /* Register Object Manager Callbacks */
     CalloutData.ProcessCallout = Win32kProcessCallback;
     CalloutData.ThreadCallout = Win32kThreadCallback;
-    CalloutData.WindowStationParseProcedure = IntWinStaObjectParse;
-    CalloutData.WindowStationDeleteProcedure = IntWinStaObjectDelete;
-    CalloutData.WindowStationOkToCloseProcedure = IntWinstaOkToClose;
+    // CalloutData.GlobalAtomTableCallout = NULL;
+    // CalloutData.PowerEventCallout = NULL;
+    // CalloutData.PowerStateCallout = NULL;
+    // CalloutData.JobCallout = NULL;
+    CalloutData.BatchFlushRoutine = NtGdiFlushUserBatch;
+    CalloutData.DesktopOpenProcedure = IntDesktopObjectOpen;
     CalloutData.DesktopOkToCloseProcedure = IntDesktopOkToClose;
-    CalloutData.DesktopDeleteProcedure = IntDesktopObjectDelete;
     CalloutData.DesktopCloseProcedure = IntDesktopObjectClose;
-    CalloutData.DesktopOpenProcedure = IntDesktopObjectOpen;
-    CalloutData.BatchFlushRoutine = NtGdiFlushUserBatch;
+    CalloutData.DesktopDeleteProcedure = IntDesktopObjectDelete;
+    CalloutData.WindowStationOkToCloseProcedure = IntWinstaOkToClose;
+    // CalloutData.WindowStationCloseProcedure = NULL;
+    CalloutData.WindowStationDeleteProcedure = IntWinStaObjectDelete;
+    CalloutData.WindowStationParseProcedure = IntWinStaObjectParse;
+    // CalloutData.WindowStationOpenProcedure = NULL;
 
     /* Register our per-process and per-thread structures. */
-    PsEstablishWin32Callouts((PWIN32_CALLOUTS_FPNS)&CalloutData);
+    PsEstablishWin32Callouts(&CalloutData);
 
     /* Register service hook callbacks */
 #if DBG
index 1df412b..4662b4f 100644 (file)
@@ -213,7 +213,10 @@ MsgMemorySize(PMSGMEMORY MsgMemoryEntry, WPARAM wParam, LPARAM lParam)
                 break;
 
             case WM_COPYDATA:
-                Size = sizeof(COPYDATASTRUCT) + ((PCOPYDATASTRUCT)lParam)->cbData;
+                {
+                COPYDATASTRUCT *cds = (COPYDATASTRUCT *)lParam;
+                Size = sizeof(COPYDATASTRUCT) + cds->cbData;
+                }
                 break;
 
             default:
@@ -497,7 +500,11 @@ CopyMsgToUserMem(MSG *UserModeMsg, MSG *KernelModeMsg)
                 return Status;
             }
         }
-
+        if (KernelModeMsg->message == WM_COPYDATA)
+        {
+           // Only the current process or thread can free the message lParam pointer.
+           return STATUS_SUCCESS;
+        }
         ExFreePool((PVOID) KernelModeMsg->lParam);
     }
 
@@ -795,6 +802,12 @@ co_IntPeekMessage( PMSG Msg,
         pti->timeLast = LargeTickCount.u.LowPart;
         pti->pcti->tickLastMsgChecked = LargeTickCount.u.LowPart;
 
+        // Post mouse moves while looping through peek messages.
+        if (pti->MessageQueue->QF_flags & QF_MOUSEMOVED)
+        {
+           IntCoalesceMouseMove(pti);
+        }
+
         /* Dispatch sent messages here. */
         while ( co_MsqDispatchOneSentMessage(pti) )
         {
@@ -851,17 +864,6 @@ co_IntPeekMessage( PMSG Msg,
             return TRUE;
         }
 
-        if ((ProcessMask & QS_MOUSE) &&
-            co_MsqPeekMouseMove( pti,
-                                 RemoveMessages,
-                                 Window,
-                                 MsgFilterMin,
-                                 MsgFilterMax,
-                                 Msg ))
-        {
-            return TRUE;
-        }
-
         /* Check for hardware events. */
         if ((ProcessMask & QS_INPUT) &&
             co_MsqPeekHardwareMessage( pti,
@@ -1091,7 +1093,7 @@ UserPostThreadMessage( PTHREADINFO pti,
 
     KeQueryTickCount(&LargeTickCount);
     Message.time = MsqCalculateMessageTime(&LargeTickCount);
-    MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0);
+    MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0, 0);
     return TRUE;
 }
 
@@ -1222,7 +1224,7 @@ UserPostMessage( HWND Wnd,
         }
         else
         {
-            MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0);
+            MsqPostMessage(pti, &Message, FALSE, QS_POSTMESSAGE, 0, 0);
         }
     }
     return TRUE;
@@ -1415,6 +1417,11 @@ co_IntSendMessageTimeoutSingle( HWND hWnd,
 
 CLEANUP:
     if (Window) UserDerefObjectCo(Window);
+    // Current Thread and it's a Copy Data message, then free kernel memory.
+    if ( !ptiSendTo && Msg == WM_COPYDATA )
+    {
+       ExFreePool((PVOID) lParam);
+    }
     END_CLEANUP;
 }
 
@@ -1677,7 +1684,7 @@ CLEANUP:
     END_CLEANUP;
 }
 
-
+#if 0
 /*
   This HACK function posts a message if the destination's message queue belongs to
   another thread, otherwise it sends the message. It does not support broadcast
@@ -1721,6 +1728,7 @@ co_IntPostOrSendMessage( HWND hWnd,
 
     return (LRESULT)Result;
 }
+#endif
 
 static LRESULT FASTCALL
 co_IntDoSendMessage( HWND hWnd,
index e82ca12..f40c02f 100644 (file)
@@ -15,6 +15,9 @@ DBG_DEFAULT_CHANNEL(UserMsgQ);
 
 static PPAGED_LOOKASIDE_LIST pgMessageLookasideList;
 PUSER_MESSAGE_QUEUE gpqCursor;
+ULONG_PTR gdwMouseMoveExtraInfo = 0;
+DWORD gdwMouseMoveTimeStamp = 0;
+
 
 /* FUNCTIONS *****************************************************************/
 
@@ -37,44 +40,6 @@ MsqInitializeImpl(VOID)
    return(STATUS_SUCCESS);
 }
 
-PWND FASTCALL
-IntChildrenWindowFromPoint(PWND pWndTop, INT x, INT y)
-{
-    PWND pWnd, pWndChild;
-
-    if ( !pWndTop )
-    {
-       pWndTop = UserGetDesktopWindow();
-       if ( !pWndTop ) return NULL;
-    }
-
-    if (!(pWndTop->style & WS_VISIBLE)) return NULL;
-    if ((pWndTop->style & WS_DISABLED)) return NULL;
-    if (!IntPtInWindow(pWndTop, x, y)) return NULL;
-
-    if (RECTL_bPointInRect(&pWndTop->rcClient, x, y))
-    {
-       for (pWnd = pWndTop->spwndChild;
-            pWnd != NULL;
-            pWnd = pWnd->spwndNext)
-       {
-           if (pWnd->state2 & WNDS2_INDESTROY || pWnd->state & WNDS_DESTROYED )
-           {
-               TRACE("The Window is in DESTROY!\n");
-               continue;
-           }
-
-           pWndChild = IntChildrenWindowFromPoint(pWnd, x, y);
-
-           if (pWndChild)
-           {
-              return pWndChild;
-           }
-       }
-    }
-    return pWndTop;
-}
-
 PWND FASTCALL
 IntTopLevelWindowFromPoint(INT x, INT y)
 {
@@ -349,6 +314,36 @@ UpdateKeyStateFromMsg(PUSER_MESSAGE_QUEUE MessageQueue, MSG* msg)
     }
 }
 
+/*
+    Get down key states from the queue of prior processed input message key states.
+
+    This fixes the left button dragging on the desktop and release sticking outline issue.
+    USB Tablet pointer seems to stick the most and leaves the box outline displayed.
+ */
+WPARAM FASTCALL
+MsqGetDownKeyState(PUSER_MESSAGE_QUEUE MessageQueue)
+{
+    WPARAM ret = 0;
+
+    if (gspv.bMouseBtnSwap)
+    {
+       if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_RBUTTON)) ret |= MK_LBUTTON;
+       if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_LBUTTON)) ret |= MK_RBUTTON;
+    }
+    else
+    {
+       if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_LBUTTON)) ret |= MK_LBUTTON;
+       if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_RBUTTON)) ret |= MK_RBUTTON;
+    }
+
+    if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_MBUTTON))  ret |= MK_MBUTTON;
+    if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_SHIFT))    ret |= MK_SHIFT;
+    if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_CONTROL))  ret |= MK_CONTROL;
+    if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_XBUTTON1)) ret |= MK_XBUTTON1;
+    if (IS_KEY_DOWN(MessageQueue->afKeyState, VK_XBUTTON2)) ret |= MK_XBUTTON2;
+    return ret;
+}
+
 HANDLE FASTCALL
 IntMsqSetWakeMask(DWORD WakeMask)
 {
@@ -435,20 +430,19 @@ MsqWakeQueue(PTHREADINFO pti, DWORD MessageBits, BOOL KeyEvent)
 VOID FASTCALL
 ClearMsgBitsMask(PTHREADINFO pti, UINT MessageBits)
 {
-   PUSER_MESSAGE_QUEUE Queue;
    UINT ClrMask = 0;
 
-   Queue = pti->MessageQueue;
-
    if (MessageBits & QS_KEY)
    {
       if (--pti->nCntsQBits[QSRosKey] == 0) ClrMask |= QS_KEY;
    }
-   if (MessageBits & QS_MOUSEMOVE) // ReactOS hard coded.
+   if (MessageBits & QS_MOUSEMOVE)
    {  // Account for tracking mouse moves..
-      if (--pti->nCntsQBits[QSRosMouseMove] == 0) ClrMask |= QS_MOUSEMOVE;
-      // Handle mouse move bits here.
-      if (Queue->MouseMoved) ClrMask |= QS_MOUSEMOVE;
+      if (pti->nCntsQBits[QSRosMouseMove]) 
+      {
+         pti->nCntsQBits[QSRosMouseMove] = 0; // Throttle down count. Up to > 3:1 entries are ignored.
+         ClrMask |= QS_MOUSEMOVE;
+      }
    }
    if (MessageBits & QS_MOUSEBUTTON)
    {
@@ -502,12 +496,72 @@ MsqDecPaintCountQueue(PTHREADINFO pti)
    ClearMsgBitsMask(pti, QS_PAINT);
 }
 
+/*
+    Post the move or update the message still pending to be processed.
+    Do not overload the queue with mouse move messages.
+ */
 VOID FASTCALL
-MsqPostMouseMove(PTHREADINFO pti, MSG* Msg)
+MsqPostMouseMove(PTHREADINFO pti, MSG* Msg, LONG_PTR ExtraInfo)
 {
-    pti->MessageQueue->MouseMoveMsg = *Msg;
-    pti->MessageQueue->MouseMoved = TRUE;
-    MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
+    PUSER_MESSAGE Message;
+    PLIST_ENTRY ListHead;
+    PUSER_MESSAGE_QUEUE MessageQueue = pti->MessageQueue;
+
+    ListHead = &MessageQueue->HardwareMessagesListHead;
+
+    // Do nothing if empty.
+    if (!IsListEmpty(ListHead->Flink))
+    {
+       // Look at the end of the list,
+       Message = CONTAINING_RECORD(ListHead->Blink, USER_MESSAGE, ListEntry);
+
+       // If the mouse move message is existing on the list,
+       if (Message->Msg.message == WM_MOUSEMOVE)
+       {
+          // Overwrite the message with updated data!
+          Message->Msg = *Msg;
+
+          MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
+          return;
+       }
+    }
+
+    MsqPostMessage(pti, Msg, TRUE, QS_MOUSEMOVE, 0, ExtraInfo);
+}
+
+/*
+    Bring together the mouse move message.
+    Named "Coalesce" from Amine email ;^) (jt).
+ */
+VOID FASTCALL
+IntCoalesceMouseMove(PTHREADINFO pti)
+{
+    MSG Msg;
+    LARGE_INTEGER LargeTickCount;
+
+    // Force time stamp to update, keeping message time in sync.
+    if (gdwMouseMoveTimeStamp == 0)
+    {
+       KeQueryTickCount(&LargeTickCount);
+       gdwMouseMoveTimeStamp = MsqCalculateMessageTime(&LargeTickCount);
+    }
+
+    // Build mouse move message.
+    Msg.hwnd    = NULL;
+    Msg.message = WM_MOUSEMOVE;
+    Msg.wParam  = 0;
+    Msg.lParam  = MAKELONG(gpsi->ptCursor.x, gpsi->ptCursor.y);
+    Msg.time    = gdwMouseMoveTimeStamp;
+    Msg.pt      = gpsi->ptCursor;
+
+    // Post the move.
+    MsqPostMouseMove(pti, &Msg, gdwMouseMoveExtraInfo);
+
+    // Zero the time stamp.
+    gdwMouseMoveTimeStamp = 0;
+
+    // Clear flag since the move was posted.
+    pti->MessageQueue->QF_flags &= ~QF_MOUSEMOVED;
 }
 
 VOID FASTCALL
@@ -581,14 +635,15 @@ co_MsqInsertMouseMessage(MSG* Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook
    {
        pti = pwnd->head.pti;
        MessageQueue = pti->MessageQueue;
-       // MessageQueue->ptiMouse = pti;
 
-       if ( pti->TIF_flags & TIF_INCLEANUP || MessageQueue->QF_flags & QF_INDESTROY)
+       if (MessageQueue->QF_flags & QF_INDESTROY)
        {
-          ERR("Mouse is over the Window Thread is Dead!\n");
+          ERR("Mouse is over a Window with a Dead Message Queue!\n");
           return;
        }
 
+       MessageQueue->ptiMouse = pti;
+
        if (Msg->message == WM_MOUSEMOVE)
        {
           /* Check if cursor should be visible */
@@ -634,7 +689,10 @@ co_MsqInsertMouseMessage(MSG* Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook
            gpqCursor = MessageQueue;
 
            /* Mouse move is a special case */
-           MsqPostMouseMove(pti, Msg);
+           MessageQueue->QF_flags |= QF_MOUSEMOVED;
+           gdwMouseMoveExtraInfo = dwExtraInfo;
+           gdwMouseMoveTimeStamp = Msg->time;
+           MsqWakeQueue(pti, QS_MOUSEMOVE, TRUE);
        }
        else
        {
@@ -642,9 +700,17 @@ co_MsqInsertMouseMessage(MSG* Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook
            {
              // ERR("ptiLastInput is set\n");
              // ptiLastInput = pti; // Once this is set during Reboot or Shutdown, this prevents the exit window having foreground.
+             // Find all the Move Mouse calls and fix mouse set active focus issues......
+           }
+
+           // Post mouse move before posting mouse buttons, keep it in sync.
+           if (pti->MessageQueue->QF_flags & QF_MOUSEMOVED)
+           {
+              IntCoalesceMouseMove(pti);
            }
+
            TRACE("Posting mouse message to hwnd=%p!\n", UserHMGetHandle(pwnd));
-           MsqPostMessage(pti, Msg, TRUE, QS_MOUSEBUTTON, 0);
+           MsqPostMessage(pti, Msg, TRUE, QS_MOUSEBUTTON, 0, dwExtraInfo);
        }
    }
    else if (hdcScreen)
@@ -1214,7 +1280,8 @@ MsqPostMessage(PTHREADINFO pti,
                MSG* Msg,
                BOOLEAN HardwareMessage,
                DWORD MessageBits,
-               DWORD dwQEvent)
+               DWORD dwQEvent,
+               LONG_PTR ExtraInfo)
 {
    PUSER_MESSAGE Message;
    PUSER_MESSAGE_QUEUE MessageQueue;
@@ -1251,6 +1318,7 @@ MsqPostMessage(PTHREADINFO pti,
 
    if (Msg->message == WM_HOTKEY) MessageBits |= QS_HOTKEY; // Justin Case, just set it.
    Message->dwQEvent = dwQEvent;
+   Message->ExtraInfo = ExtraInfo;
    Message->QS_Flags = MessageBits;
    Message->pti = pti;
    MsqWakeQueue(pti, MessageBits, TRUE);
@@ -1382,12 +1450,13 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT
     }
     else
     {
-        pwndMsg = co_WinPosWindowFromPoint(NULL, &msg->pt, &hittest, FALSE);//TRUE);
+        pwndMsg = co_WinPosWindowFromPoint(pwndMsg, &msg->pt, &hittest, FALSE);
     }
 
     TRACE("Got mouse message for %p, hittest: 0x%x\n", msg->hwnd, hittest);
 
-    if (pwndMsg == NULL || pwndMsg->head.pti != pti)
+    // Null window or not the same "Hardware" message queue.
+    if (pwndMsg == NULL || pwndMsg->head.pti->MessageQueue != pti->MessageQueue)
     {
         /* Remove and ignore the message */
         *RemoveMessages = TRUE;
@@ -1477,6 +1546,12 @@ BOOL co_IntProcessMouseMessage(MSG* msg, BOOL* RemoveMessages, UINT first, UINT
             TRACE("Message out of range!!!\n");
             RETURN(FALSE);
         }
+
+        // Update mouse move down keys.
+        if (message == WM_MOUSEMOVE)
+        {
+           msg->wParam = MsqGetDownKeyState(MessageQueue);
+        }
     }
 
     if(gspv.bMouseClickLock)
@@ -1677,51 +1752,6 @@ BOOL co_IntProcessHardwareMessage(MSG* Msg, BOOL* RemoveMessages, UINT first, UI
     return TRUE;
 }
 
-BOOL APIENTRY
-co_MsqPeekMouseMove(IN PTHREADINFO pti,
-                   IN BOOL Remove,
-                   IN PWND Window,
-                   IN UINT MsgFilterLow,
-                   IN UINT MsgFilterHigh,
-                   OUT MSG* pMsg)
-{
-    BOOL AcceptMessage;
-    MSG msg;
-    PUSER_MESSAGE_QUEUE MessageQueue = pti->MessageQueue;
-
-    if(!(MessageQueue->MouseMoved))
-        return FALSE;
-
-    if (!MessageQueue->ptiSysLock)
-    {
-       MessageQueue->ptiSysLock = pti;
-       pti->pcti->CTI_flags |= CTI_THREADSYSLOCK;
-    }
-
-    if (MessageQueue->ptiSysLock != pti)
-    {
-       ERR("MsqPeekMouseMove: Thread Q is locked to another pti!\n");
-       return FALSE;
-    }
-
-    msg = MessageQueue->MouseMoveMsg;
-
-    AcceptMessage = co_IntProcessMouseMessage(&msg, &Remove, MsgFilterLow, MsgFilterHigh);
-
-    if(AcceptMessage)
-        *pMsg = msg;
-
-    if(Remove)
-    {
-        ClearMsgBitsMask(pti, QS_MOUSEMOVE);
-        MessageQueue->MouseMoved = FALSE;
-    }
-
-    MessageQueue->ptiSysLock = NULL;
-    pti->pcti->CTI_flags &= ~CTI_THREADSYSLOCK;
-    return AcceptMessage;
-}
-
 /* check whether a message filter contains at least one potential hardware message */
 static INT FASTCALL
 filter_contains_hw_range( UINT first, UINT last )
@@ -1791,7 +1821,8 @@ co_MsqPeekHardwareMessage(IN PTHREADINFO pti,
  */
       if ( ( !Window || // 1
             ( Window == PWND_BOTTOM && CurrentMessage->Msg.hwnd == NULL ) || // 2
-            ( Window != PWND_BOTTOM && Window->head.h == CurrentMessage->Msg.hwnd ) ) && // 3
+            ( Window != PWND_BOTTOM && Window->head.h == CurrentMessage->Msg.hwnd ) || // 3
+            ( CurrentMessage->Msg.message == WM_MOUSEMOVE ) ) && // Null window for mouse moves.
             ( ( ( MsgFilterLow == 0 && MsgFilterHigh == 0 ) && CurrentMessage->QS_Flags & QSflags ) ||
               ( MsgFilterLow <= CurrentMessage->Msg.message && MsgFilterHigh >= CurrentMessage->Msg.message ) ) )
         {
index e2882f8..c7c61d7 100644 (file)
@@ -51,10 +51,6 @@ typedef struct _USER_MESSAGE_QUEUE
 
   /* Queue for hardware messages for the queue. */
   LIST_ENTRY HardwareMessagesListHead;
-  /* True if a WM_MOUSEMOVE is pending */
-  BOOLEAN MouseMoved;
-  /* Current WM_MOUSEMOVE message */
-  MSG MouseMoveMsg;
   /* Last click message for translating double clicks */
   MSG msgDblClk;
   /* Current capture window for this queue. */
@@ -94,7 +90,7 @@ typedef struct _USER_MESSAGE_QUEUE
 #define QF_FMENUSTATUSBREAK       0x00000004
 #define QF_FMENUSTATUS            0x00000008
 #define QF_FF10STATUS             0x00000010
-#define QF_MOUSEMOVED             0x00000020 // See MouseMoved.
+#define QF_MOUSEMOVED             0x00000020
 #define QF_ACTIVATIONCHANGE       0x00000040
 #define QF_TABSWITCHING           0x00000080
 #define QF_KEYSTATERESET          0x00000100
@@ -124,7 +120,7 @@ NTSTATUS FASTCALL co_MsqSendMessage(PTHREADINFO ptirec,
            UINT uTimeout, BOOL Block, INT HookMessage, ULONG_PTR *uResult);
 PUSER_MESSAGE FASTCALL MsqCreateMessage(LPMSG Msg);
 VOID FASTCALL MsqDestroyMessage(PUSER_MESSAGE Message);
-VOID FASTCALL MsqPostMessage(PTHREADINFO, MSG*, BOOLEAN, DWORD, DWORD);
+VOID FASTCALL MsqPostMessage(PTHREADINFO, MSG*, BOOLEAN, DWORD, DWORD, LONG_PTR);
 VOID FASTCALL MsqPostQuitMessage(PTHREADINFO pti, ULONG ExitCode);
 BOOLEAN APIENTRY
 MsqPeekMessage(IN PTHREADINFO pti,
@@ -142,13 +138,6 @@ co_MsqPeekHardwareMessage(IN PTHREADINFO pti,
                              IN UINT MsgFilterHigh,
                              IN UINT QSflags,
                              OUT MSG* pMsg);
-BOOL APIENTRY
-co_MsqPeekMouseMove(IN PTHREADINFO pti,
-                    IN BOOL Remove,
-                    IN PWND Window,
-                    IN UINT MsgFilterLow,
-                    IN UINT MsgFilterHigh,
-                    OUT MSG* pMsg);
 BOOLEAN FASTCALL MsqInitializeMessageQueue(PTHREADINFO, PUSER_MESSAGE_QUEUE);
 PUSER_MESSAGE_QUEUE FASTCALL MsqCreateMessageQueue(PTHREADINFO);
 VOID FASTCALL MsqCleanupThreadMsgs(PTHREADINFO);
@@ -195,6 +184,7 @@ co_MsqSendMessageAsync(PTHREADINFO ptiReceiver,
                        BOOL HasPackedLParam,
                        INT HookMessage);
 
+VOID FASTCALL IntCoalesceMouseMove(PTHREADINFO);
 LRESULT FASTCALL IntDispatchMessage(MSG* Msg);
 BOOL FASTCALL IntTranslateKbdMessage(LPMSG lpMsg, UINT flags);
 VOID FASTCALL co_MsqInsertMouseMessage(MSG* Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook);
@@ -255,6 +245,7 @@ BOOL FASTCALL co_MsqReplyMessage(LRESULT);
 VOID FASTCALL MsqWakeQueue(PTHREADINFO,DWORD,BOOL);
 VOID FASTCALL ClearMsgBitsMask(PTHREADINFO,UINT);
 BOOL FASTCALL IntCallMsgFilter(LPMSG,INT);
+WPARAM FASTCALL MsqGetDownKeyState(PUSER_MESSAGE_QUEUE);
 
 int UserShowCursor(BOOL bShow);
 PCURICON_OBJECT
index 7996c9f..3bcb5aa 100644 (file)
@@ -12,8 +12,8 @@
 
 DBG_DEFAULT_CHANNEL(UserMisc);
 
-/* registered Logon process */
-PPROCESSINFO LogonProcess = NULL;
+/* Registered logon process ID */
+HANDLE gpidLogon = 0;
 
 BOOL FASTCALL
 co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
@@ -21,39 +21,34 @@ co_IntRegisterLogonProcess(HANDLE ProcessId, BOOL Register)
    NTSTATUS Status;
    PEPROCESS Process;
 
-   Status = PsLookupProcessByProcessId(ProcessId,
-                                       &Process);
+   Status = PsLookupProcessByProcessId(ProcessId, &Process);
    if (!NT_SUCCESS(Status))
    {
       EngSetLastError(RtlNtStatusToDosError(Status));
       return FALSE;
    }
 
+   ProcessId = Process->UniqueProcessId;
+
+   ObDereferenceObject(Process);
+
    if (Register)
    {
       /* Register the logon process */
-      if (LogonProcess != NULL)
-      {
-         ObDereferenceObject(Process);
+      if (gpidLogon != 0)
          return FALSE;
-      }
 
-      LogonProcess = (PPROCESSINFO)Process->Win32Process;
+      gpidLogon = ProcessId;
    }
    else
    {
       /* Deregister the logon process */
-      if (LogonProcess != (PPROCESSINFO)Process->Win32Process)
-      {
-         ObDereferenceObject(Process);
+      if (gpidLogon != ProcessId)
          return FALSE;
-      }
 
-      LogonProcess = NULL;
+      gpidLogon = 0;
    }
 
-   ObDereferenceObject(Process);
-
    return TRUE;
 }
 
@@ -451,7 +446,6 @@ NtUserCallTwoParam(
          STUB
          RETURN( 0);
 
-
       case TWOPARAM_ROUTINE_SETCARETPOS:
          RETURN( (DWORD_PTR)co_IntSetCaretPos((int)Param1, (int)Param2));
 
index 3cbf14e..76697ac 100644 (file)
@@ -315,12 +315,12 @@ SystemTimerProc(HWND hwnd,
           if ( pDesk->dwDTFlags & DF_TME_HOVER &&
                pWnd == pDesk->spwndTrack )
           {
-             Point = pWnd->head.pti->MessageQueue->MouseMoveMsg.pt;
+             Point = gpsi->ptCursor;
              if ( RECTL_bPointInRect(&pDesk->rcMouseHover, Point.x, Point.y) )
              {
                 if (pDesk->htEx == HTCLIENT) // In a client area.
                 {
-                   wParam = UserGetMouseButtonsState();
+                   wParam = MsqGetDownKeyState(pWnd->head.pti->MessageQueue);
                    Msg = WM_MOUSEHOVER;
 
                    if (pWnd->ExStyle & WS_EX_LAYOUTRTL)
@@ -405,7 +405,7 @@ PostTimerMessages(PWND Window)
            Msg.wParam  = (WPARAM) pTmr->nID;
            Msg.lParam  = (LPARAM) pTmr->pfn;
 
-           MsqPostMessage(pti, &Msg, FALSE, (QS_POSTMESSAGE|QS_ALLPOSTMESSAGE), 0);
+           MsqPostMessage(pti, &Msg, FALSE, (QS_POSTMESSAGE|QS_ALLPOSTMESSAGE), 0, 0);
            pTmr->flags &= ~TMRF_READY;
            ClearMsgBitsMask(pti, QS_TIMER);
            Hit = TRUE;
index 8fcc7b7..7782bd8 100644 (file)
@@ -947,7 +947,7 @@ NtUserLockWindowStation(HWINSTA hWindowStation)
    TRACE("About to set process window station with handle (%p)\n",
          hWindowStation);
 
-   if(PsGetCurrentProcessWin32Process() != LogonProcess)
+   if (gpidLogon != PsGetCurrentProcessId())
    {
       ERR("Unauthorized process attempted to lock the window station!\n");
       EngSetLastError(ERROR_ACCESS_DENIED);
@@ -992,7 +992,7 @@ NtUserUnlockWindowStation(HWINSTA hWindowStation)
    TRACE("About to set process window station with handle (%p)\n",
          hWindowStation);
 
-   if(PsGetCurrentProcessWin32Process() != LogonProcess)
+   if (gpidLogon != PsGetCurrentProcessId())
    {
       ERR("Unauthorized process attempted to unlock the window station!\n");
       EngSetLastError(ERROR_ACCESS_DENIED);
@@ -1338,12 +1338,12 @@ NtUserBuildNameList(
 BOOL APIENTRY
 NtUserSetLogonNotifyWindow(HWND hWnd)
 {
-    if(LogonProcess != PsGetCurrentProcessWin32Process())
+    if (gpidLogon != PsGetCurrentProcessId())
     {
         return FALSE;
     }
 
-    if(!IntIsWindow(hWnd))
+    if (!IntIsWindow(hWnd))
     {
         return FALSE;
     }
index 04fd007..d592247 100644 (file)
@@ -35,7 +35,7 @@ typedef struct _WINSTATION_OBJECT
 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
 
 extern WINSTATION_OBJECT *InputWindowStation;
-extern PPROCESSINFO LogonProcess;
+extern HANDLE gpidLogon;
 extern HWND hwndSAS;
 extern UNICODE_STRING gustrWindowStationsDir;
 
index 0f5545c..0f1109c 100644 (file)
@@ -16,6 +16,7 @@ list(APPEND CONSRV_SOURCE
     consrv/lineinput.c
     consrv/popup.c
     consrv/settings.c
+    consrv/shutdown.c
     consrv/subsysreg.c
     consrv/condrv/coninput.c
     consrv/condrv/conoutput.c
index 800abb4..a3f3841 100644 (file)
@@ -170,7 +170,7 @@ AddInputEvents(PCONSOLE Console,
         Status = STATUS_SUCCESS;
     }
 
-    if (SetWaitEvent) SetEvent(Console->InputBuffer.ActiveEvent);
+    if (SetWaitEvent) NtSetEvent(Console->InputBuffer.ActiveEvent, NULL);
 
 Done:
     if (NumEventsWritten) *NumEventsWritten = i;
@@ -198,16 +198,24 @@ NTSTATUS NTAPI
 ConDrvInitInputBuffer(IN PCONSOLE Console,
                       IN ULONG InputBufferSize)
 {
-    SECURITY_ATTRIBUTES SecurityAttributes;
+    NTSTATUS Status;
+    OBJECT_ATTRIBUTES ObjectAttributes;
 
     ConSrvInitObject(&Console->InputBuffer.Header, INPUT_BUFFER, Console);
 
-    SecurityAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
-    SecurityAttributes.lpSecurityDescriptor = NULL;
-    SecurityAttributes.bInheritHandle = TRUE;
+    InitializeObjectAttributes(&ObjectAttributes,
+                               NULL,
+                               OBJ_INHERIT,
+                               NULL,
+                               NULL);
 
-    Console->InputBuffer.ActiveEvent = CreateEventW(&SecurityAttributes, TRUE, FALSE, NULL);
-    if (Console->InputBuffer.ActiveEvent == NULL) return STATUS_UNSUCCESSFUL;
+    Status = NtCreateEvent(&Console->InputBuffer.ActiveEvent, EVENT_ALL_ACCESS,
+                           &ObjectAttributes, NotificationEvent, FALSE);
+    if (!NT_SUCCESS(Status))
+    {
+        return STATUS_UNSUCCESSFUL;
+        // return Status;
+    }
 
     Console->InputBuffer.InputBufferSize = InputBufferSize;
     InitializeListHead(&Console->InputBuffer.InputEvents);
index 38c7122..495191b 100644 (file)
@@ -80,7 +80,10 @@ VOID NTAPI
 ConDrvPause(PCONSOLE Console)
 {
     if (!Console->UnpauseEvent)
-        Console->UnpauseEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+    {
+        NtCreateEvent(&Console->UnpauseEvent, EVENT_ALL_ACCESS,
+                      NULL, NotificationEvent, FALSE);
+    }
 }
 
 VOID NTAPI
@@ -88,8 +91,8 @@ ConDrvUnpause(PCONSOLE Console)
 {
     if (Console->UnpauseEvent)
     {
-        SetEvent(Console->UnpauseEvent);
-        CloseHandle(Console->UnpauseEvent);
+        NtSetEvent(Console->UnpauseEvent, NULL);
+        NtClose(Console->UnpauseEvent);
         Console->UnpauseEvent = NULL;
     }
 }
index 475ab02..5f3853f 100644 (file)
@@ -12,8 +12,6 @@
 
 #include "consrv.h"
 
-#include <ndk/psfuncs.h>
-
 /* This is for COM usage */
 #define COBJMACROS
 #include <shlobj.h>
@@ -283,8 +281,6 @@ ConSrvGetConsole(IN PCONSOLE_PROCESS_DATA ProcessData,
     ASSERT(Console);
     *Console = NULL;
 
-    // RtlEnterCriticalSection(&ProcessData->HandleTableLock);
-
     if (ConSrvValidateConsole(&GrabConsole,
                               ProcessData->ConsoleHandle,
                               CONSOLE_RUNNING,
@@ -295,7 +291,6 @@ ConSrvGetConsole(IN PCONSOLE_PROCESS_DATA ProcessData,
         Status = STATUS_SUCCESS;
     }
 
-    // RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
     return Status;
 }
 
@@ -663,6 +658,27 @@ ConSrvInitConsole(OUT PHANDLE NewConsoleHandle,
     /* Colour table */
     memcpy(Console->Colors, ConsoleInfo.Colors, sizeof(ConsoleInfo.Colors));
 
+    /* Create the Initialization Events */
+    Status = NtCreateEvent(&Console->InitEvents[INIT_SUCCESS], EVENT_ALL_ACCESS,
+                           NULL, NotificationEvent, FALSE);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtCreateEvent(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+        ConDrvDeleteConsole(Console);
+        ConSrvDeinitTerminal(&Terminal);
+        return Status;
+    }
+    Status = NtCreateEvent(&Console->InitEvents[INIT_FAILURE], EVENT_ALL_ACCESS,
+                           NULL, NotificationEvent, FALSE);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtCreateEvent(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+        NtClose(Console->InitEvents[INIT_SUCCESS]);
+        ConDrvDeleteConsole(Console);
+        ConSrvDeinitTerminal(&Terminal);
+        return Status;
+    }
+
     /*
      * Attach the ConSrv terminal to the console.
      * This call makes a copy of our local Terminal variable.
@@ -671,6 +687,8 @@ ConSrvInitConsole(OUT PHANDLE NewConsoleHandle,
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("Failed to register terminal to the given console, Status = 0x%08lx\n", Status);
+        NtClose(Console->InitEvents[INIT_FAILURE]);
+        NtClose(Console->InitEvents[INIT_SUCCESS]);
         ConDrvDeleteConsole(Console);
         ConSrvDeinitTerminal(&Terminal);
         return Status;
@@ -680,6 +698,10 @@ ConSrvInitConsole(OUT PHANDLE NewConsoleHandle,
     /* All went right, so add the console to the list */
     Status = InsertConsole(&ConsoleHandle, Console);
 
+    // FIXME! We do not support at all asynchronous console creation!
+    NtSetEvent(Console->InitEvents[INIT_SUCCESS], NULL);
+    // NtSetEvent(Console->InitEvents[INIT_FAILURE], NULL);
+
     /* Return the newly created console to the caller and a success code too */
     *NewConsoleHandle = ConsoleHandle;
     *NewConsole       = Console;
@@ -696,6 +718,10 @@ ConSrvDeleteConsole(PCONSRV_CONSOLE Console)
     /* Remove the console from the list */
     RemoveConsoleByPointer(Console);
 
+    /* Destroy the Initialization Events */
+    NtClose(Console->InitEvents[INIT_FAILURE]);
+    NtClose(Console->InitEvents[INIT_SUCCESS]);
+
     /* Clean the Input Line Discipline */
     if (Console->LineBuffer) ConsoleFreeHeap(Console->LineBuffer);
 
@@ -896,6 +922,7 @@ CSR_API(SrvAllocConsole)
 
     /* Initialize the console initialization info structure */
     ConsoleInitInfo.ConsoleStartInfo = AllocConsoleRequest->ConsoleStartInfo;
+    ConsoleInitInfo.IsWindowVisible  = TRUE; // The console window is always visible.
     ConsoleInitInfo.TitleLength      = AllocConsoleRequest->TitleLength;
     ConsoleInitInfo.ConsoleTitle     = AllocConsoleRequest->ConsoleTitle;
     ConsoleInitInfo.DesktopLength    = AllocConsoleRequest->DesktopLength;
@@ -917,14 +944,6 @@ CSR_API(SrvAllocConsole)
         return Status;
     }
 
-    /* Mark the process as having a console */
-    ProcessData->ConsoleApp = TRUE;
-    CsrProcess->Flags |= CsrProcessIsConsoleApp;
-
-    /* Return the console handle and the input wait handle to the caller */
-    AllocConsoleRequest->ConsoleStartInfo->ConsoleHandle   = ProcessData->ConsoleHandle;
-    AllocConsoleRequest->ConsoleStartInfo->InputWaitHandle = ProcessData->InputWaitHandle;
-
     /* Set the Property-Dialog and Control-Dispatcher handlers */
     ProcessData->PropRoutine = AllocConsoleRequest->PropRoutine;
     ProcessData->CtrlRoutine = AllocConsoleRequest->CtrlRoutine;
@@ -999,21 +1018,14 @@ CSR_API(SrvAttachConsole)
                                   TRUE,
                                   &AttachConsoleRequest->ConsoleStartInfo->InputHandle,
                                   &AttachConsoleRequest->ConsoleStartInfo->OutputHandle,
-                                  &AttachConsoleRequest->ConsoleStartInfo->ErrorHandle);
+                                  &AttachConsoleRequest->ConsoleStartInfo->ErrorHandle,
+                                  AttachConsoleRequest->ConsoleStartInfo);
     if (!NT_SUCCESS(Status))
     {
         DPRINT1("Console inheritance failed\n");
         goto Quit;
     }
 
-    /* Mark the process as having a console */
-    TargetProcessData->ConsoleApp = TRUE;
-    TargetProcess->Flags |= CsrProcessIsConsoleApp;
-
-    /* Return the console handle and the input wait handle to the caller */
-    AttachConsoleRequest->ConsoleStartInfo->ConsoleHandle   = TargetProcessData->ConsoleHandle;
-    AttachConsoleRequest->ConsoleStartInfo->InputWaitHandle = TargetProcessData->InputWaitHandle;
-
     /* Set the Property-Dialog and Control-Dispatcher handlers */
     TargetProcessData->PropRoutine = AttachConsoleRequest->PropRoutine;
     TargetProcessData->CtrlRoutine = AttachConsoleRequest->CtrlRoutine;
@@ -1028,16 +1040,7 @@ Quit:
 
 CSR_API(SrvFreeConsole)
 {
-    PCSR_PROCESS CsrProcess = CsrGetClientThread()->Process;
-    PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
-
-    ConSrvRemoveConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process));
-
-    /* Mark the process as not having a console anymore */
-    ProcessData->ConsoleApp = FALSE;
-    CsrProcess->Flags &= ~CsrProcessIsConsoleApp;
-
-    return STATUS_SUCCESS;
+    return ConSrvRemoveConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process));
 }
 
 NTSTATUS NTAPI
index 7118dff..5f6bf9a 100644 (file)
@@ -11,6 +11,7 @@
 typedef struct _CONSOLE_INIT_INFO
 {
     PCONSOLE_START_INFO ConsoleStartInfo;
+    BOOLEAN IsWindowVisible;
 
     ULONG  TitleLength;
     PWCHAR ConsoleTitle;
index 09b87fc..869cb45 100644 (file)
@@ -9,31 +9,21 @@
 #ifndef __CONSRV_H__
 #define __CONSRV_H__
 
+/* Main header */
+#include "../winsrv.h"
+
 /* PSDK/NDK Headers */
-#include <stdarg.h>
 #define WIN32_NO_STATUS
 #define _INC_WINDOWS
 #define COM_NO_WINDOWS_H
-#include <windef.h>
-#include <winbase.h>
+
 #include <winnls.h>
 #include <winreg.h>
 #include <wincon.h>
-#include <winuser.h>
+
 #define NTOS_MODE_USER
 #include <ndk/exfuncs.h>
 #include <ndk/mmfuncs.h>
-#include <ndk/obfuncs.h>
-#include <ndk/rtlfuncs.h>
-
-/* Public Win32K Headers */
-#include <ntuser.h>
-
-/* PSEH for SEH Support */
-#include <pseh/pseh2.h>
-
-/* CSRSS Header */
-#include <csr/csrsrv.h>
 
 /* CONSOLE Headers */
 #include <win/conmsg.h>
@@ -53,9 +43,7 @@ typedef struct _CONSOLE_PROCESS_DATA
     PCSR_PROCESS Process;   // Process owning this structure.
 
     HANDLE ConsoleHandle;
-    HANDLE InputWaitHandle;
-
-    BOOLEAN ConsoleApp;    // TRUE if it is a CUI app, FALSE otherwise.
+    BOOLEAN ConsoleApp;     // TRUE if it is a CUI app, FALSE otherwise.
 
     RTL_CRITICAL_SECTION HandleTableLock;
     ULONG HandleTableSize;
@@ -84,4 +72,11 @@ typedef struct _CONSOLE_PROCESS_DATA
 #include "handle.h"
 #include "lineinput.h"
 
+/* shutdown.c */
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+                      IN ULONG Flags,
+                      IN BOOLEAN FirstPhase);
+
 #endif /* __CONSRV_H__ */
index 4e1519a..2752121 100644 (file)
@@ -663,7 +663,7 @@ OnNcCreate(HWND hWnd, LPCREATESTRUCTW Create)
     {
         DPRINT1("GuiConsoleNcCreate: InitFonts failed\n");
         GuiData->hWindow = NULL;
-        SetEvent(GuiData->hGuiInitEvent);
+        NtSetEvent(GuiData->hGuiInitEvent, NULL);
         return FALSE;
     }
 
@@ -686,12 +686,16 @@ OnNcCreate(HWND hWnd, LPCREATESTRUCTW Create)
 
     SetWindowLongPtrW(GuiData->hWindow, GWLP_USERDATA, (DWORD_PTR)GuiData);
 
-    SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL);
+    if (GuiData->IsWindowVisible)
+    {
+        SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CONGUI_UPDATE_TIME, NULL);
+    }
+
     // FIXME: HACK: Potential HACK for CORE-8129; see revision 63595.
     //CreateSysMenu(GuiData->hWindow);
 
     DPRINT("OnNcCreate - setting start event\n");
-    SetEvent(GuiData->hGuiInitEvent);
+    NtSetEvent(GuiData->hGuiInitEvent, NULL);
 
     return (BOOL)DefWindowProcW(GuiData->hWindow, WM_NCCREATE, 0, (LPARAM)Create);
 }
@@ -1048,6 +1052,9 @@ OnPaint(PGUI_CONSOLE_DATA GuiData)
     PAINTSTRUCT ps;
     RECT rcPaint;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     BeginPaint(GuiData->hWindow, &ps);
     if (ps.hdc != NULL &&
         ps.rcPaint.left < ps.rcPaint.right &&
@@ -1096,6 +1103,9 @@ OnPaletteChanged(PGUI_CONSOLE_DATA GuiData)
 {
     PCONSOLE_SCREEN_BUFFER ActiveBuffer = GuiData->ActiveBuffer;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     // See WM_PALETTECHANGED message
     // if ((HWND)wParam == hWnd) break;
 
@@ -1306,6 +1316,9 @@ OnTimer(PGUI_CONSOLE_DATA GuiData)
     PCONSRV_CONSOLE Console = GuiData->Console;
     PCONSOLE_SCREEN_BUFFER Buff;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     SetTimer(GuiData->hWindow, CONGUI_UPDATE_TIMER, CURSOR_BLINK_TIME, NULL);
 
     if (!ConDrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE)) return;
@@ -1431,7 +1444,11 @@ OnNcDestroy(HWND hWnd)
 {
     PGUI_CONSOLE_DATA GuiData = GuiGetGuiData(hWnd);
 
-    KillTimer(hWnd, CONGUI_UPDATE_TIMER);
+    if (GuiData->IsWindowVisible)
+    {
+        KillTimer(hWnd, CONGUI_UPDATE_TIMER);
+    }
+
     GetSystemMenu(hWnd, TRUE);
 
     if (GuiData)
@@ -1868,6 +1885,9 @@ OnSize(PGUI_CONSOLE_DATA GuiData, WPARAM wParam, LPARAM lParam)
 {
     PCONSRV_CONSOLE Console = GuiData->Console;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     if (!ConDrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE)) return;
 
     if ((GuiData->WindowSizeLock == FALSE) &&
@@ -2191,6 +2211,9 @@ ConWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
         case WM_SETCURSOR:
         {
+            /* Do nothing if the window is hidden */
+            if (!GuiData->IsWindowVisible) goto Default;
+
             /*
              * The message was sent because we are manually triggering a change.
              * Check whether the mouse is indeed present on this console window
@@ -2263,6 +2286,9 @@ ConWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
         case WM_CONTEXTMENU:
         {
+            /* Do nothing if the window is hidden */
+            if (!GuiData->IsWindowVisible) break;
+
             if (DefWindowProcW(hWnd /*GuiData->hWindow*/, WM_NCHITTEST, 0, lParam) == HTCLIENT)
             {
                 HMENU hMenu = CreatePopupMenu();
@@ -2391,6 +2417,9 @@ ConWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
             DWORD Width, Height;
             UINT  WidthUnit, HeightUnit;
 
+            /* Do nothing if the window is hidden */
+            if (!GuiData->IsWindowVisible) break;
+
             GetScreenBufferSizeUnits(Buff, GuiData, &WidthUnit, &HeightUnit);
 
             Width  = Buff->ScreenBufferSize.X * WidthUnit ;
index 456501b..a102ef5 100644 (file)
@@ -40,6 +40,8 @@ typedef struct _GUI_CONSOLE_DATA
     HANDLE hGuiInitEvent;
     HANDLE hGuiTermEvent;
 
+    BOOLEAN IsWindowVisible;
+
     POINT OldCursor;
 
     LONG_PTR WndStyle;
index beedd94..6fa11ae 100644 (file)
@@ -39,6 +39,7 @@ typedef struct _GUI_INIT_INFO
     PCONSOLE_INFO ConsoleInfo;
     PCONSOLE_START_INFO ConsoleStartInfo;
     ULONG ProcessId;
+    BOOLEAN IsWindowVisible;
 } GUI_INIT_INFO, *PGUI_INIT_INFO;
 
 static BOOL    ConsInitialized = FALSE;
@@ -149,12 +150,12 @@ GuiConsoleInputThread(PVOID Data)
     MSG msg;
 
     /*
-     * This thread dispatches all the console notifications to the notify window.
-     * It is common for all the console windows.
+     * This thread dispatches all the console notifications to the
+     * notification window. It is common for all the console windows.
      */
 
     /* The thread has been initialized, set the event */
-    SetEvent(*GraphicsStartupEvent);
+    NtSetEvent(*GraphicsStartupEvent, NULL);
 
     while (GetMessageW(&msg, NULL, 0, 0))
     {
@@ -179,7 +180,7 @@ GuiConsoleInputThread(PVOID Data)
                                             CW_USEDEFAULT,
                                             CW_USEDEFAULT,
                                             CW_USEDEFAULT,
-                                            NULL,
+                                            GuiData->IsWindowVisible ? HWND_DESKTOP : HWND_MESSAGE,
                                             NULL,
                                             ConSrvDllInstance,
                                             (PVOID)GuiData);
@@ -204,22 +205,33 @@ GuiConsoleInputThread(PVOID Data)
                 GuiData->GuiInfo.WindowOrigin.x = rcWnd.left;
                 GuiData->GuiInfo.WindowOrigin.y = rcWnd.top;
 
-                /* Move and resize the window to the user's values */
-                /* CAN WE DEADLOCK ?? */
-                GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call.
-                SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0);
+                if (GuiData->IsWindowVisible)
+                {
+                    /* Move and resize the window to the user's values */
+                    /* CAN WE DEADLOCK ?? */
+                    GuiConsoleMoveWindow(GuiData); // FIXME: This MUST be done via the CreateWindowExW call.
+                    SendMessageW(GuiData->hWindow, PM_RESIZE_TERMINAL, 0, 0);
+                }
 
                 // FIXME: HACK: Potential HACK for CORE-8129; see revision 63595.
                 CreateSysMenu(GuiData->hWindow);
 
-                /* Switch to full-screen mode if necessary */
-                // FIXME: Move elsewhere, it cause misdrawings of the window.
-                if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE);
-
-                DPRINT("PM_CREATE_CONSOLE -- showing window\n");
-                // ShowWindow(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
-                ShowWindowAsync(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
-                DPRINT("Window showed\n");
+                if (GuiData->IsWindowVisible)
+                {
+                    /* Switch to full-screen mode if necessary */
+                    // FIXME: Move elsewhere, it cause misdrawings of the window.
+                    if (GuiData->GuiInfo.FullScreen) SwitchFullScreen(GuiData, TRUE);
+
+                    DPRINT("PM_CREATE_CONSOLE -- showing window\n");
+                    // ShowWindow(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
+                    ShowWindowAsync(NewWindow, (int)GuiData->GuiInfo.ShowWindow);
+                    DPRINT("Window showed\n");
+                }
+                else
+                {
+                    DPRINT("PM_CREATE_CONSOLE -- hidden window\n");
+                    ShowWindowAsync(NewWindow, SW_HIDE);
+                }
 
                 continue;
             }
@@ -250,7 +262,7 @@ GuiConsoleInputThread(PVOID Data)
                 DestroyWindow(GuiData->hWindow);
                 PrivateCsrssManualGuiCheck(+1); // RemoveGuiApp
 
-                SetEvent(GuiData->hGuiTermEvent);
+                NtSetEvent(GuiData->hGuiTermEvent, NULL);
 
                 if (InterlockedDecrement(&WindowCount) == 0)
                 {
@@ -295,8 +307,12 @@ GuiInit(VOID)
      */
     if (hInputThread == NULL)
     {
-        HANDLE GraphicsStartupEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
-        if (GraphicsStartupEvent == NULL) return FALSE;
+        HANDLE GraphicsStartupEvent;
+        NTSTATUS Status;
+
+        Status = NtCreateEvent(&GraphicsStartupEvent, EVENT_ALL_ACCESS,
+                               NULL, SynchronizationEvent, FALSE);
+        if (!NT_SUCCESS(Status)) return FALSE;
 
         hInputThread = CreateThread(NULL,
                                     0,
@@ -306,7 +322,7 @@ GuiInit(VOID)
                                     &dwInputThreadId);
         if (hInputThread == NULL)
         {
-            CloseHandle(GraphicsStartupEvent);
+            NtClose(GraphicsStartupEvent);
             DPRINT1("CONSRV: Failed to create graphics console thread.\n");
             return FALSE;
         }
@@ -314,7 +330,7 @@ GuiInit(VOID)
         CloseHandle(hInputThread);
 
         WaitForSingleObject(GraphicsStartupEvent, INFINITE);
-        CloseHandle(GraphicsStartupEvent);
+        NtClose(GraphicsStartupEvent);
     }
 
     // ConsInitialized = TRUE;
@@ -365,6 +381,7 @@ GuiInitFrontEnd(IN OUT PFRONTEND This,
     GuiData->Console      = Console;
     GuiData->ActiveBuffer = Console->ActiveBuffer;
     GuiData->hWindow = NULL;
+    GuiData->IsWindowVisible = GuiInitInfo->IsWindowVisible;
 
     /* The console can be resized */
     Console->FixedSize = FALSE;
@@ -379,33 +396,36 @@ GuiInitFrontEnd(IN OUT PFRONTEND This,
     /* 1. Load the default settings */
     GuiConsoleGetDefaultSettings(&TermInfo, GuiInitInfo->ProcessId);
 
-    /* 3. Load the remaining console settings via the registry */
-    if ((ConsoleStartInfo->dwStartupFlags & STARTF_TITLEISLINKNAME) == 0)
+    if (GuiData->IsWindowVisible)
     {
-        /* Load the terminal infos from the registry */
-        GuiConsoleReadUserSettings(&TermInfo,
-                                   ConsoleInfo->ConsoleTitle,
-                                   GuiInitInfo->ProcessId);
-
-        /*
-         * Now, update them with the properties the user might gave to us
-         * via the STARTUPINFO structure before calling CreateProcess
-         * (and which was transmitted via the ConsoleStartInfo structure).
-         * We therefore overwrite the values read in the registry.
-         */
-        if (ConsoleStartInfo->dwStartupFlags & STARTF_USESHOWWINDOW)
-        {
-            TermInfo.ShowWindow = ConsoleStartInfo->wShowWindow;
-        }
-        if (ConsoleStartInfo->dwStartupFlags & STARTF_USEPOSITION)
+        /* 2. Load the remaining console settings via the registry */
+        if ((ConsoleStartInfo->dwStartupFlags & STARTF_TITLEISLINKNAME) == 0)
         {
-            TermInfo.AutoPosition = FALSE;
-            TermInfo.WindowOrigin.x = ConsoleStartInfo->dwWindowOrigin.X;
-            TermInfo.WindowOrigin.y = ConsoleStartInfo->dwWindowOrigin.Y;
-        }
-        if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
-        {
-            TermInfo.FullScreen = TRUE;
+            /* Load the terminal infos from the registry */
+            GuiConsoleReadUserSettings(&TermInfo,
+                                       ConsoleInfo->ConsoleTitle,
+                                       GuiInitInfo->ProcessId);
+
+            /*
+             * Now, update them with the properties the user might gave to us
+             * via the STARTUPINFO structure before calling CreateProcess
+             * (and which was transmitted via the ConsoleStartInfo structure).
+             * We therefore overwrite the values read in the registry.
+             */
+            if (ConsoleStartInfo->dwStartupFlags & STARTF_USESHOWWINDOW)
+            {
+                TermInfo.ShowWindow = ConsoleStartInfo->wShowWindow;
+            }
+            if (ConsoleStartInfo->dwStartupFlags & STARTF_USEPOSITION)
+            {
+                TermInfo.AutoPosition = FALSE;
+                TermInfo.WindowOrigin.x = ConsoleStartInfo->dwWindowOrigin.X;
+                TermInfo.WindowOrigin.y = ConsoleStartInfo->dwWindowOrigin.Y;
+            }
+            if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
+            {
+                TermInfo.FullScreen = TRUE;
+            }
         }
     }
 
@@ -471,8 +491,10 @@ GuiInitFrontEnd(IN OUT PFRONTEND This,
      * Ideally we could use SendNotifyMessage for this but its not
      * yet implemented.
      */
-    GuiData->hGuiInitEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
-    GuiData->hGuiTermEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
+    NtCreateEvent(&GuiData->hGuiInitEvent, EVENT_ALL_ACCESS,
+                  NULL, SynchronizationEvent, FALSE);
+    NtCreateEvent(&GuiData->hGuiTermEvent, EVENT_ALL_ACCESS,
+                  NULL, SynchronizationEvent, FALSE);
 
     DPRINT("GUI - Checkpoint\n");
 
@@ -482,7 +504,7 @@ GuiInitFrontEnd(IN OUT PFRONTEND This,
     /* Wait until initialization has finished */
     WaitForSingleObject(GuiData->hGuiInitEvent, INFINITE);
     DPRINT("OK we created the console window\n");
-    CloseHandle(GuiData->hGuiInitEvent);
+    NtClose(GuiData->hGuiInitEvent);
     GuiData->hGuiInitEvent = NULL;
 
     /* Check whether we really succeeded in initializing the terminal window */
@@ -505,7 +527,7 @@ GuiDeinitFrontEnd(IN OUT PFRONTEND This)
     PostThreadMessageW(dwInputThreadId, PM_DESTROY_CONSOLE, 0, (LPARAM)GuiData);
     WaitForSingleObject(GuiData->hGuiTermEvent, INFINITE);
     DPRINT("hGuiTermEvent set\n");
-    CloseHandle(GuiData->hGuiTermEvent);
+    NtClose(GuiData->hGuiTermEvent);
     GuiData->hGuiTermEvent = NULL;
 
     DPRINT("Destroying icons !! - GuiData->hIcon = 0x%p ; ghDefaultIcon = 0x%p ; GuiData->hIconSm = 0x%p ; ghDefaultIconSm = 0x%p\n",
@@ -533,6 +555,10 @@ GuiDrawRegion(IN OUT PFRONTEND This,
               SMALL_RECT* Region)
 {
     PGUI_CONSOLE_DATA GuiData = This->Data;
+
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     DrawRegion(GuiData, Region);
 }
 
@@ -552,6 +578,9 @@ GuiWriteStream(IN OUT PFRONTEND This,
 
     if (NULL == GuiData || NULL == GuiData->hWindow) return;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return;
+
     Buff = GuiData->ActiveBuffer;
     if (GetType(Buff) != TEXTMODE_BUFFER) return;
 
@@ -611,6 +640,9 @@ GuiSetCursorInfo(IN OUT PFRONTEND This,
 {
     PGUI_CONSOLE_DATA GuiData = This->Data;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return TRUE;
+
     if (GuiData->ActiveBuffer == Buff)
     {
         InvalidateCell(GuiData, Buff->CursorPosition.X, Buff->CursorPosition.Y);
@@ -627,6 +659,9 @@ GuiSetScreenInfo(IN OUT PFRONTEND This,
 {
     PGUI_CONSOLE_DATA GuiData = This->Data;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return TRUE;
+
     if (GuiData->ActiveBuffer == Buff)
     {
         /* Redraw char at old position (remove cursor) */
@@ -929,6 +964,9 @@ GuiSetDisplayMode(IN OUT PFRONTEND This,
     if (NewMode & ~(CONSOLE_FULLSCREEN_MODE | CONSOLE_WINDOWED_MODE))
         return FALSE;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return TRUE;
+
     FullScreen = ((NewMode & CONSOLE_FULLSCREEN_MODE) != 0);
 
     if (FullScreen != GuiData->GuiInfo.FullScreen)
@@ -945,12 +983,15 @@ GuiShowMouseCursor(IN OUT PFRONTEND This,
 {
     PGUI_CONSOLE_DATA GuiData = This->Data;
 
-    /* Set the reference count */
-    if (Show) ++GuiData->MouseCursorRefCount;
-    else      --GuiData->MouseCursorRefCount;
+    if (GuiData->IsWindowVisible)
+    {
+        /* Set the reference count */
+        if (Show) ++GuiData->MouseCursorRefCount;
+        else      --GuiData->MouseCursorRefCount;
 
-    /* Effectively show (or hide) the cursor (use special values for (w|l)Param) */
-    PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+        /* Effectively show (or hide) the cursor (use special values for (w|l)Param) */
+        PostMessageW(GuiData->hWindow, WM_SETCURSOR, -1, -1);
+    }
 
     return GuiData->MouseCursorRefCount;
 }
@@ -961,6 +1002,9 @@ GuiSetMouseCursor(IN OUT PFRONTEND This,
 {
     PGUI_CONSOLE_DATA GuiData = This->Data;
 
+    /* Do nothing if the window is hidden */
+    if (!GuiData->IsWindowVisible) return TRUE;
+
     /*
      * Set the cursor's handle. If the given handle is NULL,
      * then restore the default cursor.
@@ -1062,6 +1106,7 @@ GuiLoadFrontEnd(IN OUT PFRONTEND FrontEnd,
     GuiInitInfo->ConsoleInfo      = ConsoleInfo;
     GuiInitInfo->ConsoleStartInfo = ConsoleInitInfo->ConsoleStartInfo;
     GuiInitInfo->ProcessId        = ProcessId;
+    GuiInitInfo->IsWindowVisible  = ConsoleInitInfo->IsWindowVisible;
 
     /* Finally, initialize the frontend structure */
     FrontEnd->Vtbl    = &GuiVtbl;
index f54a459..10a1305 100644 (file)
@@ -521,21 +521,60 @@ ConSrvAllocateConsole(PCONSOLE_PROCESS_DATA ProcessData,
         return Status;
     }
 
+    /* Duplicate the Initialization Events */
+    Status = NtDuplicateObject(NtCurrentProcess(),
+                               Console->InitEvents[INIT_SUCCESS],
+                               ProcessData->Process->ProcessHandle,
+                               &ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS],
+                               EVENT_ALL_ACCESS, 0, 0);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtDuplicateObject(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+        ConSrvFreeHandlesTable(ProcessData);
+        ConSrvDeleteConsole(Console);
+        ProcessData->ConsoleHandle = NULL;
+        return Status;
+    }
+
+    Status = NtDuplicateObject(NtCurrentProcess(),
+                               Console->InitEvents[INIT_FAILURE],
+                               ProcessData->Process->ProcessHandle,
+                               &ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_FAILURE],
+                               EVENT_ALL_ACCESS, 0, 0);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtDuplicateObject(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+        NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+        ConSrvFreeHandlesTable(ProcessData);
+        ConSrvDeleteConsole(Console);
+        ProcessData->ConsoleHandle = NULL;
+        return Status;
+    }
+
     /* Duplicate the Input Event */
     Status = NtDuplicateObject(NtCurrentProcess(),
                                Console->InputBuffer.ActiveEvent,
                                ProcessData->Process->ProcessHandle,
-                               &ProcessData->InputWaitHandle,
+                               &ConsoleInitInfo->ConsoleStartInfo->InputWaitHandle,
                                EVENT_ALL_ACCESS, 0, 0);
     if (!NT_SUCCESS(Status))
     {
-        DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
+        DPRINT1("NtDuplicateObject(InputWaitHandle) failed: %lu\n", Status);
+        NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+        NtClose(ConsoleInitInfo->ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
         ConSrvFreeHandlesTable(ProcessData);
         ConSrvDeleteConsole(Console);
         ProcessData->ConsoleHandle = NULL;
         return Status;
     }
 
+    /* Mark the process as having a console */
+    ProcessData->ConsoleApp = TRUE;
+    ProcessData->Process->Flags |= CsrProcessIsConsoleApp;
+
+    /* Return the console handle to the caller */
+    ConsoleInitInfo->ConsoleStartInfo->ConsoleHandle = ProcessData->ConsoleHandle;
+
     /* Insert the process into the processes list of the console */
     InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
 
@@ -554,7 +593,8 @@ ConSrvInheritConsole(PCONSOLE_PROCESS_DATA ProcessData,
                      BOOLEAN CreateNewHandlesTable,
                      PHANDLE pInputHandle,
                      PHANDLE pOutputHandle,
-                     PHANDLE pErrorHandle)
+                     PHANDLE pErrorHandle,
+                     PCONSOLE_START_INFO ConsoleStartInfo)
 {
     NTSTATUS Status = STATUS_SUCCESS;
     PCONSOLE Console;
@@ -599,20 +639,57 @@ ConSrvInheritConsole(PCONSOLE_PROCESS_DATA ProcessData,
         }
     }
 
+    /* Duplicate the Initialization Events */
+    Status = NtDuplicateObject(NtCurrentProcess(),
+                               Console->InitEvents[INIT_SUCCESS],
+                               ProcessData->Process->ProcessHandle,
+                               &ConsoleStartInfo->InitEvents[INIT_SUCCESS],
+                               EVENT_ALL_ACCESS, 0, 0);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtDuplicateObject(InitEvents[INIT_SUCCESS]) failed: %lu\n", Status);
+        ConSrvFreeHandlesTable(ProcessData);
+        ProcessData->ConsoleHandle = NULL;
+        goto Quit;
+    }
+
+    Status = NtDuplicateObject(NtCurrentProcess(),
+                               Console->InitEvents[INIT_FAILURE],
+                               ProcessData->Process->ProcessHandle,
+                               &ConsoleStartInfo->InitEvents[INIT_FAILURE],
+                               EVENT_ALL_ACCESS, 0, 0);
+    if (!NT_SUCCESS(Status))
+    {
+        DPRINT1("NtDuplicateObject(InitEvents[INIT_FAILURE]) failed: %lu\n", Status);
+        NtClose(ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
+        ConSrvFreeHandlesTable(ProcessData);
+        ProcessData->ConsoleHandle = NULL;
+        goto Quit;
+    }
+
     /* Duplicate the Input Event */
     Status = NtDuplicateObject(NtCurrentProcess(),
                                Console->InputBuffer.ActiveEvent,
                                ProcessData->Process->ProcessHandle,
-                               &ProcessData->InputWaitHandle,
+                               &ConsoleStartInfo->InputWaitHandle,
                                EVENT_ALL_ACCESS, 0, 0);
     if (!NT_SUCCESS(Status))
     {
-        DPRINT1("NtDuplicateObject() failed: %lu\n", Status);
+        DPRINT1("NtDuplicateObject(InputWaitHandle) failed: %lu\n", Status);
+        NtClose(ConsoleStartInfo->InitEvents[INIT_FAILURE]);
+        NtClose(ConsoleStartInfo->InitEvents[INIT_SUCCESS]);
         ConSrvFreeHandlesTable(ProcessData); // NOTE: Always free the handles table.
         ProcessData->ConsoleHandle = NULL;
         goto Quit;
     }
 
+    /* Mark the process as having a console */
+    ProcessData->ConsoleApp = TRUE;
+    ProcessData->Process->Flags |= CsrProcessIsConsoleApp;
+
+    /* Return the console handle to the caller */
+    ConsoleStartInfo->ConsoleHandle = ProcessData->ConsoleHandle;
+
     /* Insert the process into the processes list of the console */
     InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
 
@@ -630,74 +707,78 @@ Quit:
     return Status;
 }
 
-VOID
+NTSTATUS
 ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData)
 {
     PCONSOLE Console;
+    PCONSOLE_PROCESS_DATA ConsoleLeaderProcess;
 
     DPRINT("ConSrvRemoveConsole\n");
 
-    // RtlEnterCriticalSection(&ProcessData->HandleTableLock);
+    /* Mark the process as not having a console anymore */
+    ProcessData->ConsoleApp = FALSE;
+    ProcessData->Process->Flags &= ~CsrProcessIsConsoleApp;
 
     /* Validate and lock the console */
-    if (ConSrvValidateConsole(&Console,
-                              ProcessData->ConsoleHandle,
-                              CONSOLE_RUNNING, TRUE))
+    if (!ConSrvValidateConsole(&Console,
+                               ProcessData->ConsoleHandle,
+                               CONSOLE_RUNNING, TRUE))
     {
-        /* Retrieve the console leader process */
-        PCONSOLE_PROCESS_DATA ConsoleLeaderProcess = ConSrvGetConsoleLeaderProcess(Console);
+        // FIXME: Find another status code
+        return STATUS_UNSUCCESSFUL;
+    }
 
-        DPRINT("ConSrvRemoveConsole - Locking OK\n");
+    DPRINT("ConSrvRemoveConsole - Locking OK\n");
 
-        /* Close all console handles and free the handles table */
-        ConSrvFreeHandlesTable(ProcessData);
+    /* Retrieve the console leader process */
+    ConsoleLeaderProcess = ConSrvGetConsoleLeaderProcess(Console);
 
-        /* Detach the process from the console */
-        ProcessData->ConsoleHandle = NULL;
+    /* Close all console handles and free the handles table */
+    ConSrvFreeHandlesTable(ProcessData);
 
-        /* Remove the process from the console's list of processes */
-        RemoveEntryList(&ProcessData->ConsoleLink);
+    /* Detach the process from the console */
+    ProcessData->ConsoleHandle = NULL;
 
-        /* Check whether the console should send a last close notification */
-        if (Console->NotifyLastClose)
+    /* Remove the process from the console's list of processes */
+    RemoveEntryList(&ProcessData->ConsoleLink);
+
+    /* Check whether the console should send a last close notification */
+    if (Console->NotifyLastClose)
+    {
+        /* If we are removing the process which wants the last close notification... */
+        if (ProcessData == Console->NotifiedLastCloseProcess)
+        {
+            /* ... just reset the flag and the pointer... */
+            Console->NotifyLastClose = FALSE;
+            Console->NotifiedLastCloseProcess = NULL;
+        }
+        /*
+         * ... otherwise, if we are removing the console leader process
+         * (that cannot be the process wanting the notification, because
+         * the previous case already dealt with it)...
+         */
+        else if (ProcessData == ConsoleLeaderProcess)
         {
-            /* If we are removing the process which wants the last close notification... */
-            if (ProcessData == Console->NotifiedLastCloseProcess)
-            {
-                /* ... just reset the flag and the pointer... */
-                Console->NotifyLastClose = FALSE;
-                Console->NotifiedLastCloseProcess = NULL;
-            }
             /*
-             * ... otherwise, if we are removing the console leader process
-             * (that cannot be the process wanting the notification, because
-             * the previous case already dealt with it)...
+             * ... reset the flag first (so that we avoid multiple notifications)
+             * and then send the last close notification.
              */
-            else if (ProcessData == ConsoleLeaderProcess)
-            {
-                /*
-                 * ... reset the flag first (so that we avoid multiple notifications)
-                 * and then send the last close notification.
-                 */
-                Console->NotifyLastClose = FALSE;
-                ConSrvConsoleCtrlEvent(CTRL_LAST_CLOSE_EVENT, Console->NotifiedLastCloseProcess);
-
-                /* Only now, reset the pointer */
-                Console->NotifiedLastCloseProcess = NULL;
-            }
+            Console->NotifyLastClose = FALSE;
+            ConSrvConsoleCtrlEvent(CTRL_LAST_CLOSE_EVENT, Console->NotifiedLastCloseProcess);
+
+            /* Only now, reset the pointer */
+            Console->NotifiedLastCloseProcess = NULL;
         }
+    }
 
-        /* Update the internal info of the terminal */
-        TermRefreshInternalInfo(Console);
+    /* Update the internal info of the terminal */
+    TermRefreshInternalInfo(Console);
 
-        /* Release the console */
-        DPRINT("ConSrvRemoveConsole - Decrement Console->ReferenceCount = %lu\n", Console->ReferenceCount);
-        ConSrvReleaseConsole(Console, TRUE);
-        //CloseHandle(ProcessData->InputWaitHandle);
-        //ProcessData->InputWaitHandle = NULL;
-    }
+    /* Release the console */
+    DPRINT("ConSrvRemoveConsole - Decrement Console->ReferenceCount = %lu\n", Console->ReferenceCount);
+    ConSrvReleaseConsole(Console, TRUE);
 
-    // RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
+    return STATUS_SUCCESS;
 }
 
 
index 135ccb5..c6fb831 100644 (file)
@@ -139,6 +139,8 @@ typedef struct _WINSRV_CONSOLE
     // CRITICAL_SECTION Lock;
     // CONSOLE_STATE State;                    /* State of the console */
 
+    HANDLE InitEvents[MAX_INIT_EVENTS];         /* Initialization events */
+
     FRONTEND FrontEndIFace;                     /* Frontend-specific interface */
 
 /******************************* Process support ******************************/
index 743166d..72194cd 100644 (file)
@@ -353,7 +353,6 @@ ConSrvNewProcess(PCSR_PROCESS SourceProcess,
     /* Initialize the new (target) process */
     RtlZeroMemory(TargetProcessData, sizeof(*TargetProcessData));
     TargetProcessData->Process = TargetProcess;
-    TargetProcessData->InputWaitHandle = NULL;
     TargetProcessData->ConsoleHandle = NULL;
     TargetProcessData->ConsoleApp = FALSE;
 
@@ -435,6 +434,7 @@ ConSrvConnect(IN PCSR_PROCESS CsrProcess,
 
     /* Initialize the console initialization info structure */
     ConsoleInitInfo.ConsoleStartInfo = &ConnectInfo->ConsoleStartInfo;
+    ConsoleInitInfo.IsWindowVisible  = ConnectInfo->IsWindowVisible;
     ConsoleInitInfo.TitleLength      = ConnectInfo->TitleLength;
     ConsoleInitInfo.ConsoleTitle     = ConnectInfo->ConsoleTitle;
     ConsoleInitInfo.DesktopLength    = ConnectInfo->DesktopLength;
@@ -480,9 +480,10 @@ ConSrvConnect(IN PCSR_PROCESS CsrProcess,
         Status = ConSrvInheritConsole(ProcessData,
                                       ConnectInfo->ConsoleStartInfo.ConsoleHandle,
                                       FALSE,
-                                      NULL,  // &ConnectInfo->ConsoleStartInfo.InputHandle,
-                                      NULL,  // &ConnectInfo->ConsoleStartInfo.OutputHandle,
-                                      NULL); // &ConnectInfo->ConsoleStartInfo.ErrorHandle);
+                                      NULL, // &ConnectInfo->ConsoleStartInfo.InputHandle,
+                                      NULL, // &ConnectInfo->ConsoleStartInfo.OutputHandle,
+                                      NULL, // &ConnectInfo->ConsoleStartInfo.ErrorHandle,
+                                      &ConnectInfo->ConsoleStartInfo);
         if (!NT_SUCCESS(Status))
         {
             DPRINT1("Console inheritance failed\n");
@@ -490,14 +491,6 @@ ConSrvConnect(IN PCSR_PROCESS CsrProcess,
         }
     }
 
-    /* Mark the process as having a console */
-    ProcessData->ConsoleApp = TRUE;
-    // ProcessData->Flags |= CsrProcessIsConsoleApp;
-
-    /* Return the console handle and the input wait handle to the caller */
-    ConnectInfo->ConsoleStartInfo.ConsoleHandle   = ProcessData->ConsoleHandle;
-    ConnectInfo->ConsoleStartInfo.InputWaitHandle = ProcessData->InputWaitHandle;
-
     /* Set the Property-Dialog and Control-Dispatcher handlers */
     ProcessData->PropRoutine = ConnectInfo->PropRoutine;
     ProcessData->CtrlRoutine = ConnectInfo->CtrlRoutine;
@@ -520,10 +513,6 @@ ConSrvDisconnect(PCSR_PROCESS Process)
     {
         DPRINT("ConSrvDisconnect - calling ConSrvRemoveConsole\n");
         ConSrvRemoveConsole(ProcessData);
-
-        /* Mark the process as not having a console anymore */
-        ProcessData->ConsoleApp = FALSE;
-        Process->Flags &= ~CsrProcessIsConsoleApp;
     }
 
     RtlDeleteCriticalSection(&ProcessData->HandleTableLock);
@@ -560,7 +549,7 @@ CSR_SERVER_DLL_INIT(ConServerDllInitialization)
     LoadedServerDll->DisconnectCallback = ConSrvDisconnect;
     LoadedServerDll->NewProcessCallback = ConSrvNewProcess;
     // LoadedServerDll->HardErrorCallback = ConSrvHardError;
-    LoadedServerDll->ShutdownProcessCallback = NULL;
+    LoadedServerDll->ShutdownProcessCallback = ConsoleClientShutdown;
 
     ConSrvDllInstance = LoadedServerDll->ServerHandle;
 
index cbc0d6b..716ecd0 100644 (file)
@@ -18,5 +18,6 @@ NTSTATUS ConSrvInheritConsole(PCONSOLE_PROCESS_DATA ProcessData,
                               BOOLEAN CreateNewHandlesTable,
                               PHANDLE pInputHandle,
                               PHANDLE pOutputHandle,
-                              PHANDLE pErrorHandle);
-VOID ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData);
+                              PHANDLE pErrorHandle,
+                              PCONSOLE_START_INFO ConsoleStartInfo);
+NTSTATUS ConSrvRemoveConsole(PCONSOLE_PROCESS_DATA ProcessData);
diff --git a/win32ss/user/winsrv/consrv/shutdown.c b/win32ss/user/winsrv/consrv/shutdown.c
new file mode 100644 (file)
index 0000000..4b21245
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Console Server DLL
+ * FILE:            win32ss/user/winsrv/consrv/shutdown.c
+ * PURPOSE:         Processes Shutdown
+ * PROGRAMMERS:     Alex Ionescu
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include "consrv.h"
+
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+// NOTE: See http://blogs.msdn.com/b/ntdebugging/archive/2007/06/09/how-windows-shuts-down.aspx
+ULONG
+NTAPI
+ConsoleClientShutdown(IN PCSR_PROCESS CsrProcess,
+                      IN ULONG Flags,
+                      IN BOOLEAN FirstPhase)
+{
+    PCONSOLE_PROCESS_DATA ProcessData = ConsoleGetPerProcessData(CsrProcess);
+
+    if ( ProcessData->ConsoleHandle != NULL ||
+         ProcessData->HandleTable   != NULL )
+    {
+        DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Console process [0x%x, 0x%x]\n",
+                CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+                CsrProcess->ClientId.UniqueProcess, CsrProcess->ClientId.UniqueThread);
+
+        /* We are done with the process itself */
+        CsrDereferenceProcess(CsrProcess);
+        return CsrShutdownCsrProcess;
+    }
+    else
+    {
+        DPRINT1("ConsoleClientShutdown(0x%p, 0x%x, %s) - Non-console process [0x%x, 0x%x]\n",
+                CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
+                CsrProcess->ClientId.UniqueProcess, CsrProcess->ClientId.UniqueThread);
+
+        /* On first pass, ignore the process since the GUI server should take it... */
+        if (FirstPhase) return CsrShutdownNonCsrProcess;
+
+        /* ... otherwise, call the generic handler */
+        // FIXME: Should call a generic shutdown handler!!
+        CsrDereferenceProcess(CsrProcess);
+        return CsrShutdownCsrProcess;
+    }
+
+    return CsrShutdownNonCsrProcess;
+}
+
+/* EOF */
diff --git a/win32ss/user/winsrv/winsrv.h b/win32ss/user/winsrv/winsrv.h
new file mode 100644 (file)
index 0000000..7c3f157
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS User API Server DLL
+ * FILE:            win32ss/user/winsrv/winsrv.h
+ * PURPOSE:         Main header - Definitions
+ * PROGRAMMERS:     Hermes Belusca-Maito (hermes.belusca@sfr.fr)
+ */
+
+#ifndef __WINSRV_H__
+#define __WINSRV_H__
+
+#include <stdarg.h>
+
+/* PSDK/NDK Headers */
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+/* Undocumented user definitions */
+#include <undocuser.h>
+
+#define NTOS_MODE_USER
+#include <ndk/cmfuncs.h>
+#include <ndk/obfuncs.h>
+#include <ndk/psfuncs.h>
+#include <ndk/rtlfuncs.h>
+
+/* Public Win32K Headers */
+#include <ntuser.h>
+
+/* PSEH for SEH Support */
+#include <pseh/pseh2.h>
+
+/* CSRSS Header */
+#include <csr/csrsrv.h>
+
+#endif /* __WINSRV_H__ */