- Sync with trunk head (r50270)
- This also reverts r49298.

svn path=/branches/cmake-bringup/; revision=50271
This commit is contained in:
Amine Khaldi 2011-01-03 00:33:31 +00:00
commit 6c0c23cb53
482 changed files with 40346 additions and 24711 deletions

View file

@ -185,7 +185,7 @@ macro(rpcproxy TARGET)
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_DLLDATA_ARG}${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${IDLS} COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_DLLDATA_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${IDLS}
DEPENDS ${IDLS}) DEPENDS ${IDLS})
set_source_files_properties( set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_proxy.dlldata.c
@ -198,7 +198,7 @@ macro(idl_files)
get_filename_component(FILE ${_in_FILE} NAME_WE) get_filename_component(FILE ${_in_FILE} NAME_WE)
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${IDL_SERVER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -h -H ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${IDL_SERVER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
DEPENDS ${_in_file}) DEPENDS ${_in_file})
set_source_files_properties( set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_s.c
@ -208,7 +208,7 @@ macro(idl_files)
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_HEADER_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -h -H ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${IDL_CLIENT_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.idl
DEPENDS ${_in_file}) DEPENDS ${_in_file})
set_source_files_properties( set_source_files_properties(
${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.h ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_c.c
@ -237,7 +237,7 @@ macro(add_idl_interface IDL_FILE)
get_filename_component(FILE ${IDL_FILE} NAME_WE) get_filename_component(FILE ${IDL_FILE} NAME_WE)
add_custom_command( add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c
COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} -u -U ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c ${CMAKE_CURRENT_SOURCE_DIR}/${IDL_FILE} COMMAND ${IDL_COMPILER} ${result_incs} ${result_defs} ${IDL_FLAGS} ${IDL_INTERFACE_ARG} ${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c ${CMAKE_CURRENT_SOURCE_DIR}/${IDL_FILE}
DEPENDS ${IDL_FILE}) DEPENDS ${IDL_FILE})
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE) set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${FILE}_i.c PROPERTIES GENERATED TRUE)
endmacro() endmacro()

View file

@ -6,6 +6,7 @@ add_subdirectory(cmdutils)
add_subdirectory(control) add_subdirectory(control)
add_subdirectory(dxdiag) add_subdirectory(dxdiag)
add_subdirectory(extrac32) add_subdirectory(extrac32)
add_subdirectory(findstr)
add_subdirectory(fontview) add_subdirectory(fontview)
add_subdirectory(games) add_subdirectory(games)
add_subdirectory(hh) add_subdirectory(hh)

View file

@ -1,3 +1,4 @@
//<2F>והמגתנרום
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
// Dialog // Dialog

View file

@ -1,6 +1,6 @@
/* FILE: base/applications/calc/lang/cs-CZ.rc /* FILE: base/applications/calc/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2009-01-25 * UPDATED: 2010-05-30
*/ */
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
@ -644,7 +644,7 @@ STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_TIME_DAYS "Dny" IDS_TIME_DAYS "Dny"
IDS_TIME_HOURS "Hodiny" IDS_TIME_HOURS "Hodiny"
IDS_TIME_NANOSECONDS "Nanoseconds" IDS_TIME_NANOSECONDS "Nanosekundy"
IDS_TIME_MICROSECONDS "Mikrosekundy" IDS_TIME_MICROSECONDS "Mikrosekundy"
IDS_TIME_MILLISECONDS "Milisekundy" IDS_TIME_MILLISECONDS "Milisekundy"
IDS_TIME_MINUTES "Minuty" IDS_TIME_MINUTES "Minuty"

View file

@ -380,6 +380,7 @@ int exec_infix2postfix(calc_number_t *number, unsigned int func)
tmp.node.number = *number; tmp.node.number = *number;
tmp.node.base = calc.base; tmp.node.base = calc.base;
tmp.node.operation = func; tmp.node.operation = func;
tmp.next = NULL;
push(&tmp); push(&tmp);

View file

@ -0,0 +1,40 @@
/*
* REG.EXE - Wine-compatible reg program.
* Bulgarian language support
*
* Copyright 2008 Andrew Riedi
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "reg.h"
/* UTF-8 */
#pragma code_page(65001)
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE
{
STRING_USAGE, "Синтаксисът на командата е:\n\nREG [ ADD | DELETE | QUERY ]\nREG команда /?\n"
STRING_ADD_USAGE, "REG ADD ключ_име [/v стойност_име | /ve] [/t вид] [/s разделител] [/d данни] [/f]\n"
STRING_DELETE_USAGE, "REG DELETE ключ_име [/v стойност_име | /ve | /va] [/f]\n"
STRING_QUERY_USAGE, "REG QUERY ключ_име [/v стойност_име | /ve] [/s]\n"
STRING_SUCCESS, "Десйствието е приключено успешно\n"
STRING_INVALID_KEY, "Грешка: Недопустимо име за ключ\n"
STRING_INVALID_CMDLINE, "Грешка: Неправилни параметри на командия ред\n"
STRING_NO_REMOTE, "Грешка: Неуспешно добавяне на ключове в отдалечената машина\n"
STRING_CANNOT_FIND, "Грешка: Уредбата не откри указания регистърен ключ или стойност\n"
}

View file

@ -4,6 +4,7 @@
#include "Pl.rc" #include "Pl.rc"
/* UTF-8 */ /* UTF-8 */
#include "Bg.rc"
#include "Da.rc" #include "Da.rc"
#include "De.rc" #include "De.rc"
#include "Es.rc" #include "Es.rc"

View file

@ -34,7 +34,7 @@ STRINGTABLE
STRING_SIMCOPY, "%d file saranno copiati\n" STRING_SIMCOPY, "%d file saranno copiati\n"
STRING_COPY, "%d file copiato/i\n" STRING_COPY, "%d file copiato/i\n"
STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\ STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\
nell'obiettivo?\n\ nella destinazione?\n\
(F - File, C - Cartella)\n" (F - File, C - Cartella)\n"
STRING_SRCPROMPT,"%s? (Sì|No)\n" STRING_SRCPROMPT,"%s? (Sì|No)\n"
STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n" STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n"

View file

@ -56,7 +56,7 @@ XCOPY 원본 [대상] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\n\ \n\
Where:\n\ Where:\n\
\n\ \n\
[/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을 \n\ [/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을\n\
\t복사\n\ \t복사\n\
[/S] 디렉토리하고 하위 디렉토리 복사\n\ [/S] 디렉토리하고 하위 디렉토리 복사\n\
[/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\ [/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\

View file

@ -0,0 +1,141 @@
/*
* XCOPY - Wine-compatible xcopy program
* Serbian language support
*
* Copyright (C) 2007 J. Edmeades
* Copyright 2010 Đorđe Vasiljević
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "xcopy.h"
#pragma code_page(65001)
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
STRINGTABLE
{
STRING_INVPARMS, "Неисправан број параметара. Користите xcopy /? за помоћ\n"
STRING_INVPARM, "Неисправан параметар „%s“. Користите xcopy /? за помоћ\n"
STRING_PAUSE, "Притисните <enter> да започнете умножавање\n"
STRING_SIMCOPY, "%d датотека/е ће бити уможено\n"
STRING_COPY, "%d датотека/е је умножено\n"
STRING_QISDIR, "Да ли је „%s“ назив датотеке или фасцикла\n\
на одредишту?\n\
(Д - датотека, Ф - фасцикла)\n"
STRING_SRCPROMPT,"%s? (Да|Не)\n"
STRING_OVERWRITE,"Заменити %s? (Да|Не|Све)\n"
STRING_COPYFAIL, "Умножавање „%s“ у „%s“ није успело са r/c %d\n"
STRING_OPENFAIL, "Отварање „%s“ датотеке није успело\n"
STRING_READFAIL, "Читање „%s“ датотеке није успело\n"
STRING_YES_CHAR, "Д"
STRING_NO_CHAR, "Н"
STRING_ALL_CHAR, "С"
STRING_FILE_CHAR,"Д"
STRING_DIR_CHAR, "Ф"
STRING_HELP,
"XCOPY — умножава изворне датотеке или гране фасцикли у одредиште\n\
\n\
Синтакса:\n\
XCOPY извор [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Где:\n\
\n\
[/I] Претпостави фасциклу када одредиште не постоји и када се умножавају две или\n\
\tвише датотека\n\
[/S] Умножи фасцикле и потфасцикле\n\
[/E] Умножи фасцикле и потфасцикле заједно с празним\n\
[/Q] Не приказуј називе током умножавања.\n\
[/F] Прикажи цео извор и одредиште током умножавања\n\
[/L] Опонашај радњу приказујући називе који ће бити умножени\n\
[/W] Питај пре почињања умножавања\n\
[/T] Прави празну структуру фасцикле, али не умножава датотеке\n\
[/Y] Потисни упит при замењивању датотека\n\
[/-Y] Омогући упит при замењивању датотека\n\
[/P] Питај за сваку изворну датотеку пре умножавања\n\
[/N] Умножи користећи кратке називе\n\
[/U] Умножи само оне датотеке које постоје у одредишту\n\
[/R] Замени све датотеке које се само читају\n\
[/H] Укључи сакривене и системске датотеке у умножавање\n\
[/C] Настави иако дође до грешке у умножавању\n\
[/A] Умножи само архивиране датотеке\n\
[/M] Умножи само архивиране датотеке и уклони\n\
\tособине архиве\n\
[/D | /D:m-d-y] Умножи нове или измењене датотеке након одређеног датума.\n\
\t\tАко датум није унесен, умножи само ако је одредиште старије\n\
\t\tод извора\n\n"
}
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
STRINGTABLE
{
STRING_INVPARMS, "Neispravan broj parametara. Koristite xcopy /? za pomoć\n"
STRING_INVPARM, "Neispravan parametar „%s“. Koristite xcopy /? za pomoć\n"
STRING_PAUSE, "Pritisnite <enter> da započnete umnožavanje\n"
STRING_SIMCOPY, "%d datoteka/e će biti umoženo\n"
STRING_COPY, "%d datoteka/e je umnoženo\n"
STRING_QISDIR, "Da li je „%s“ naziv datoteke ili fascikla\n\
na odredištu?\n\
(D - datoteka, F - fascikla)\n"
STRING_SRCPROMPT,"%s? (Da|Ne)\n"
STRING_OVERWRITE,"Zameniti %s? (Da|Ne|Sve)\n"
STRING_COPYFAIL, "Umnožavanje „%s“ u „%s“ nije uspelo sa r/c %d\n"
STRING_OPENFAIL, "Otvaranje „%s“ datoteke nije uspelo\n"
STRING_READFAIL, "Čitanje „%s“ datoteke nije uspelo\n"
STRING_YES_CHAR, "D"
STRING_NO_CHAR, "N"
STRING_ALL_CHAR, "S"
STRING_FILE_CHAR,"D"
STRING_DIR_CHAR, "F"
STRING_HELP,
"XCOPY — umnožava izvorne datoteke ili grane fascikli u odredište\n\
\n\
Sintaksa:\n\
XCOPY izvor [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Gde:\n\
\n\
[/I] Pretpostavi fasciklu kada odredište ne postoji i kada se umnožavaju dve ili\n\
\tviše datoteka\n\
[/S] Umnoži fascikle i potfascikle\n\
[/E] Umnoži fascikle i potfascikle zajedno s praznim\n\
[/Q] Ne prikazuj nazive tokom umnožavanja.\n\
[/F] Prikaži ceo izvor i odredište tokom umnožavanja\n\
[/L] Oponašaj radnju prikazujući nazive koji će biti umnoženi\n\
[/W] Pitaj pre počinjanja umnožavanja\n\
[/T] Pravi praznu strukturu fascikle, ali ne umnožava datoteke\n\
[/Y] Potisni upit pri zamenjivanju datoteka\n\
[/-Y] Omogući upit pri zamenjivanju datoteka\n\
[/P] Pitaj za svaku izvornu datoteku pre umnožavanja\n\
[/N] Umnoži koristeći kratke nazive\n\
[/U] Umnoži samo one datoteke koje postoje u odredištu\n\
[/R] Zameni sve datoteke koje se samo čitaju\n\
[/H] Uključi sakrivene i sistemske datoteke u umnožavanje\n\
[/C] Nastavi iako dođe do greške u umnožavanju\n\
[/A] Umnoži samo arhivirane datoteke\n\
[/M] Umnoži samo arhivirane datoteke i ukloni\n\
\tosobine arhive\n\
[/D | /D:m-d-y] Umnoži nove ili izmenjene datoteke nakon određenog datuma.\n\
\t\tAko datum nije unesen, umnoži samo ako je odredište starije\n\
\t\tod izvora\n\n"
}

View file

@ -43,5 +43,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "Ro.rc" #include "Ro.rc"
#include "Ru.rc" #include "Ru.rc"
#include "Si.rc" #include "Si.rc"
#include "Sr.rc"
#include "Sv.rc" #include "Sv.rc"
#include "Uk.rc" #include "Uk.rc"

View file

@ -49,6 +49,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(xcopy); WINE_DEFAULT_DEBUG_CHANNEL(xcopy);
/* Prototypes */ /* Prototypes */
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
WCHAR *supplieddestination, DWORD *flags);
static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem, static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem,
WCHAR *spec, DWORD flags); WCHAR *spec, DWORD flags);
static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem,
@ -108,17 +110,6 @@ int wmain (int argc, WCHAR *argvW[])
const WCHAR PROMPTSTR1[] = {'/', 'Y', 0}; const WCHAR PROMPTSTR1[] = {'/', 'Y', 0};
const WCHAR PROMPTSTR2[] = {'/', 'y', 0}; const WCHAR PROMPTSTR2[] = {'/', 'y', 0};
const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0}; const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0};
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
/*
* Parse the command line
*/
/* Confirm at least one parameter */
if (argc < 2) {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
return RC_INITERROR;
}
/* Preinitialize flags based on COPYCMD */ /* Preinitialize flags based on COPYCMD */
if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) { if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) {
@ -135,125 +126,16 @@ int wmain (int argc, WCHAR *argvW[])
lose */ lose */
flags |= OPT_COPYHIDSYS; flags |= OPT_COPYHIDSYS;
/* Skip first arg, which is the program name */ /*
argvW++; * Parse the command line
*/
while (argc > 1) if ((rc = XCOPY_ParseCommandLine(suppliedsource, supplieddestination,
{ &flags)) != RC_OK) {
argc--; if (rc == RC_HELP)
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(*argvW));
/* First non-switch parameter is source, second is destination */
if (*argvW[0] != '/') {
if (suppliedsource[0] == 0x00) {
lstrcpyW(suppliedsource, *argvW);
} else if (supplieddestination[0] == 0x00) {
lstrcpyW(supplieddestination, *argvW);
} else {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
return RC_INITERROR;
}
} else {
/* Process all the switch options
Note: Windows docs say /P prompts when dest is created
but tests show it is done for each src file
regardless of the destination */
switch (toupper(argvW[0][1])) {
case 'I': flags |= OPT_ASSUMEDIR; break;
case 'S': flags |= OPT_RECURSIVE; break;
case 'Q': flags |= OPT_QUIET; break;
case 'F': flags |= OPT_FULL; break;
case 'L': flags |= OPT_SIMULATE; break;
case 'W': flags |= OPT_PAUSE; break;
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
case 'Y': flags |= OPT_NOPROMPT; break;
case 'N': flags |= OPT_SHORTNAME; break;
case 'U': flags |= OPT_MUSTEXIST; break;
case 'R': flags |= OPT_REPLACEREAD; break;
case 'H': flags |= OPT_COPYHIDSYS; break;
case 'C': flags |= OPT_IGNOREERRORS; break;
case 'P': flags |= OPT_SRCPROMPT; break;
case 'A': flags |= OPT_ARCHIVEONLY; break;
case 'M': flags |= OPT_ARCHIVEONLY |
OPT_REMOVEARCH; break;
/* E can be /E or /EXCLUDE */
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
NORM_IGNORECASE | SORT_STRINGSORT,
&argvW[0][1], 8,
EXCLUDE, -1) == 2) {
if (XCOPY_ProcessExcludeList(&argvW[0][9])) {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
return RC_INITERROR;
} else flags |= OPT_EXCLUDELIST;
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
break;
/* D can be /D or /D: */
case 'D': if ((argvW[0][2])==':' && isdigit(argvW[0][3])) {
SYSTEMTIME st;
WCHAR *pos = &argvW[0][3];
BOOL isError = FALSE;
memset(&st, 0x00, sizeof(st));
/* Parse the arg : Month */
st.wMonth = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
/* Parse the arg : Day */
if (!isError) {
st.wDay = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
}
/* Parse the arg : Day */
if (!isError) {
st.wYear = _wtol(pos);
if (st.wYear < 100) st.wYear+=2000;
}
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
SYSTEMTIME st;
WCHAR datestring[32], timestring[32];
flags |= OPT_DATERANGE;
/* Debug info: */
FileTimeToSystemTime (&dateRange, &st);
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
sizeof(datestring)/sizeof(WCHAR));
GetTimeFormatW(0, TIME_NOSECONDS, &st,
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
WINE_TRACE("Date being used is: %s %s\n",
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
} else {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
return RC_INITERROR;
}
} else {
flags |= OPT_DATENEWER;
}
break;
case '-': if (toupper(argvW[0][2])=='Y')
flags &= ~OPT_NOPROMPT; break;
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
return RC_OK; return RC_OK;
default: else
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(*argvW)); return rc;
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), *argvW);
return RC_INITERROR;
} }
}
argvW++;
}
/* Default the destination if not supplied */
if (supplieddestination[0] == 0x00)
lstrcpyW(supplieddestination, wchr_dot);
/* Trace out the supplied information */ /* Trace out the supplied information */
WINE_TRACE("Supplied parameters:\n"); WINE_TRACE("Supplied parameters:\n");
@ -310,6 +192,211 @@ int wmain (int argc, WCHAR *argvW[])
} }
/* =========================================================================
XCOPY_ParseCommandLine - Parses the command line
========================================================================= */
static BOOL is_whitespace(WCHAR c)
{
return c == ' ' || c == '\t';
}
static WCHAR *skip_whitespace(WCHAR *p)
{
for (; *p && is_whitespace(*p); p++);
return p;
}
/* Windows XCOPY uses a simplified command line parsing algorithm
that lacks the escaped-quote logic of build_argv(), because
literal double quotes are illegal in any of its arguments.
Example: 'XCOPY "c:\DIR A" "c:DIR B\"' is OK. */
static int find_end_of_word(const WCHAR *word, WCHAR **end)
{
BOOL in_quotes = 0;
const WCHAR *ptr = word;
for (;;) {
for (; *ptr != '\0' && *ptr != '"' &&
(in_quotes || !is_whitespace(*ptr)); ptr++);
if (*ptr == '"') {
in_quotes = !in_quotes;
ptr++;
}
/* Odd number of double quotes is illegal for XCOPY */
if (in_quotes && *ptr == '\0')
return RC_INITERROR;
if (*ptr == '\0' || (!in_quotes && is_whitespace(*ptr)))
break;
}
*end = (WCHAR*)ptr;
return RC_OK;
}
/* Remove all double quotes from a word */
static void strip_quotes(WCHAR *word, WCHAR **end)
{
WCHAR *rp, *wp;
for (rp = word, wp = word; *rp != '\0'; rp++) {
if (*rp == '"')
continue;
if (wp < rp)
*wp = *rp;
wp++;
}
*wp = '\0';
*end = wp;
}
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
WCHAR *supplieddestination, DWORD *pflags)
{
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
DWORD flags = *pflags;
WCHAR *cmdline, *word, *end, *next;
int rc = RC_INITERROR;
cmdline = _wcsdup(GetCommandLineW());
if (cmdline == NULL)
return rc;
/* Skip first arg, which is the program name */
if ((rc = find_end_of_word(cmdline, &word)) != RC_OK)
goto out;
word = skip_whitespace(word);
while (*word)
{
WCHAR first;
if ((rc = find_end_of_word(word, &end)) != RC_OK)
goto out;
next = skip_whitespace(end);
first = word[0];
*end = '\0';
strip_quotes(word, &end);
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(word));
/* First non-switch parameter is source, second is destination */
if (first != '/') {
if (suppliedsource[0] == 0x00) {
lstrcpyW(suppliedsource, word);
} else if (supplieddestination[0] == 0x00) {
lstrcpyW(supplieddestination, word);
} else {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
goto out;
}
} else {
/* Process all the switch options
Note: Windows docs say /P prompts when dest is created
but tests show it is done for each src file
regardless of the destination */
switch (toupper(word[1])) {
case 'I': flags |= OPT_ASSUMEDIR; break;
case 'S': flags |= OPT_RECURSIVE; break;
case 'Q': flags |= OPT_QUIET; break;
case 'F': flags |= OPT_FULL; break;
case 'L': flags |= OPT_SIMULATE; break;
case 'W': flags |= OPT_PAUSE; break;
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
case 'Y': flags |= OPT_NOPROMPT; break;
case 'N': flags |= OPT_SHORTNAME; break;
case 'U': flags |= OPT_MUSTEXIST; break;
case 'R': flags |= OPT_REPLACEREAD; break;
case 'H': flags |= OPT_COPYHIDSYS; break;
case 'C': flags |= OPT_IGNOREERRORS; break;
case 'P': flags |= OPT_SRCPROMPT; break;
case 'A': flags |= OPT_ARCHIVEONLY; break;
case 'M': flags |= OPT_ARCHIVEONLY |
OPT_REMOVEARCH; break;
/* E can be /E or /EXCLUDE */
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
NORM_IGNORECASE | SORT_STRINGSORT,
&word[1], 8,
EXCLUDE, -1) == 2) {
if (XCOPY_ProcessExcludeList(&word[9])) {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
goto out;
} else flags |= OPT_EXCLUDELIST;
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
break;
/* D can be /D or /D: */
case 'D': if (word[2]==':' && isdigit(word[3])) {
SYSTEMTIME st;
WCHAR *pos = &word[3];
BOOL isError = FALSE;
memset(&st, 0x00, sizeof(st));
/* Parse the arg : Month */
st.wMonth = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
/* Parse the arg : Day */
if (!isError) {
st.wDay = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
}
/* Parse the arg : Day */
if (!isError) {
st.wYear = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (st.wYear < 100) st.wYear+=2000;
}
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
SYSTEMTIME st;
WCHAR datestring[32], timestring[32];
flags |= OPT_DATERANGE;
/* Debug info: */
FileTimeToSystemTime (&dateRange, &st);
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
sizeof(datestring)/sizeof(WCHAR));
GetTimeFormatW(0, TIME_NOSECONDS, &st,
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
WINE_TRACE("Date being used is: %s %s\n",
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
} else {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
goto out;
}
} else {
flags |= OPT_DATENEWER;
}
break;
case '-': if (toupper(word[2])=='Y')
flags &= ~OPT_NOPROMPT; break;
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
rc = RC_HELP;
goto out;
default:
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(word));
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), word);
goto out;
}
}
word = next;
}
/* Default the destination if not supplied */
if (supplieddestination[0] == 0x00)
lstrcpyW(supplieddestination, wchr_dot);
*pflags = flags;
rc = RC_OK;
out:
free(cmdline);
return rc;
}
/* ========================================================================= /* =========================================================================
XCOPY_ProcessSourceParm - Takes the supplied source parameter, and XCOPY_ProcessSourceParm - Takes the supplied source parameter, and
@ -432,8 +519,10 @@ static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR
if (attribs == INVALID_FILE_ATTRIBUTES) { if (attribs == INVALID_FILE_ATTRIBUTES) {
/* If /I supplied and wildcard copy, assume directory */ /* If /I supplied and wildcard copy, assume directory */
if (flags & OPT_ASSUMEDIR && /* Also if destination ends with backslash */
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) { if ((flags & OPT_ASSUMEDIR &&
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) ||
(supplieddestination[lstrlenW(supplieddestination)-1] == '\\')) {
isDir = TRUE; isDir = TRUE;

View file

@ -26,6 +26,7 @@
#define RC_CTRLC 2 #define RC_CTRLC 2
#define RC_INITERROR 4 #define RC_INITERROR 4
#define RC_WRITEERROR 5 #define RC_WRITEERROR 5
#define RC_HELP 6
#define OPT_ASSUMEDIR 0x00000001 #define OPT_ASSUMEDIR 0x00000001
#define OPT_RECURSIVE 0x00000002 #define OPT_RECURSIVE 0x00000002

View file

@ -0,0 +1,11 @@
add_definitions(-D_DLL -D__USE_CRTIMP)
add_executable(findstr
findstr.c
findstr.rc
rsrc.rc)
set_module_type(findstr win32cui)
add_importlibs(findstr user32 msvcrt kernel32)
add_cab_target(findstr 1)

View file

@ -0,0 +1,295 @@
/* findstr.c */
/* Copyright (C) 1994-2002, Jim Hall <jhall@freedos.org> */
/* Adapted for ReactOS -Edited for Findstr.exe K'Williams */
/*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* This program locates a string in a text file and prints those lines
* that contain the string. Multiple files are clearly separated.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <windows.h>
#include <io.h>
#include <dos.h>
#include "resource.h"
/* Symbol definition */
#define MAX_STR 1024
/* This function prints out all lines containing a substring. There are some
* conditions that may be passed to the function.
*
* RETURN: If the string was found at least once, returns 1.
* If the string was not found at all, returns 0.
*/
int
find_str (char *sz, FILE *p, int invert_search,
int count_lines, int number_output, int ignore_case, int at_start, int literal_search,
int at_end, int reg_express, int exact_match, int sub_dirs, int only_fname)
{
int i, length;
long line_number = 0, total_lines = 0;
char *c, temp_str[MAX_STR], this_line[MAX_STR];
/* Convert to upper if needed */
if (ignore_case)
{
length = strlen (sz);
for (i = 0; i < length; i++)
sz[i] = toupper (sz[i]);
}
/* Scan the file until EOF */
while (fgets (temp_str, MAX_STR, p) != NULL)
{
/* Remove the trailing newline */
length = strlen (temp_str);
if (temp_str[length-1] == '\n')
{
temp_str[length-1] = '\0';
}
/* Increment number of lines */
line_number++;
strcpy (this_line, temp_str);
/* Convert to upper if needed */
if (ignore_case)
{
for (i = 0; i < length; i++)
{
temp_str[i] = toupper (temp_str[i]);
}
}
/* Locate the substring */
/* strstr() returns a pointer to the first occurrence in the
string of the substring */
c = strstr (temp_str, sz);
if ( ((invert_search) ? (c == NULL) : (c != NULL)) )
{
if (!count_lines)
{
if (number_output)
printf ("%ld:", line_number);
/* Print the line of text */
puts (this_line);
}
total_lines++;
} /* long if */
} /* while fgets */
if (count_lines)
{
/* Just show num. lines that contain the string */
printf ("%ld\n", total_lines);
}
/* RETURN: If the string was found at least once, returns 1.
* If the string was not found at all, returns 0.
*/
return (total_lines > 0 ? 1 : 0);
}
/* Show usage */
void
usage (void)
{
TCHAR lpUsage[4096];
LoadString( GetModuleHandle(NULL), IDS_USAGE, (LPTSTR)lpUsage, 4096);
CharToOem(lpUsage, lpUsage);
printf( lpUsage );
}
/* Main program */
int
main (int argc, char **argv)
{
char *opt, *needle = NULL;
int ret = 0;
TCHAR lpMessage[4096];
int invert_search = 0; /* flag to invert the search */
int count_lines = 0; /* flag to whether/not count lines */
int number_output = 0; /* flag to print line numbers */
int ignore_case = 0; /* flag to be case insensitive */
int at_start = 0; /* flag to Match if at the beginning of a line. */
int at_end = 0; /* flag to Match if at the beginning of a line. */
int reg_express = 0; /* flag to use/not use regular expressions */
int exact_match = 0; /* flag to be exact match */
int sub_dirs= 0; /* this and all subdirectories */
int only_fname= 0; /* print only the name of the file*/
int literal_search=0;
FILE *pfile; /* file pointer */
int hfind; /* search handle */
struct _finddata_t finddata; /* _findfirst, filenext block */
/* Scan the command line */
while ((--argc) && (needle == NULL))
{
if (*(opt = *++argv) == '/')
{
switch (opt[1])
{
case 'b':
case 'B': /* Matches pattern if at the beginning of a line */
at_start = 1;
break;
//case 'c':
//case 'C': /* Literal? */
// literal_search = 1;
// break;
case 'e':
case 'E': /* matches pattern if at end of line */
at_end = 1;
break;
case 'i':
case 'I': /* Ignore */
ignore_case = 1;
break;
case 'm':
case 'M': /* only filename */
only_fname = 1;
break;
case 'n':
case 'N': /* Number */
number_output = 1;
break;
case 'r':
case 'R': /* search strings as regular expressions */
reg_express = 1;
break;
case 's':
case 'S': /* search files in child directory too*/
sub_dirs = 1;
break;
case 'v':
case 'V': /* Not with */
invert_search = 1;
break;
case 'x':
case 'X': /* exact match */
exact_match = 1;
break;
default:
usage ();
exit (2); /* syntax error .. return error 2 */
break;
}
}
else
{
/* Get the string */
if (needle == NULL)
{
/* Assign the string to find */
needle = *argv;
}
}
}
/* Check for search string */
if (needle == NULL)
{
/* No string? */
usage ();
exit (1);
}
/* Scan the files for the string */
if (argc == 0)
{
ret = find_str (needle, stdin, invert_search, count_lines,
number_output, ignore_case, at_start, literal_search, at_end, reg_express, exact_match,
sub_dirs, only_fname);
}
while (--argc >= 0)
{
hfind = _findfirst (*++argv, &finddata);
if (hfind < 0)
{
/* We were not able to find a file. Display a message and
set the exit status. */
LoadString( GetModuleHandle(NULL), IDS_NO_SUCH_FILE, (LPTSTR)lpMessage, 4096);
CharToOem(lpMessage, lpMessage);
fprintf (stderr, lpMessage, *argv);//
}
else
{
/* repeat find next file to match the filemask */
do
{
/* We have found a file, so try to open it */
if ((pfile = fopen (finddata.name, "r")) != NULL)
{
printf ("---------------- %s\n", finddata.name);
ret = find_str (needle, pfile, invert_search, count_lines,
number_output, ignore_case, at_start, literal_search, at_end, reg_express, exact_match,
sub_dirs, only_fname);
fclose (pfile);
}
else
{
LoadString(GetModuleHandle(NULL), IDS_CANNOT_OPEN, (LPTSTR)lpMessage, 4096);
CharToOem(lpMessage, lpMessage);
fprintf (stderr, lpMessage,
finddata.name);
}
}
while (_findnext(hfind, &finddata) > 0);
}
_findclose(hfind);
} /* for each argv */
/* RETURN: If the string was found at least once, returns 0.
* If the string was not found at all, returns 1.
* (Note that find_str.c returns the exact opposite values.)
*/
exit ( (ret ? 0 : 1) );
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="findstr" type="win32cui" installbase="system32" installname="findstr.exe">
<library>user32</library>
<file>findstr.c</file>
<file>findstr.rc</file>
<file>rsrc.rc</file>
</module>

View file

@ -0,0 +1,6 @@
#define REACTOS_STR_FILE_DESCRIPTION "W32 findstr command\0"
#define REACTOS_STR_INTERNAL_NAME "findstr\0"
#define REACTOS_STR_ORIGINAL_FILENAME "findstr.exe\0"
#include <reactos/version.rc>
#include "rsrc.rc"

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Извежда всички редове във файла, които съдържат указания низ..\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"низ\" [ файл... ]\n\
/C Брои колко реда съдържат низа\n\
/I Пренебрегва ГлАвНОсТта\n\
/N Брой показани редове, като се започва от 1\n\
/V Извеждане на редовете, НЕсъдържащи низа."
IDS_NO_SUCH_FILE, "FIND: %s: Няма такъв файл\n"
IDS_CANNOT_OPEN, "FIND: %s: Отварянето на файла е невъзможно\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_CATALAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Mostra totes les linies que continguin una determinada cadena de caràcters.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"Cadena de caràcters\" [ file... ]\n\
/C Conta el numero de linies que contenen la cadena de caràcters\n\
/I Ignora majúscules i minúscules\n\
/N Numero de linies mostrades, començant per la primera\n\
/V Mostra les linies que no contenen la cadena de caràcters"
IDS_NO_SUCH_FILE, "FIND: %s: No he trobat el fitxer\n"
IDS_CANNOT_OPEN, "FIND: %s: No puc obrir el fitxer\n"
END

View file

@ -0,0 +1,23 @@
/* FILE: applications/cmdutils/find/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* THANKS TO: Mario Kacmar aka Kario (kario@szm.sk)
* UPDATED: 2008-02-29
*/
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Zobrazí všechny øádky souboru obsahující hledaný øetìzec.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"øetìzec\" [ soubor... ]\n\
/C Zobrazí poèet øádkù obsahující øetìzec.\n\
/I Ignoruje velikost písmen.\n\
/N Èísluje zobrazené øádky, zaèíná od 1.\n\
/V Zobrazí všechny øádky, které NEobsahují zadaný øetìžec."
IDS_NO_SUCH_FILE, "FIND: Soubor %s nebyl nalezen.\n"
IDS_CANNOT_OPEN, "FIND: Soubor %s nelze otevøít!\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "Sucht in einer Datei nach einer Zeichenfolge.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n\
/C Zeigt nur die Anzahl der die Zeichenfolge enthaltenen Zeilen an.\n\
/I Ignoriert Groß-/Kleinbuchstaben bei der Suche.\n\
/N Zeigt die Zeilen mit ihren Zeilennummern an.\n\
/V Zeigt alle Zeilen an, die die Zeichenfolge NICHT enhalten."
IDS_NO_SUCH_FILE, "Datei %s nicht gefunden\n"
IDS_CANNOT_OPEN, "Datei %s kann nicht geöffnet werden.\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Εκτυπώνει όλες τις γραμμές ενός αρχείου που περιέχουν ένα αλφαριθμητικό.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"αλφαριθμητικό\" [ αρχείο... ]\n\
/C Μέτρηση γραμμών που περιέχουν το αλφαριθμητικό\n\
/I Αγνόηση κεφαλαίων\n\
/N Εμφάνιση αριθμών στις εμφανιζόμενες γραμμές, ξεκινώντας από το 1\n\
/V Εκτύπωση γραμμών που δεν περιέχουν το αλφαριθμητικό"
IDS_NO_SUCH_FILE, "FIND: %s: Δεν υπάρχει αυτό το αρχείο\n"
IDS_CANNOT_OPEN, "FIND: %s: Δεν ήταν δυνατό το άνοιγμα του αρχείου\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FINDSTR: Prints all lines of a file that contain a string.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n\
/C Count the number of lines that contain string\n\
/I Ignore case\n\
/N Number the displayed lines, starting at 1\n\
/V Print lines that do not contain the string"
IDS_NO_SUCH_FILE, "FINDSTR: %s: No such file\n"
IDS_CANNOT_OPEN, "FINDSTR: %s: Cannot open file\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Imprime todas las líneas de un fichero que contiene una cadena.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"cadena\" [ fichero... ]\n\
/C Cuenta el número de líneas que contienen la cadena de caracteres\n\
/I Ignora mayúsculas y minúsculas\n\
/N Numero de líneas a mostrar en pantalla, a partir de la primera\n\
/V Muestra las líneas que no contienen la cadena de caracteres."
IDS_NO_SUCH_FILE, "FIND: %s: No se encontró el fichero\n"
IDS_CANNOT_OPEN, "FIND: %s: No se pudo abrir el fichero\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Affiche toutes les lignes d'un fichier qui contiennent un morceau de texte.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"texte\" [ fichier... ]\n\
/C Compte le nombre de lignes qui contiennent le texte\n\
/I Insensible à la casse\n\
/N Numérote les lignes affichées en commençant à 1\n\
/V Affiche les lignes qui ne contiennent pas le texte"
IDS_NO_SUCH_FILE, "FIND: %s : fichier inexistant\n"
IDS_CANNOT_OPEN, "FIND: %s : impossible d'ouvrir le fichier\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Visualizza le linee di un file che contengono un stringa.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"stringa\" [ file... ]\n\
/C Conta il numero di linee che contengono la stringa\n\
/I Ignora maiuscole/minuscole\n\
/N Numera le linee visualizzate a partire da 1\n\
/V Visualizza le linee che non contengono la stringa"
IDS_NO_SUCH_FILE, "FIND: %s: File non trovato\n"
IDS_CANNOT_OPEN, "FIND: %s: Impossibile aprire il file\n"
END

View file

@ -0,0 +1,26 @@
/*
* PROJECT: ReactOS find command
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/cmdutils/find/lang/lt-LT.rc
* PURPOSE: Lithuanian Language File
* TRANSLATOR: Vytis "CMan" Girdþijauskas (cman@cman.us)
* DATE: 2007-09-23
*/
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Spausdina visas bylos eilutes, kuriose yra ieðkomas tekstas.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"tekstas\" [ byla... ]\n\
/C Skaièiuoti eilutes, kuriose yra ieðkomas tekstas\n\
/I Ignoruoti raidþiø dydá\n\
/N Numeruoti vaizduojamas eilutes, pradedant nuo 1\n\
/V Spausdinti eilutes, kuriose nëra ieðkomo teksto"
IDS_NO_SUCH_FILE, "FIND: %s: Tokios bylos nëra\n"
IDS_CANNOT_OPEN, "FIND: %s: Nepavyko atverti bylos\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FINN: Skriv alle linjene for filen som inneholder en streng.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"streng\" [ fil... ]\n\
/C Teller nummer av linjer som inneholder strenger\n\
/I Ignorere sak\n\
/N Nummer viste linjer, start med 1\n\
/V Skriv linjer som ikke inneholder en streng"
IDS_NO_SUCH_FILE, "FINN: %s: Ingen filer\n"
IDS_CANNOT_OPEN, "FINN: %s: Kan ikke åpne filen\n"
END

View file

@ -0,0 +1,24 @@
/*
* translated by Caemyr - Olaf Siejka (Dec,2007)
* Use ReactOS forum PM or IRC to contact me
* http://www.reactos.org
* IRC: irc.freenode.net #reactos-pl
*/
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Wyświetla wszystkie linie danego pliku, zawierające szukany ciąg znaków.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"ciąg znaków\" [ plik... ]\n\
/C Oblicza w ilu liniach pojawił się szukany ciąg znaków\n\
/I Ignoruje wielkość liter\n\
/N Numeruje wyświetlane linie, zaczynając od 1\n\
/V Wyświetla te linie które nie zawierają szukanego ciągu znaków"
IDS_NO_SUCH_FILE, "FIND: %s: Plik nie został znaleziony\n"
IDS_CANNOT_OPEN, "FIND: %s: Nie można otworzyć pliku\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Localiza uma seqüência de texto em um ou mais arquivos.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"seqüência\" [ arquivo... ]\n\
/C Exibe apenas o número de linhas que contêm a seqüência.\n\
/I Ignora maiúsculas/minúsculas ao localizar uma seqüência.\n\
/N Exibe o número de cada linha, iniciando no 1.\n\
/V Exibe todas as linhas que NÃO contêm a seqüência especificada."
IDS_NO_SUCH_FILE, "FIND: %s: Arquivo não encontrado\n"
IDS_CANNOT_OPEN, "FIND: %s: Não foi possível abrir o arquivo\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Поиск текстовой строки в одном или нескольких файлах.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"строка\" [ файл... ]\n\
/C Вывод только общего числа строк, содержащих заданную строку.\n\
/I Поиск без учета регистра символов.\n\
/N Вывод номеров отображаемых строк (начиная с 1).\n\
/V Вывод всех строк, НЕ содержащих заданную строку."
IDS_NO_SUCH_FILE, "FIND: %s: Файл не существует.\n"
IDS_CANNOT_OPEN, "FIND: %s: Невозможно открыть файл.\n"
END

View file

@ -0,0 +1,21 @@
/* TRANSLATOR: M rio KaŸm r /Mario Kacmar/ aka Kario (kario@szm.sk)
* DATE OF TR: 12-02-2008
*/
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Zobraz¡ vçetky riadky s£boru obsahuj£ce hadanì reœazec.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"reœazec\" [ s£bor... ]\n\
/C Zobraz¡ poŸet riadkov, ktor obsahuj£ reœazec.\n\
/I Ignoruje vekosœ p¡smen.\n\
/N ¬¡sluje zobrazen riadky, zaŸ¡na od 1.\n\
/V Zobraz¡ vçetky riadky, ktor neobsahuj£ hadanì reœazec."
IDS_NO_SUCH_FILE, "FIND: S£bor %s sa nenaçiel.\n"
IDS_CANNOT_OPEN, "FIND: S£bor %s sa ned  otvoriœ.\n"
END

View file

@ -0,0 +1,17 @@
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Skriver ut alla rader i en fil som innehåller en sträng.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"sträng\" [ fil... ]\n\
/C Räkna nummren av linjer som innehåller en strängen\n\
/I Ignorera skiftläge\n\
/N Antal visade rader, börjar på 1\n\
/V Skriver ut rader som inte innehåller strängen"
IDS_NO_SUCH_FILE, "FIND: %s: Ingen sorts fil\n"
IDS_CANNOT_OPEN, "FIND: %s: Kan inte öppna filen\n"
END

View file

@ -0,0 +1,25 @@
/*
* PROJECT: Find
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/cmdutils/find/lang/uk-UA.rc
* PURPOSE: Ukraianian Language File for find
* TRANSLATOR: Artem Reznikov
*/
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
IDS_USAGE, "FIND: Âèâåäåííÿ âñ³õ ðÿäê³â ôàéëó, ÿê³ ì³ñòÿòü ðÿäîê.\n\n\
FIND [ /C ] [ /I ] [ /N ] [ /V ] \"ðÿäîê\" [ ôàéë... ]\n\
/C Ïîðàõóâàòè ê³ëüê³ñòü ðÿäê³â, ÿê³ ì³ñòÿòü ðÿäîê\n\
/I Íå âðàõîâóâàòè ðåã³ñòð ñèìâîë³â\n\
/N Íóìåðóâàòè ðÿäêè, ÿê³ â³äîáðàæàþòüñÿ (ïî÷èíàþ÷è ç 1)\n\
/V Âèâåäåííÿ ðÿäê³â, ÿê³ íå ì³ñòÿòü çàäàíèé ðÿäîê"
IDS_NO_SUCH_FILE, "FIND: %s: Ôàéë íå ³ñíóº\n"
IDS_CANNOT_OPEN, "FIND: %s: Íåìîæëèâî â³äêðèòè ôàéë\n"
END

View file

@ -0,0 +1,3 @@
#define IDS_USAGE 1000
#define IDS_NO_SUCH_FILE 1001
#define IDS_CANNOT_OPEN 1002

View file

@ -0,0 +1,20 @@
#include <windows.h>
#include "resource.h"
#include "lang/bg-BG.rc"
#include "lang/ca-ES.rc"
#include "lang/cs-CZ.rc"
#include "lang/de-DE.rc"
#include "lang/el-GR.rc"
#include "lang/en-US.rc"
#include "lang/es-ES.rc"
#include "lang/fr-FR.rc"
#include "lang/it-IT.rc"
#include "lang/lt-LT.rc"
#include "lang/no-NO.rc"
#include "lang/pl-PL.rc"
#include "lang/pt-BR.rc"
#include "lang/ru-RU.rc"
#include "lang/sk-SK.rc"
#include "lang/sv-SE.rc"
#include "lang/uk-UA.rc"

View file

@ -0,0 +1,94 @@
/*
* WineMine
* Bulgarian Language Support
*
* Copyright 2000 Joshua Thielen
* Copyright 2003 Marcelo Duarte
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "resource.h"
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE BEGIN
IDS_APPNAME, "Ìèíè÷êè"
IDS_NOBODY, "Íèêîé"
IDS_ABOUT, "Copyright 2000 Joshua Thielen"
END
MENU_WINEMINE MENU
BEGIN
POPUP "Íà&ñòðîéêè" BEGIN
MENUITEM "&Íîâ\tF2", IDM_NEW
MENUITEM SEPARATOR
MENUITEM "Ñëàãàíå íà &ïèòàíêà", IDM_MARKQ
MENUITEM SEPARATOR
MENUITEM "Íà&÷èíàåù", IDM_BEGINNER
MENUITEM "&Íàïðåäíàë", IDM_ADVANCED
MENUITEM "&Âåù", IDM_EXPERT
MENUITEM "&Íàãàæäàíå...", IDM_CUSTOM
MENUITEM SEPARATOR
MENUITEM "Èç&õîä\tAlt+X", IDM_EXIT
END
POPUP "&Ñâåäåíèÿ" BEGIN
MENUITEM "Íàé-&áúðçè...", IDM_TIMES
MENUITEM "&Çà", IDM_ABOUT
END
END
DLG_TIMES DIALOGEX 0, 0, 160, 80
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
CAPTION "Íàé-áúðçè"
FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "Íàé-áúðçè", -1, 10, 10, 140, 45
LTEXT "Íà÷èíàåù", -1, 20, 20, 40, 8
LTEXT "Ðàçøèðåíè", -1, 20, 30, 40, 8
LTEXT "Ðàçáèðà÷", -1, 20, 40, 40, 8
LTEXT "999", IDC_TIME1, 70, 20, 15, 8
LTEXT "999", IDC_TIME2, 70, 30, 15, 8
LTEXT "999", IDC_TIME3, 70, 40, 15, 8
LTEXT "", IDC_NAME1, 90, 20, 55, 8
LTEXT "", IDC_NAME2, 90, 30, 55, 8
LTEXT "", IDC_NAME3, 90, 40, 55, 8
DEFPUSHBUTTON "Äîáðå", IDOK, 55, 60, 50, 15
END
DLG_CONGRATS DIALOGEX 0, 0, 160, 60
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
CAPTION "Ïîçäðàâëåíèÿ!"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Âúâåäåòå èìåòî ñè", -1, 10, 10, 150, 10
EDITTEXT IDC_EDITNAME, 25, 20, 110, 12
DEFPUSHBUTTON "Äîáðå", IDOK, 60, 40, 40, 15
END
DLG_CUSTOM DIALOGEX 0, 0, 100, 110
STYLE DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_SHELLFONT
CAPTION "Íàãîäåíà èãðà"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Ðåäîâå", -1, 5, 5, 30, 10
LTEXT "Ñòúëáîâå", -1, 5, 35, 30, 10
LTEXT "Ìèíè", -1, 5, 65, 30, 10
EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER
EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER
EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER
DEFPUSHBUTTON "Äîáðå", IDOK, 50, 30, 50, 15
PUSHBUTTON "Îòêàç", IDCANCEL, 50, 50, 50, 15
END

View file

@ -42,6 +42,7 @@ LEDS BITMAP rc/leds.bmp
MINES BITMAP rc/mines.bmp MINES BITMAP rc/mines.bmp
/* include localised resources */ /* include localised resources */
#include "lang/bg-BG.rc"
#include "lang/cs-CZ.rc" #include "lang/cs-CZ.rc"
#include "lang/da-DK.rc" #include "lang/da-DK.rc"
#include "lang/en-US.rc" #include "lang/en-US.rc"

View file

@ -16,13 +16,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
#define WINE_OLESELFREGISTER #define WINE_FILEDESCRIPTION_STR "Wine Internet Explorer"
#define WINE_FILEDESCRIPTION_STR "Wine core exe"
#define WINE_FILENAME_STR "iexplore.exe" #define WINE_FILENAME_STR "iexplore.exe"
#define WINE_FILEVERSION 6,0,2900,2180 #define WINE_FILEVERSION 6,0,2900,2180
#define WINE_FILEVERSION_STR "6.0.2900.2180" #define WINE_FILEVERSION_STR "6.0.2900.2180"
#define WINE_PRODUCTVERSION 6,0,2900,2180 #define WINE_PRODUCTVERSION 6,0,2900,2180
#define WINE_PRODUCTVERSION_STR "6.0.2900.2180" #define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
#define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
#include "wine/wine_common_ver.rc" #include "wine/wine_common_ver.rc"

View file

@ -91,13 +91,13 @@ END
STRINGTABLE STRINGTABLE
BEGIN BEGIN
IDS_COLUMNTYPE "Type" IDS_COLUMNTYPE "Âèä"
IDS_COLUMNDATE "Date" IDS_COLUMNDATE "Äàòà"
IDS_COLUMNTIME "Time" IDS_COLUMNTIME "Âðåìå"
IDS_COLUMNSOURCE "Source" IDS_COLUMNSOURCE "Èçòî÷íèê"
IDS_COLUMNCATEGORY "Category" IDS_COLUMNCATEGORY "Ðàçðÿä"
IDS_COLUMNEVENT "Event" IDS_COLUMNEVENT "Ñúáèòèå"
IDS_COLUMNUSER "User" IDS_COLUMNUSER "Ïîòðåáèòåë"
IDS_COLUMNCOMPUTER "Computer" IDS_COLUMNCOMPUTER "Êîìïþòúð"
IDS_COLUMNEVENTDATA "Event Data" IDS_COLUMNEVENTDATA "Äàííè çà ñúáèòèåòî"
END END

View file

@ -4,7 +4,7 @@ IDR_MAINMENU MENU
BEGIN BEGIN
POPUP "&Ôàéë" POPUP "&Ôàéë"
BEGIN BEGIN
MENUITEM "Èçíîñ...", ID_EXPORT MENUITEM "Èçíàñÿíå...", ID_EXPORT
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Èç&õîä", ID_EXIT MENUITEM "Èç&õîä", ID_EXIT
END END
@ -194,8 +194,8 @@ STRINGTABLE DISCARDABLE
BEGIN BEGIN
/* IDS_NUM_SERVICES "Num Services: %d" */ /* IDS_NUM_SERVICES "Num Services: %d" */
IDS_NUM_SERVICES "Áðîé óñëóãè: %d" IDS_NUM_SERVICES "Áðîé óñëóãè: %d"
IDS_STOP_DEPENDS "When %s stops, these other services will also stop" IDS_STOP_DEPENDS "Ïðè ñïèðàíåòî íà %s, ùå ñïðàò è ñëåäíèòå óñëóãè"
IDS_NO_DEPENDS "<No Dependencies>" IDS_NO_DEPENDS "<Áåç çàâèñèìîñòè>"
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
END END
@ -226,7 +226,8 @@ END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE
BEGIN BEGIN
IDS_HELP_OPTIONS "CREATE OPTIONS:\r\nNOTE: The option name includes the equal sign.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (default = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (default = demand) \r\n error= <normal|severe|critical|ignore>\r\n (default = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (default = LocalSystem)\r\n password= <password>\r\n" /*IDS_HELP_OPTIONS "CREATE OPTIONS:\r\nNOTE: The option name includes the equal sign.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (default = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (default = demand) \r\n error= <normal|severe|critical|ignore>\r\n (default = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (default = LocalSystem)\r\n password= <password>\r\n" */
IDS_HELP_OPTIONS "ÑÚÇÄÀÂÀÍÅ ÍÀ ÂÚÇÌÎÆÍÎÑÒ:\r\nÁÅËÅÆÊÀ: Èìåòî íà âúçìîæíîñòòà âêëþ÷âà çíàêà çà ðàâåíñòâî.\r\n type= <own|share|interact|kernel|filesys|rec>\r\n (ïîäðàçáèðàíî = own)\r\n start= <boot|system|auto|demand|disabled>\r\n (ïîäðàçáèðàíî = demand) \r\n error= <normal|severe|critical|ignore>\r\n (ïîäðàçáèðàíî = normal)\r\n group= <LoadOrderGroup>\r\n tag= <yes|no>\r\n depend= <Dependencies(separated by / (forward slash))>\r\n obj= <AccountName|ObjectName>\r\n (ïîäðàçáèðàíî = LocalSystem)\r\n password= <password>\r\n"
END END
/* Hints */ /* Hints */
@ -239,7 +240,7 @@ BEGIN
IDS_HINT_CONNECT " Óïðàâëåíèå íà ðàçëè÷åí êîìïþòúð." IDS_HINT_CONNECT " Óïðàâëåíèå íà ðàçëè÷åí êîìïþòúð."
IDS_HINT_START " Ïóñêàíå íà èçáðàíàòà óñëóãà." IDS_HINT_START " Ïóñêàíå íà èçáðàíàòà óñëóãà."
IDS_HINT_STOP " Ñïèðàíå íà èçáðàíàòà óñëóãà." IDS_HINT_STOP " Ñïèðàíå íà èçáðàíàòà óñëóãà."
IDS_HINT_PAUSE " Çàäúðæàíå (pause) íà èçáðàíàòà óñëóãà." IDS_HINT_PAUSE " Çàäúðæàíå íà èçáðàíàòà óñëóãà."
IDS_HINT_RESUME " Ïðîäúëæàâàíå íà èíáðàíàòà óñëóãà." IDS_HINT_RESUME " Ïðîäúëæàâàíå íà èíáðàíàòà óñëóãà."
IDS_HINT_RESTART " Ñïèðàíå è ïóñêàíå íà èçáðàíàòà óñëóãà" IDS_HINT_RESTART " Ñïèðàíå è ïóñêàíå íà èçáðàíàòà óñëóãà"
IDS_HINT_REFRESH " Îïðåñíÿâàíå íà ñïèñúêà ñ óñëóãèòå." IDS_HINT_REFRESH " Îïðåñíÿâàíå íà ñïèñúêà ñ óñëóãèòå."
@ -255,7 +256,7 @@ BEGIN
IDS_HINT_CUST " Íàãàæäàíå íà èçãëåäà." IDS_HINT_CUST " Íàãàæäàíå íà èçãëåäà."
IDS_HINT_HELP " Ïîêàçâà ïîìîùåí ïðîçîðåö." IDS_HINT_HELP " Ïîêàçâà ïîìîùåí ïðîçîðåö."
IDS_HINT_ABOUT " Çà óïðàâèòåëÿ íà óñòðéñòâàòà íà ÐåàêòÎÑ." IDS_HINT_ABOUT " Çà óïðàâèòåëÿ íà óñòðîéñòâàòà íà ÐåàêòÎÑ."
IDS_HINT_SYS_RESTORE " Âúçñòàíîâÿâà ïðîçîðåöà äî îáè÷àéíèÿ ìó ðàìåð." IDS_HINT_SYS_RESTORE " Âúçñòàíîâÿâà ïðîçîðåöà äî îáè÷àéíèÿ ìó ðàìåð."
IDS_HINT_SYS_MOVE " Ïðåìåñòâà ïðîçîðåöà." IDS_HINT_SYS_MOVE " Ïðåìåñòâà ïðîçîðåöà."

View file

@ -791,7 +791,7 @@ int main( int argc, char* argv[] )
RtlZeroMemory( State.DefaultServer, 256 ); RtlZeroMemory( State.DefaultServer, 256 );
RtlZeroMemory( State.DefaultServerAddress, 16 ); RtlZeroMemory( State.DefaultServerAddress, 16 );
strncpy( State.root, DEFAULT_ROOT, strlen( DEFAULT_ROOT ) ); memcpy( State.root, DEFAULT_ROOT, sizeof(DEFAULT_ROOT) );
/* We don't know how long of a buffer it will want to return. So we'll /* We don't know how long of a buffer it will want to return. So we'll
pass an empty one now and let it fail only once, instead of guessing. */ pass an empty one now and let it fail only once, instead of guessing. */

View file

@ -0,0 +1,198 @@
/* FILE: applications/rapps/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2010-12-12
*/
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
IDR_MAINMENU MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Nastavení", ID_SETTINGS
MENUITEM SEPARATOR
MENUITEM "&Konec", ID_EXIT
END
POPUP "&Programy"
BEGIN
MENUITEM "&Instalovat", ID_INSTALL
MENUITEM "&Odinstalovat",ID_UNINSTALL
MENUITEM "&Zmìnit", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Odstranit z &registru", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Obnovit", ID_REFRESH
END
POPUP "Nápovìda"
BEGIN
MENUITEM "Nápovìda", ID_HELP, GRAYED
MENUITEM "O programu...", ID_ABOUT
END
END
IDR_LINKMENU MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "&Otevøít odkaz v prohlížeèi", ID_OPEN_LINK
MENUITEM "&Kopírovat odkaz do schránky", ID_COPY_LINK
END
END
IDR_APPLICATIONMENU MENU
BEGIN
POPUP "popup"
BEGIN
MENUITEM "&Instalovat", ID_INSTALL
MENUITEM "&Odinstalovat", ID_UNINSTALL
MENUITEM "&Zmìnit", ID_MODIFY
MENUITEM SEPARATOR
MENUITEM "Odebrat z &registru", ID_REGREMOVE
MENUITEM SEPARATOR
MENUITEM "&Obnovit", ID_REFRESH
END
END
IDD_SETTINGS_DIALOG DIALOGEX DISCARDABLE 0, 0, 250, 144
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Nastavení"
FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "Obecné", -1, 4, 2, 240, 61
AUTOCHECKBOX "&Uložit pozici okna", IDC_SAVE_WINDOW_POS, 15, 12, 219, 12
AUTOCHECKBOX "&Aktualizovat seznam dostupných programù pøi startu programu", IDC_UPDATE_AVLIST, 15, 29, 219, 12
AUTOCHECKBOX "Ukládat &záznam instalací a odstranìní programù", IDC_LOG_ENABLED, 15, 46, 219, 12
GROUPBOX "Stahování", -1, 4, 65, 240, 51
LTEXT "Složka se staženými soubory:", -1, 16, 75, 100, 9
EDITTEXT IDC_DOWNLOAD_DIR_EDIT, 15, 86, 166, 12, WS_CHILD | WS_VISIBLE | WS_GROUP
PUSHBUTTON "&Procházet...", IDC_CHOOSE, 187, 85, 50, 14
AUTOCHECKBOX "&Smazat instalátor programu po dokonèení instalace", IDC_DEL_AFTER_INSTALL, 16, 100, 218, 12
PUSHBUTTON "Výchozí", IDC_DEFAULT_SETTINGS, 8, 124, 60, 14
PUSHBUTTON "OK", IDOK, 116, 124, 60, 14
PUSHBUTTON "Storno", IDCANCEL, 181, 124, 60, 14
END
IDD_INSTALL_DIALOG DIALOGEX DISCARDABLE 0, 0, 216, 97
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Instalace programu"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "...", IDC_INSTALL_TEXT, 4, 5, 209, 35
AUTORADIOBUTTON "&Instalovat z média (CD nebo DVD)", IDC_CD_INSTALL, 10, 46, 197, 11, WS_GROUP
AUTORADIOBUTTON "&Stáhnout a instalovat", IDC_DOWNLOAD_INSTALL, 10, 59, 197, 11, NOT WS_TABSTOP
PUSHBUTTON "OK", IDOK, 86, 78, 60, 14
PUSHBUTTON "Storno", IDCANCEL, 150, 78, 60, 14
END
IDD_DOWNLOAD_DIALOG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_SHELLFONT | DS_CENTER | WS_BORDER | WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_VISIBLE
CAPTION "Stahování..."
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Progress1", IDC_DOWNLOAD_PROGRESS, "msctls_progress32", WS_BORDER | PBS_SMOOTH, 10, 10, 200, 12
LTEXT "", IDC_DOWNLOAD_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Storno", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
END
IDD_ABOUT_DIALOG DIALOGEX 22, 16, 190, 66
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
CAPTION "O programu"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "ReactOS Manažer aplikací\nCopyright (C) 2009\nby Dmitry Chapyshev (dmitry@reactos.org)", IDC_STATIC, 48, 7, 130, 39
PUSHBUTTON "Zavøít", IDOK, 133, 46, 50, 14
ICON IDI_MAIN, IDC_STATIC, 10, 10, 7, 30
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOOLTIP_INSTALL "Instalovat"
IDS_TOOLTIP_UNINSTALL "Odinstalovat"
IDS_TOOLTIP_MODIFY "Zmìnit"
IDS_TOOLTIP_SETTINGS "Nastavení"
IDS_TOOLTIP_REFRESH "Obnovit"
IDS_TOOLTIP_EXIT "Konec"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_NAME "Název"
IDS_APP_INST_VERSION "Verze"
IDS_APP_DESCRIPTION "Popis"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_INFO_VERSION "\nVerze: "
IDS_INFO_DESCRIPTION "\nPopis: "
IDS_INFO_PUBLISHER "\nVydavatel: "
IDS_INFO_HELPLINK "\nInternetová pomoc: "
IDS_INFO_HELPPHONE "\nTelefonní pomoc: "
IDS_INFO_README "\nReadme: "
IDS_INFO_REGOWNER "\nRegistrovaný vlastník: "
IDS_INFO_PRODUCTID "\nID produktu: "
IDS_INFO_CONTACT "\nKontakt: "
IDS_INFO_UPDATEINFO "\nInformace o aktualizacích: "
IDS_INFO_INFOABOUT "\nInformace o: "
IDS_INFO_COMMENTS "\nKomentáøe: "
IDS_INFO_INSTLOCATION "\nUmístìní instalace: "
IDS_INFO_INSTALLSRC "\nZdroj instalace: "
IDS_INFO_UNINSTALLSTR "\nOdinstalaèní øetìzec: "
IDS_INFO_MODIFYPATH "\nCesta úpravy: "
IDS_INFO_INSTALLDATE "\nDatum instalace: "
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_AINFO_VERSION "\nVerze: "
IDS_AINFO_DESCRIPTION "\nPopis: "
IDS_AINFO_SIZE "\nVelikost: "
IDS_AINFO_URLSITE "\nDomovská stránka: "
IDS_AINFO_LICENCE "\nLicence: "
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_CAT_AUDIO "Audio"
IDS_CAT_DEVEL "Vývoj"
IDS_CAT_DRIVERS "Ovladaèe"
IDS_CAT_EDU "Škola hrou"
IDS_CAT_ENGINEER "Strojírenství"
IDS_CAT_FINANCE "Finance"
IDS_CAT_GAMES "Hry a zábava"
IDS_CAT_GRAPHICS "Grafika"
IDS_CAT_INTERNET "Internet a sítì"
IDS_CAT_LIBS "Knihovny"
IDS_CAT_OFFICE "Kanceláø"
IDS_CAT_OTHER "Jiné"
IDS_CAT_SCIENCE "Vìda"
IDS_CAT_TOOLS "Nástroje"
IDS_CAT_VIDEO "Video"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPTITLE "ReactOS Manažer aplikací"
IDS_SEARCH_TEXT "Hledat..."
IDS_INSTALL "Instalovat"
IDS_UNINSTALL "Odinstalovat"
IDS_MODIFY "Zmìnit"
IDS_APPS_COUNT "Poèet aplikací: %d"
IDS_WELCOME_TITLE "Vítejte v ReactOS Manažeru aplikací!\n\n"
IDS_WELCOME_TEXT "Na levé stranì zvolte kategorii, pak vpravo zvolte aplikaci, která bude nainstalována nebo odinstalována.\nWebová stránka ReactOS: "
IDS_WELCOME_URL "http://www.reactos.org"
IDS_INSTALLED "Nainstalováno"
IDS_AVAILABLEFORINST "Dostupné k instalaci"
IDS_UPDATES "Aktualizace"
IDS_APPLICATIONS "Aplikace"
IDS_CHOOSE_FOLDER_TEXT "Zvolte složku, do které se budou ukládat stažené soubory:"
IDS_CHOOSE_FOLDER_ERROR "Zvolená složka neexistuje. Vytvoøit?"
IDS_USER_NOT_ADMIN "Ke spuštìní ""ReactOS Manažera aplikací"" je tøeba být administrátor!"
IDS_APP_REG_REMOVE "Urèitì odstranit data instalovaného programu z registru?"
IDS_INFORMATION "Informace"
IDS_UNABLE_TO_REMOVE "Nepodaøilo se odstranit data programu z registru!"
END

View file

@ -11,6 +11,12 @@ URLSite = Unknown
URLDownload = http://svn.reactos.org/packages/ac97_vbox.exe URLDownload = http://svn.reactos.org/packages/ac97_vbox.exe
CDPath = none CDPath = none
[Section.0405]
Name = Ovladač AC97 pro VirtualBox
Licence = Neznámá
Description = Rozbalte do složky "ReactOS" a pak ReactOS dvakrát restartujte.
URLSite = Neznámá
[Section.0407] [Section.0407]
Name = AC97 Treiber für VirtualBox Name = AC97 Treiber für VirtualBox
Licence = Unbekannt Licence = Unbekannt

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Fox Audio Player Name = Fox Audio Player
Version = 0.7.2 Version = 0.8.3
Licence = GPL Licence = GPL
Description = Simple and lightweight audio player. Description = Simple and lightweight audio player.
Size = 1.84MB Size = 1.85MB
Category = 1 Category = 1
URLSite = http://foxaudioplayer.sourceforge.net/ URLSite = http://foxaudioplayer.sourceforge.net/
URLDownload = http://svn.reactos.org/packages/fap-0.7.2-win32-bin.exe URLDownload = http://svn.reactos.org/packages/fap-0.8.3-win32-bin.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -11,6 +11,12 @@ URLSite = http://www.mozilla.com/en-US/
URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%202.0.0.20.exe URLDownload = http://svn.reactos.org/packages/Firefox%20Setup%202.0.0.20.exe
CDPath = none CDPath = none
[Section.0405]
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
Size = 5.5M
URLSite = http://www.mozilla-europe.org/cs/
URLDownload = http://194.71.11.70/pub/www/clients/mozilla.org/firefox/releases/2.0.0.20/win32/cs/Firefox%20Setup%202.0.0.20.exe
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Webbrowser. Description = Der populärste und einer der besten freien Webbrowser.

View file

@ -11,6 +11,12 @@ URLSite = http://www.mozilla.com/en-US/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/en-US/Firefox%20Setup%203.0.19.exe
CDPath = none CDPath = none
[Section.0405]
Description = Nejpopulárnější a jeden z nejlepších svobodných webových prohlížečů.
Size = 7.0M
URLSite = http://www.mozilla-europe.org/cs/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.0.19-real-real/win32/cs/Firefox%20Setup%203.0.19.exe
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Webbrowser. Description = Der populärste und einer der besten freien Webbrowser.
Size = 7.0M Size = 7.0M

View file

@ -2,47 +2,47 @@
[Section] [Section]
Name = Mozilla Firefox 3.6 Name = Mozilla Firefox 3.6
Version = 3.6.12 Version = 3.6.13
Licence = MPL/GPL/LGPL Licence = MPL/GPL/LGPL
Description = The most popular and one of the best free Web Browsers out there. Description = The most popular and one of the best free Web Browsers out there.
Size = 8.1M Size = 8.1M
Category = 5 Category = 5
URLSite = http://www.mozilla.com/en-US/ URLSite = http://www.mozilla.com/en-US/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/en-US/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/en-US/Firefox%20Setup%203.6.13.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Webbrowser. Description = Der populärste und einer der besten freien Webbrowser.
Size = 8.0M Size = 8.0M
URLSite = http://www.mozilla-europe.org/de/ URLSite = http://www.mozilla-europe.org/de/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/de/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/de/Firefox%20Setup%203.6.13.exe
[Section.040a] [Section.040a]
Description = El más popular y uno de los mejores navegadores web gratuitos que hay. Description = El más popular y uno de los mejores navegadores web gratuitos que hay.
Size = 8.0M Size = 8.0M
URLSite = http://www.mozilla-europe.org/es/ URLSite = http://www.mozilla-europe.org/es/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/es-ES/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/es-ES/Firefox%20Setup%203.6.13.exe
[Section.0414] [Section.0414]
Description = Mest populære og best også gratis nettleserene der ute. Description = Mest populære og best også gratis nettleserene der ute.
Size = 8.0M Size = 8.0M
URLSite = http://www.mozilla-europe.org/no/ URLSite = http://www.mozilla-europe.org/no/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/nb-NO/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/nb-NO/Firefox%20Setup%203.6.13.exe
[Section.0415] [Section.0415]
Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych. Description = Najpopularniejsza i jedna z najlepszych darmowych przeglądarek internetowych.
Size = 8.8M Size = 8.8M
URLSite = http://www.mozilla-europe.org/pl/ URLSite = http://www.mozilla-europe.org/pl/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/pl/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/pl/Firefox%20Setup%203.6.13.exe
[Section.0419] [Section.0419]
Description = Один из самых популярных и лучших бесплатных браузеров. Description = Один из самых популярных и лучших бесплатных браузеров.
Size = 8.4M Size = 8.4M
URLSite = http://www.mozilla-europe.org/ru/ URLSite = http://www.mozilla-europe.org/ru/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/ru/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/ru/Firefox%20Setup%203.6.13.exe
[Section.0422] [Section.0422]
Description = Найпопулярніший та один з кращих безплатних веб-браузерів. Description = Найпопулярніший та один з кращих безплатних веб-браузерів.
Size = 8.4M Size = 8.4M
URLSite = http://www.mozilla-europe.org/uk/ URLSite = http://www.mozilla-europe.org/uk/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.12/win32/uk/Firefox%20Setup%203.6.12.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.6.13/win32/uk/Firefox%20Setup%203.6.13.exe

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = IrfanView Name = IrfanView
Version = 4.27 Version = 4.28
Licence = Freeware (for personal use) Licence = Freeware (for personal use)
Description = Viewer for all kinds of graphics/audio files/video files. Description = Viewer for all kinds of graphics/audio files/video files.
Size = 1.3MB Size = 1.3MB
Category = 3 Category = 3
URLSite = http://www.irfanview.com/ URLSite = http://www.irfanview.com/
URLDownload = http://irfanview.tuwien.ac.at/iview427_setup.exe URLDownload = http://irfanview.tuwien.ac.at/iview428_setup.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = IrfanView Plugins Name = IrfanView Plugins
Version = 4.27 Version = 4.28
Licence = Freeware (for personal use) Licence = Freeware (for personal use)
Description = Additional Plugins for supporting more file types. Description = Additional Plugins for supporting more file types.
Size = 7.8MB Size = 7.8MB
Category = 3 Category = 3
URLSite = http://www.irfanview.com/ URLSite = http://www.irfanview.com/
URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_427_setup.exe URLDownload = http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_428_setup.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = LibreOffice Name = LibreOffice
Version = 3.3.0 Beta 3 Version = 3.3.0 RC2
Licence = LGPL Licence = LGPL
Description = Former called OpenOffice. Open Source Office Suite. Description = Former called OpenOffice. Open Source Office Suite.
Size = 300.0MB Size = 206.0MB
Category = 6 Category = 6
URLSite = http://www.documentfoundation.org/ URLSite = http://www.documentfoundation.org/
URLDownload = http://download.documentfoundation.org/libreoffice/testing/3.3.0-beta3/win/x86/LibO_3.3.0_Win_x86_install_multi.exe URLDownload = http://download.documentfoundation.org/libreoffice/testing/3.3.0-rc2/win/x86/LibO_3.3.0rc2_Win_x86_install_multi.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = Miranda IM Name = Miranda IM
Version = 0.9.11 Version = 0.9.13
Licence = GPL Licence = GPL
Description = Open source multiprotocol instant messaging application - May not work completely. Description = Open source multiprotocol instant messaging application - May not work completely.
Size = 3.0MB Size = 3.0MB
Category = 5 Category = 5
URLSite = http://www.miranda-im.org/ URLSite = http://www.miranda-im.org/
URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.9.11-unicode.exe URLDownload = http://miranda.googlecode.com/files/miranda-im-v0.9.13-unicode.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = mIRC Name = mIRC
Version = 7.15 Version = 7.17
Licence = Shareware Licence = Shareware
Description = The most popular client for the Internet Relay Chat (IRC). Description = The most popular client for the Internet Relay Chat (IRC).
Size = 2.0M Size = 2.0M
Category = 5 Category = 5
URLSite = http://www.mirc.com/ URLSite = http://www.mirc.com/
URLDownload = http://download.mirc.com/mirc715.exe URLDownload = http://download.mirc.com/mirc717.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -11,6 +11,9 @@ URLSite = http://offbyone.com/
URLDownload = http://offbyone.com/offbyone/images/OffByOneSetup.exe URLDownload = http://offbyone.com/offbyone/images/OffByOneSetup.exe
CDPath = none CDPath = none
[Section.0405]
Description = Off-By-One-Browser je velmi malý a rychlý webový prohlížeč s plnou podporou HTML 3.2.
[Section.0407] [Section.0407]
Description = Der Off-By-One-Browser ist ein sehr kleiner und schneller Webbrowser mit voller HTML 3.2 Unterstützung. Description = Der Off-By-One-Browser ist ein sehr kleiner und schneller Webbrowser mit voller HTML 3.2 Unterstützung.

View file

@ -2,15 +2,18 @@
[Section] [Section]
Name = Opera Name = Opera
Version = 10.63 Version = 11.00
Licence = Freeware Licence = Freeware
Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client. Description = The popular Opera Browser with many advanced features and including a Mail and BitTorrent client.
Size = 12.7M Size = 8.9M
Category = 5 Category = 5
URLSite = http://www.opera.com/ URLSite = http://www.opera.com/
URLDownload = http://get4.opera.com/pub/opera/win/1063/int/Opera_1063_int_Setup.exe URLDownload = http://get4.opera.com/pub/opera/win/1100/int/Opera_1100_int_Setup.exe
CDPath = none CDPath = none
[Section.0405]
Description = Populární prohlížeč Opera s mnoha pokročilými vlastnostmi, včetně vestavené podpory pro e-mail a BitTorrent.
[Section.0407] [Section.0407]
Description = Der populäre Opera Browser mit vielen fortschrittlichen Eigenschaften, enthält einen Mail und BitTorrent Client. Description = Der populäre Opera Browser mit vielen fortschrittlichen Eigenschaften, enthält einen Mail und BitTorrent Client.

View file

@ -11,6 +11,9 @@ URLSite = http://reactos.org/wiki/Build_Environment
URLDownload = http://ovh.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/1.5.1/RosBE-1.5.1.1.exe URLDownload = http://ovh.dl.sourceforge.net/project/reactos/RosBE-Windows/i386/1.5.1/RosBE-1.5.1.1.exe
CDPath = none CDPath = none
[Section.0405]
Description = Dovoluje zkompilovat zdrojový kód systému ReactOS. Pro další detaily viz. ReactOS wiki.
[Section.0407] [Section.0407]
Description = Erlaubt es Ihnen den ReactOS Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen. Description = Erlaubt es Ihnen den ReactOS Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.

View file

@ -11,6 +11,9 @@ URLSite = http://reactos.org/wiki/Build_Environment/
URLDownload = http://dreimer.bplaced.net/rosbe/RosBE64-1.4b.exe URLDownload = http://dreimer.bplaced.net/rosbe/RosBE64-1.4b.exe
CDPath = none CDPath = none
[Section.0405]
Description = Dovoluje zkompilovat zdrojový kód systému ReactOS AMD64. Pro další detaily viz. ReactOS wiki.
[Section.0407] [Section.0407]
Description = Erlaubt es Ihnen den ReactOS AMD64 Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen. Description = Erlaubt es Ihnen den ReactOS AMD64 Source Code zu kompilieren. Im ReactOS-Wiki finden Sie dazu nähere Anweisungen.

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = SciTE Name = SciTE
Version = 2.22 Version = 2.23
Licence = Freeware Licence = Freeware
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. 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.
Size = 0.6M Size = 0.6M
Category = 7 Category = 7
URLSite = http://www.scintilla.org/ URLSite = http://www.scintilla.org/
URLDownload = http://kent.dl.sourceforge.net/project/scintilla/SciTE/2.22/Sc222.exe URLDownload = http://kent.dl.sourceforge.net/project/scintilla/SciTE/2.23/Sc223.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = ScummVM Name = ScummVM
Version = 1.2.0 Version = 1.2.1
Licence = GPL Licence = GPL
Description = Sam and Max, Day of the Tentacle, etc on ReactOS. Description = Sam and Max, Day of the Tentacle, etc on ReactOS.
Size = 3.5MB Size = 4.0MB
Category = 4 Category = 4
URLSite = http://scummvm.org/ URLSite = http://scummvm.org/
URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.2.0/scummvm-1.2.0-win32.exe URLDownload = http://dfn.dl.sourceforge.net/project/scummvm/scummvm/1.2.1/scummvm-1.2.1-win32.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]

View file

@ -11,6 +11,9 @@ URLSite = http://www.libsdl.org/projects/SDL_mixer/
URLDownload = http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11-win32.zip URLDownload = http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11-win32.zip
CDPath = none CDPath = none
[Section.0405]
Description = Nutný pro spuštění některých open source her. K rozbalení je nutný 7-zip nebo podobný nástroj.
[Section.0407] [Section.0407]
Description = Erforderlich um einige Open Source Spiele auszuführen. Sie brauchen 7-Zip oder einen ähnlichen Entpacker um es zu entpacken. Description = Erforderlich um einige Open Source Spiele auszuführen. Sie brauchen 7-Zip oder einen ähnlichen Entpacker um es zu entpacken.

View file

@ -2,31 +2,31 @@
[Section] [Section]
Name = Mozilla SeaMonkey Name = Mozilla SeaMonkey
Version = 2.0.10 Version = 2.0.11
Licence = MPL/GPL/LGPL Licence = MPL/GPL/LGPL
Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need. Description = Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, and Composer bundle you will ever need.
Size = 10.1MB Size = 10.1MB
Category = 5 Category = 5
URLSite = http://www.seamonkey-project.org/ URLSite = http://www.seamonkey-project.org/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/en-US/SeaMonkey%20Setup%202.0.10.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/en-US/SeaMonkey%20Setup%202.0.11.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]
Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen. Description = Mozilla Suite lebt. Dies ist das einzige Browser-, Mail-, Chat- and Composerwerkzeug-Bundle welches Sie benötigen.
Size = 10.0MB Size = 10.0MB
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/de/SeaMonkey%20Setup%202.0.10.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/de/SeaMonkey%20Setup%202.0.11.exe
[Section.040a] [Section.040a]
Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás. Description = La suite de Mozilla está viva. Es el primero y único navegador web, gestor de correo, lector de noticias, Chat y editor HTML que necesitarás.
Size = 10.0MB Size = 10.0MB
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/es-ES/SeaMonkey%20Setup%202.0.10.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/es-ES/SeaMonkey%20Setup%202.0.11.exe
[Section.0415] [Section.0415]
Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz. Description = Pakiet Mozilla żyje. W zestawie: przeglądarka, klient poczty, IRC oraz Edytor HTML - wszystko, czego potrzebujesz.
Size = 10.8MB Size = 10.8MB
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/pl/SeaMonkey%20Setup%202.0.10.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/pl/SeaMonkey%20Setup%202.0.11.exe
[Section.0419] [Section.0419]
Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор. Description = Продолжение Mozilla Suite. Включает браузер, почтовый клиент, IRC-клиент и HTML-редактор.
Size = 10.4MB Size = 10.4MB
URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.10/win32/ru/SeaMonkey%20Setup%202.0.10.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.11/win32/ru/SeaMonkey%20Setup%202.0.11.exe

View file

@ -2,41 +2,41 @@
[Section] [Section]
Name = Mozilla Thunderbird Name = Mozilla Thunderbird
Version = 3.1.6 Version = 3.1.7
Licence = MPL/GPL/LGPL Licence = MPL/GPL/LGPL
Description = The most popular and one of the best free Mail Clients out there. Description = The most popular and one of the best free Mail Clients out there.
Size = 9.0M Size = 9.0M
Category = 5 Category = 5
URLSite = http://www.mozilla-europe.org/en/products/thunderbird/ URLSite = http://www.mozilla-europe.org/en/products/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/en-US/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/en-US/Thunderbird%20Setup%203.1.7.exe
CDPath = none CDPath = none
[Section.0407] [Section.0407]
Description = Der populärste und einer der besten freien Mail-Clients. Description = Der populärste und einer der besten freien Mail-Clients.
Size = 8.8M Size = 8.8M
URLSite = http://www.mozilla-europe.org/de/products/thunderbird/ URLSite = http://www.mozilla-europe.org/de/products/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/de/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/de/Thunderbird%20Setup%203.1.7.exe
[Section.040a] [Section.040a]
Description = El más popular y uno de los mejores clientes mail que hay. Description = El más popular y uno de los mejores clientes mail que hay.
Size = 8.8M Size = 8.8M
URLSite = http://www.mozilla-europe.org/es/products/thunderbird/ URLSite = http://www.mozilla-europe.org/es/products/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/es-ES/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/es-ES/Thunderbird%20Setup%203.1.7.exe
[Section.0415] [Section.0415]
Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty. Description = Najpopularniejszy i jeden z najlepszych darmowych klientów poczty.
Size = 9.7M Size = 9.7M
URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/ URLSite = http://www.mozilla-europe.org/pl/products/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/pl/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/pl/Thunderbird%20Setup%203.1.7.exe
[Section.0419] [Section.0419]
Description = Один из самых популярных и лучших бесплатных почтовых клиентов. Description = Один из самых популярных и лучших бесплатных почтовых клиентов.
Size = 9.2M Size = 9.2M
URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/ URLSite = http://www.mozilla-europe.org/ru/products/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/ru/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/ru/Thunderbird%20Setup%203.1.7.exe
[Section.0422] [Section.0422]
Description = Найпопулярніший та один з кращих поштових клієнтів. Description = Найпопулярніший та один з кращих поштових клієнтів.
Size = 9.2M Size = 9.2M
URLSite = http://www.mozillamessaging.com/uk/thunderbird/ URLSite = http://www.mozillamessaging.com/uk/thunderbird/
URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.6/win32/uk/Thunderbird%20Setup%203.1.6.exe URLDownload = http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/3.1.7/win32/uk/Thunderbird%20Setup%203.1.7.exe

View file

@ -2,15 +2,18 @@
[Section] [Section]
Name = TuxPaint Name = TuxPaint
Version = 0.9.21 Version = 0.9.21b
Licence = GPL Licence = GPL
Description = An Open Source bitmap graphics editor geared towards young children. Description = An Open Source bitmap graphics editor geared towards young children.
Size = 10MB Size = 11MB
Category = 3 Category = 3
URLSite = http://tuxpaint.org/ URLSite = http://tuxpaint.org/
URLDownload = http://ovh.dl.sourceforge.net/project/tuxpaint/tuxpaint/0.9.21/tuxpaint-0.9.21-win32-installer.exe URLDownload = http://ovh.dl.sourceforge.net/project/tuxpaint/tuxpaint/0.9.21b/tuxpaint-0.9.21b-win32-installer.exe
CDPath = none CDPath = none
[Section.0405]
Description = Open source bitmapový editor určený dětem.
[Section.0407] [Section.0407]
Description = Ein Open Source Bitmap Zeichenprogramm für kleine Kinder. Description = Ein Open Source Bitmap Zeichenprogramm für kleine Kinder.

View file

@ -2,13 +2,13 @@
[Section] [Section]
Name = UltraVNC Name = UltraVNC
Version = 1.0.9.1 Version = 1.0.9.5
Licence = GPL Licence = GPL
Description = Open-source VNC client/server. Description = Open-source VNC client/server.
Size = 2.0MB Size = 2.1MB
Category = 5 Category = 5
URLSite = http://www.uvnc.com/ URLSite = http://www.uvnc.com/
URLDownload = http://support1.uvnc.com/download/109/UltraVNC_1.0.9.1_Setup.exe URLDownload = http://support1.uvnc.com/download/1095/UltraVNC_1.0.9.5_Setup.exe
CDPath = none CDPath = none
[Section.040a] [Section.040a]

View file

@ -1,4 +1,5 @@
#include "lang/bg-BG.rc" #include "lang/bg-BG.rc"
#include "lang/cs-CZ.rc"
#include "lang/de-DE.rc" #include "lang/de-DE.rc"
#include "lang/en-US.rc" #include "lang/en-US.rc"
#include "lang/es-ES.rc" #include "lang/es-ES.rc"

View file

@ -72,7 +72,8 @@ static void ResizeWnd(ChildWnd* pChildWnd, int cx, int cy)
const int tHeight = 18; const int tHeight = 18;
SetRect(&rt, 0, 0, cx, cy); SetRect(&rt, 0, 0, cx, cy);
cy = 0; cy = 0;
if (hStatusBar != NULL) { if (hStatusBar != NULL)
{
GetWindowRect(hStatusBar, &rs); GetWindowRect(hStatusBar, &rs);
cy = rs.bottom - rs.top; cy = rs.bottom - rs.top;
} }
@ -132,7 +133,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
UNREFERENCED_PARAMETER(message); UNREFERENCED_PARAMETER(message);
switch (wID) { switch (wID)
{
/* Parse the menu selections: */ /* Parse the menu selections: */
case ID_REGISTRY_EXIT: case ID_REGISTRY_EXIT:
DestroyWindow(hWnd); DestroyWindow(hWnd);
@ -157,8 +159,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (keyPath == 0 || *keyPath == 0) if (keyPath == 0 || *keyPath == 0)
{ {
MessageBeep(MB_ICONHAND); MessageBeep(MB_ICONHAND);
} else }
if (DeleteKey(hWnd, hRootKey, keyPath)) else if (DeleteKey(hWnd, hRootKey, keyPath))
DeleteNode(g_pChildWnd->hTreeWnd, 0); DeleteNode(g_pChildWnd->hTreeWnd, 0);
break; break;
case ID_TREE_EXPORT: case ID_TREE_EXPORT:
@ -317,7 +319,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
BOOL Result; BOOL Result;
ChildWnd* pChildWnd = g_pChildWnd; ChildWnd* pChildWnd = g_pChildWnd;
switch (message) { switch (message)
{
case WM_CREATE: case WM_CREATE:
{ {
WNDPROC oldproc; WNDPROC oldproc;
@ -362,10 +365,12 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
break; break;
} }
case WM_COMMAND: case WM_COMMAND:
if(HIWORD(wParam) == BN_CLICKED){ if(HIWORD(wParam) == BN_CLICKED)
{
PostMessage(pChildWnd->hAddressBarWnd, WM_KEYUP, VK_RETURN, 0); PostMessage(pChildWnd->hAddressBarWnd, WM_KEYUP, VK_RETURN, 0);
} }
else if (!_CmdWndProc(hWnd, message, wParam, lParam)) { else if (!_CmdWndProc(hWnd, message, wParam, lParam))
{
goto def; goto def;
} }
break; break;
@ -373,11 +378,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
OnPaint(hWnd); OnPaint(hWnd);
return 0; return 0;
case WM_SETCURSOR: case WM_SETCURSOR:
if (LOWORD(lParam) == HTCLIENT) { if (LOWORD(lParam) == HTCLIENT)
{
POINT pt; POINT pt;
GetCursorPos(&pt); GetCursorPos(&pt);
ScreenToClient(hWnd, &pt); ScreenToClient(hWnd, &pt);
if (pt.x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && pt.x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1) { if (pt.x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && pt.x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1)
{
SetCursor(LoadCursor(0, IDC_SIZEWE)); SetCursor(LoadCursor(0, IDC_SIZEWE));
return TRUE; return TRUE;
} }
@ -391,11 +398,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
pChildWnd = NULL; pChildWnd = NULL;
PostQuitMessage(0); PostQuitMessage(0);
break; break;
case WM_LBUTTONDOWN: { case WM_LBUTTONDOWN:
{
RECT rt; RECT rt;
int x = (short)LOWORD(lParam); int x = (short)LOWORD(lParam);
GetClientRect(hWnd, &rt); GetClientRect(hWnd, &rt);
if (x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1) { if (x>=pChildWnd->nSplitPos-SPLIT_WIDTH/2 && x<pChildWnd->nSplitPos+SPLIT_WIDTH/2+1)
{
last_split = pChildWnd->nSplitPos; last_split = pChildWnd->nSplitPos;
draw_splitbar(hWnd, last_split); draw_splitbar(hWnd, last_split);
SetCapture(hWnd); SetCapture(hWnd);
@ -405,7 +414,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
case WM_LBUTTONUP: case WM_LBUTTONUP:
case WM_RBUTTONDOWN: case WM_RBUTTONDOWN:
if (GetCapture() == hWnd) { if (GetCapture() == hWnd)
{
finish_splitbar(hWnd, LOWORD(lParam)); finish_splitbar(hWnd, LOWORD(lParam));
} }
break; break;
@ -417,7 +427,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
case WM_KEYDOWN: case WM_KEYDOWN:
if (wParam == VK_ESCAPE) if (wParam == VK_ESCAPE)
if (GetCapture() == hWnd) { if (GetCapture() == hWnd)
{
RECT rt; RECT rt;
draw_splitbar(hWnd, last_split); draw_splitbar(hWnd, last_split);
GetClientRect(hWnd, &rt); GetClientRect(hWnd, &rt);
@ -429,7 +440,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
break; break;
case WM_MOUSEMOVE: case WM_MOUSEMOVE:
if (GetCapture() == hWnd) { if (GetCapture() == hWnd)
{
HDC hdc; HDC hdc;
RECT rt; RECT rt;
HGDIOBJ OldObj; HGDIOBJ OldObj;
@ -464,7 +476,8 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
break; break;
case WM_SETFOCUS: case WM_SETFOCUS:
if (pChildWnd != NULL) { if (pChildWnd != NULL)
{
SetFocus(pChildWnd->nFocusPanel? pChildWnd->hListWnd: pChildWnd->hTreeWnd); SetFocus(pChildWnd->nFocusPanel? pChildWnd->hListWnd: pChildWnd->hTreeWnd);
} }
break; break;
@ -473,21 +486,26 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
break; break;
case WM_NOTIFY: case WM_NOTIFY:
if ((int)wParam == TREE_WINDOW) { if ((int)wParam == TREE_WINDOW)
switch (((LPNMHDR)lParam)->code) { {
switch (((LPNMHDR)lParam)->code)
{
case TVN_ITEMEXPANDING: case TVN_ITEMEXPANDING:
return !OnTreeExpanding(pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam); return !OnTreeExpanding(pChildWnd->hTreeWnd, (NMTREEVIEW*)lParam);
case TVN_SELCHANGED: { case TVN_SELCHANGED:
{
LPCTSTR keyPath, rootName; LPCTSTR keyPath, rootName;
LPTSTR fullPath; LPTSTR fullPath;
HKEY hRootKey; HKEY hRootKey;
keyPath = GetItemPath(pChildWnd->hTreeWnd, ((NMTREEVIEW*)lParam)->itemNew.hItem, &hRootKey); keyPath = GetItemPath(pChildWnd->hTreeWnd, ((NMTREEVIEW*)lParam)->itemNew.hItem, &hRootKey);
if (keyPath) { if (keyPath)
{
RefreshListView(pChildWnd->hListWnd, hRootKey, keyPath); RefreshListView(pChildWnd->hListWnd, hRootKey, keyPath);
rootName = get_root_key_name(hRootKey); rootName = get_root_key_name(hRootKey);
fullPath = HeapAlloc(GetProcessHeap(), 0, (_tcslen(rootName) + 1 + _tcslen(keyPath) + 1) * sizeof(TCHAR)); fullPath = HeapAlloc(GetProcessHeap(), 0, (_tcslen(rootName) + 1 + _tcslen(keyPath) + 1) * sizeof(TCHAR));
if (fullPath) { if (fullPath)
{
/* set (correct) the address bar text */ /* set (correct) the address bar text */
if(keyPath[0] != '\0') if(keyPath[0] != '\0')
_stprintf(fullPath, _T("%s\\%s"), rootName, keyPath); _stprintf(fullPath, _T("%s\\%s"), rootName, keyPath);
@ -573,11 +591,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
default: default:
return 0; return 0;
} }
} else }
else
{ {
if ((int)wParam == LIST_WINDOW) if ((int)wParam == LIST_WINDOW)
{ {
switch (((LPNMHDR)lParam)->code) { switch (((LPNMHDR)lParam)->code)
{
case NM_SETFOCUS: case NM_SETFOCUS:
pChildWnd->nFocusPanel = 1; pChildWnd->nFocusPanel = 1;
break; break;
@ -745,11 +765,13 @@ LRESULT CALLBACK ChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPa
} }
case WM_SIZE: case WM_SIZE:
if (wParam != SIZE_MINIMIZED && pChildWnd != NULL) { if (wParam != SIZE_MINIMIZED && pChildWnd != NULL)
{
ResizeWnd(pChildWnd, LOWORD(lParam), HIWORD(lParam)); ResizeWnd(pChildWnd, LOWORD(lParam), HIWORD(lParam));
} }
/* fall through */ /* fall through */
default: def: default:
def:
return DefWindowProc(hWnd, message, wParam, lParam); return DefWindowProc(hWnd, message, wParam, lParam);
} }
return 0; return 0;

View file

@ -96,7 +96,8 @@ INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch(uMsg) { switch(uMsg)
{
case WM_INITDIALOG: case WM_INITDIALOG:
if(editValueName && _tcscmp(editValueName, _T(""))) if(editValueName && _tcscmp(editValueName, _T("")))
{ {
@ -163,7 +164,8 @@ INT_PTR CALLBACK modify_multi_string_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wPa
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch(uMsg) { switch(uMsg)
{
case WM_INITDIALOG: case WM_INITDIALOG:
if(editValueName && _tcscmp(editValueName, _T(""))) if(editValueName && _tcscmp(editValueName, _T("")))
{ {
@ -274,7 +276,8 @@ INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch(uMsg) { switch(uMsg)
{
case WM_INITDIALOG: case WM_INITDIALOG:
dwordEditMode = EDIT_MODE_HEX; dwordEditMode = EDIT_MODE_HEX;
@ -382,7 +385,8 @@ INT_PTR CALLBACK modify_binary_dlgproc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
switch(uMsg) { switch(uMsg)
{
case WM_INITDIALOG: case WM_INITDIALOG:
if(editValueName && _tcscmp(editValueName, _T(""))) if(editValueName && _tcscmp(editValueName, _T("")))
{ {
@ -786,7 +790,8 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath)
HKEY hKey; HKEY hKey;
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey); lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, KEY_READ|KEY_SET_VALUE, &hKey);
if (lRet != ERROR_SUCCESS) { if (lRet != ERROR_SUCCESS)
{
error_code_messagebox(hwnd, lRet); error_code_messagebox(hwnd, lRet);
return FALSE; return FALSE;
} }
@ -798,7 +803,8 @@ BOOL DeleteKey(HWND hwnd, HKEY hKeyRoot, LPCTSTR keyPath)
goto done; goto done;
lRet = SHDeleteKey(hKeyRoot, keyPath); lRet = SHDeleteKey(hKeyRoot, keyPath);
if (lRet != ERROR_SUCCESS) { if (lRet != ERROR_SUCCESS)
{
error(hwnd, IDS_BAD_KEY, keyPath); error(hwnd, IDS_BAD_KEY, keyPath);
goto done; goto done;
} }

View file

@ -45,7 +45,8 @@ static void resize_frame_rect(HWND hWnd, PRECT prect)
prect->bottom -= rt.bottom+3; prect->bottom -= rt.bottom+3;
} }
*/ */
if (IsWindowVisible(hStatusBar)) { if (IsWindowVisible(hStatusBar))
{
SetupStatusBar(hWnd, TRUE); SetupStatusBar(hWnd, TRUE);
GetClientRect(hStatusBar, &rt); GetClientRect(hStatusBar, &rt);
prect->bottom -= rt.bottom; prect->bottom -= rt.bottom;
@ -141,12 +142,15 @@ static void OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu)
TCHAR str[100]; TCHAR str[100];
_tcscpy(str, _T("")); _tcscpy(str, _T(""));
if (nFlags & MF_POPUP) { if (nFlags & MF_POPUP)
if (hSysMenu != GetMenu(hWnd)) { {
if (hSysMenu != GetMenu(hWnd))
{
if (nItemID == 2) nItemID = 5; if (nItemID == 2) nItemID = 5;
} }
} }
if (LoadString(hInst, nItemID, str, 100)) { if (LoadString(hInst, nItemID, str, 100))
{
/* load appropriate string*/ /* load appropriate string*/
LPTSTR lpsz = str; LPTSTR lpsz = str;
/* first newline terminates actual string*/ /* first newline terminates actual string*/
@ -191,7 +195,8 @@ static BOOL CheckCommDlgError(HWND hWnd)
{ {
DWORD dwErrorCode = CommDlgExtendedError(); DWORD dwErrorCode = CommDlgExtendedError();
UNREFERENCED_PARAMETER(hWnd); UNREFERENCED_PARAMETER(hWnd);
switch (dwErrorCode) { switch (dwErrorCode)
{
case CDERR_DIALOGFAILURE: case CDERR_DIALOGFAILURE:
break; break;
case CDERR_FINDRESFAILURE: case CDERR_FINDRESFAILURE:
@ -349,7 +354,9 @@ static BOOL LoadHive(HWND hWnd)
return FALSE; return FALSE;
} }
} }
} else { }
else
{
CheckCommDlgError(hWnd); CheckCommDlgError(hWnd);
} }
return TRUE; return TRUE;
@ -395,9 +402,11 @@ static BOOL ImportRegistryFile(HWND hWnd)
ofn.lpstrTitle = Caption; ofn.lpstrTitle = Caption;
ofn.Flags |= OFN_ENABLESIZING; ofn.Flags |= OFN_ENABLESIZING;
/* ofn.lCustData = ;*/ /* ofn.lCustData = ;*/
if (GetOpenFileName(&ofn)) { if (GetOpenFileName(&ofn))
{
FILE *fp = _wfopen(ofn.lpstrFile, L"r"); FILE *fp = _wfopen(ofn.lpstrFile, L"r");
if (fp == NULL || !import_registry_file(fp)) { if (fp == NULL || !import_registry_file(fp))
{
LPSTR p = GetMultiByteString(ofn.lpstrFile); LPSTR p = GetMultiByteString(ofn.lpstrFile);
fprintf(stderr, "Can't open file \"%s\"\n", p); fprintf(stderr, "Can't open file \"%s\"\n", p);
HeapFree(GetProcessHeap(), 0, p); HeapFree(GetProcessHeap(), 0, p);
@ -406,7 +415,9 @@ static BOOL ImportRegistryFile(HWND hWnd)
return FALSE; return FALSE;
} }
fclose(fp); fclose(fp);
} else { }
else
{
CheckCommDlgError(hWnd); CheckCommDlgError(hWnd);
} }
@ -429,7 +440,8 @@ static UINT_PTR CALLBACK ExportRegistryFile_OFNHookProc(HWND hdlg, UINT uiMsg, W
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(wParam);
switch(uiMsg) { switch(uiMsg)
{
case WM_INITDIALOG: case WM_INITDIALOG:
pOfn = (OPENFILENAME *) lParam; pOfn = (OPENFILENAME *) lParam;
pszSelectedKey = (LPTSTR) pOfn->lCustData; pszSelectedKey = (LPTSTR) pOfn->lCustData;
@ -494,7 +506,8 @@ BOOL ExportRegistryFile(HWND hWnd)
ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT; ofn.Flags = OFN_ENABLETEMPLATE | OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT;
ofn.lpfnHook = ExportRegistryFile_OFNHookProc; ofn.lpfnHook = ExportRegistryFile_OFNHookProc;
ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EXPORTRANGE); ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EXPORTRANGE);
if (GetSaveFileName(&ofn)) { if (GetSaveFileName(&ofn))
{
BOOL result; BOOL result;
DWORD format; DWORD format;
@ -503,13 +516,16 @@ BOOL ExportRegistryFile(HWND hWnd)
else else
format = REG_FORMAT_4; format = REG_FORMAT_4;
result = export_registry_key(ofn.lpstrFile, ExportKeyPath, format); result = export_registry_key(ofn.lpstrFile, ExportKeyPath, format);
if (!result) { if (!result)
{
LPSTR p = GetMultiByteString(ofn.lpstrFile); LPSTR p = GetMultiByteString(ofn.lpstrFile);
fprintf(stderr, "Can't open file \"%s\"\n", p); fprintf(stderr, "Can't open file \"%s\"\n", p);
HeapFree(GetProcessHeap(), 0, p); HeapFree(GetProcessHeap(), 0, p);
return FALSE; return FALSE;
} }
} else { }
else
{
CheckCommDlgError(hWnd); CheckCommDlgError(hWnd);
} }
return TRUE; return TRUE;
@ -532,7 +548,8 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
pd.nToPage = 0xFFFF; pd.nToPage = 0xFFFF;
pd.nMinPage = 1; pd.nMinPage = 1;
pd.nMaxPage = 0xFFFF; pd.nMaxPage = 0xFFFF;
if (PrintDlg(&pd)) { if (PrintDlg(&pd))
{
/* GDI calls to render output. */ /* GDI calls to render output. */
DeleteDC(pd.hDC); /* Delete DC when done.*/ DeleteDC(pd.hDC); /* Delete DC when done.*/
} }
@ -541,8 +558,10 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
PRINTDLGEX pd; PRINTDLGEX pd;
hResult = PrintDlgEx(&pd); hResult = PrintDlgEx(&pd);
if (hResult == S_OK) { if (hResult == S_OK)
switch (pd.dwResultAction) { {
switch (pd.dwResultAction)
{
case PD_RESULT_APPLY: case PD_RESULT_APPLY:
/*The user clicked the Apply button and later clicked the Cancel button. This indicates that the user wants to apply the changes made in the property sheet, but does not yet want to print. The PRINTDLGEX structure contains the information specified by the user at the time the Apply button was clicked. */ /*The user clicked the Apply button and later clicked the Cancel button. This indicates that the user wants to apply the changes made in the property sheet, but does not yet want to print. The PRINTDLGEX structure contains the information specified by the user at the time the Apply button was clicked. */
break; break;
@ -555,8 +574,11 @@ BOOL PrintRegistryHive(HWND hWnd, LPTSTR path)
default: default:
break; break;
} }
} else { }
switch (hResult) { else
{
switch (hResult)
{
case E_OUTOFMEMORY: case E_OUTOFMEMORY:
/*Insufficient memory. */ /*Insufficient memory. */
break; break;
@ -664,9 +686,11 @@ static BOOL CreateNewValue(HKEY hRootKey, LPCTSTR pszKeyPath, DWORD dwType)
wsprintf(szNewValue, szNewValueFormat, iIndex++); wsprintf(szNewValue, szNewValueFormat, iIndex++);
cbData = sizeof(data); cbData = sizeof(data);
lResult = RegQueryValueEx(hKey, szNewValue, NULL, &dwExistingType, data, &cbData); lResult = RegQueryValueEx(hKey, szNewValue, NULL, &dwExistingType, data, &cbData);
} while(lResult == ERROR_SUCCESS); }
while(lResult == ERROR_SUCCESS);
switch(dwType) { switch(dwType)
{
case REG_DWORD: case REG_DWORD:
cbData = sizeof(DWORD); cbData = sizeof(DWORD);
break; break;
@ -857,7 +881,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
UNREFERENCED_PARAMETER(message); UNREFERENCED_PARAMETER(message);
switch (LOWORD(wParam)) { switch (LOWORD(wParam))
{
case ID_REGISTRY_LOADHIVE: case ID_REGISTRY_LOADHIVE:
LoadHive(hWnd); LoadHive(hWnd);
return TRUE; return TRUE;
@ -942,12 +967,14 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot); keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
valueName = GetValueName(g_pChildWnd->hListWnd, -1); valueName = GetValueName(g_pChildWnd->hListWnd, -1);
if (keyPath) { if (keyPath)
{
lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, regsam, &hKey); lRet = RegOpenKeyEx(hKeyRoot, keyPath, 0, regsam, &hKey);
if (lRet != ERROR_SUCCESS) hKey = 0; if (lRet != ERROR_SUCCESS) hKey = 0;
} }
switch (LOWORD(wParam)) { switch (LOWORD(wParam))
{
case ID_EDIT_MODIFY: case ID_EDIT_MODIFY:
if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE)) if (valueName && ModifyValue(hWnd, hKey, valueName, FALSE))
RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath); RefreshListView(g_pChildWnd->hListWnd, hKeyRoot, keyPath);
@ -1017,8 +1044,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
if (keyPath == 0 || *keyPath == 0) if (keyPath == 0 || *keyPath == 0)
{ {
MessageBeep(MB_ICONHAND); MessageBeep(MB_ICONHAND);
} else }
if (DeleteKey(hWnd, hKeyRoot, keyPath)) else if (DeleteKey(hWnd, hKeyRoot, keyPath))
{ {
DeleteNode(g_pChildWnd->hTreeWnd, 0); DeleteNode(g_pChildWnd->hTreeWnd, 0);
RefreshTreeView(g_pChildWnd->hTreeWnd); RefreshTreeView(g_pChildWnd->hTreeWnd);
@ -1118,7 +1145,8 @@ static BOOL _CmdWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK FrameWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{ {
switch (message) { switch (message)
{
case WM_CREATE: case WM_CREATE:
CreateWindowEx(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE, CreateWindowEx(0, szChildClass, NULL, WS_CHILD | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

View file

@ -1,3 +1,4 @@
//Íåäîâúðøåí
/* /*
* Regedit resources * Regedit resources
* *
@ -135,8 +136,8 @@ BEGIN
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
MENUITEM "&Multi-String Value", ID_EDIT_NEW_MULTISTRINGVALUE MENUITEM "&Ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_MULTISTRINGVALUE
MENUITEM "&Expandable String Value", ID_EDIT_NEW_EXPANDABLESTRINGVALUE MENUITEM "&Ðàçøèðèìà ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
END END
END END
POPUP "" POPUP ""
@ -149,8 +150,8 @@ BEGIN
MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE MENUITEM "&Íèçîâà ñòîéíîñò", ID_EDIT_NEW_STRINGVALUE
MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE MENUITEM "&Äâîè÷íà ñòîéíîñò", ID_EDIT_NEW_BINARYVALUE
MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE MENUITEM "&Ñòîéíîñò íà äâîéíà äóìà", ID_EDIT_NEW_DWORDVALUE
MENUITEM "&Multi-String Value", ID_EDIT_NEW_MULTISTRINGVALUE MENUITEM "&Ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_MULTISTRINGVALUE
MENUITEM "&Expandable String Value", ID_EDIT_NEW_EXPANDABLESTRINGVALUE MENUITEM "&Ðàçøèðèìà ìíîãîíèçîâà ñòîéíîñò", ID_EDIT_NEW_EXPANDABLESTRINGVALUE
END END
MENUITEM "&Òúðñåíå", ID_EDIT_FIND MENUITEM "&Òúðñåíå", ID_EDIT_FIND
MENUITEM SEPARATOR MENUITEM SEPARATOR
@ -165,11 +166,11 @@ BEGIN
POPUP "" POPUP ""
BEGIN BEGIN
MENUITEM "C&ut", ID_HEXEDIT_CUT MENUITEM "C&ut", ID_HEXEDIT_CUT
MENUITEM "&Copy", ID_HEXEDIT_COPY MENUITEM "Çà&ïîìíÿíå", ID_HEXEDIT_COPY
MENUITEM "&Paste", ID_HEXEDIT_PASTE MENUITEM "&Ïîñòàâÿíå", ID_HEXEDIT_PASTE
MENUITEM "&Delete", ID_HEXEDIT_DELETE MENUITEM "Èç&òðèâàíå", ID_HEXEDIT_DELETE
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Select &All", ID_HEXEDIT_SELECT_ALL MENUITEM "Èçáîð íà âñè&÷êè", ID_HEXEDIT_SELECT_ALL
END END
END END
@ -182,10 +183,10 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Load Hive" CAPTION "Load Hive"
FONT 8, "Ms Shell Dlg" FONT 8, "Ms Shell Dlg"
{ {
LTEXT "&Key:", IDC_STATIC, 4, 4, 15, 8, SS_LEFT LTEXT "&Êëàâèø:", IDC_STATIC, 4, 4, 15, 8, SS_LEFT
EDITTEXT IDC_EDIT_KEY, 23, 2, 167, 13 EDITTEXT IDC_EDIT_KEY, 23, 2, 167, 13
DEFPUSHBUTTON "OK", IDOK, 140, 17, 50, 14 DEFPUSHBUTTON "Äîáðå", IDOK, 140, 17, 50, 14
PUSHBUTTON "Cancel", IDCANCEL, 89, 17, 50, 14 PUSHBUTTON "Îòêàç", IDCANCEL, 89, 17, 50, 14
} }
IDD_EDIT_STRING DIALOGEX 32, 24, 252, 84 IDD_EDIT_STRING DIALOGEX 32, 24, 252, 84

View file

@ -162,8 +162,10 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
#endif #endif
index = ListView_InsertItem(hwndLV, &item); index = ListView_InsertItem(hwndLV, &item);
if (index != -1) { if (index != -1)
switch (dwValType) { {
switch (dwValType)
{
case REG_SZ: case REG_SZ:
case REG_EXPAND_SZ: case REG_EXPAND_SZ:
if(dwCount > 0) if(dwCount > 0)
@ -205,7 +207,8 @@ static void AddEntryToList(HWND hwndLV, LPTSTR Name, DWORD dwValType, void* ValB
ListView_SetItemText(hwndLV, index, 2, _T("")); ListView_SetItemText(hwndLV, index, 2, _T(""));
} }
break; break;
case REG_DWORD: { case REG_DWORD:
{
TCHAR buf[200]; TCHAR buf[200];
if(dwCount == sizeof(DWORD)) if(dwCount == sizeof(DWORD))
{ {
@ -258,7 +261,8 @@ static BOOL CreateListColumns(HWND hWndListView)
lvC.pszText = szText; lvC.pszText = szText;
/* Load the column labels from the resource file. */ /* Load the column labels from the resource file. */
for (index = 0; index < MAX_LIST_COLUMNS; index++) { for (index = 0; index < MAX_LIST_COLUMNS; index++)
{
lvC.iSubItem = index; lvC.iSubItem = index;
lvC.cx = default_column_widths[index]; lvC.cx = default_column_widths[index];
lvC.fmt = column_alignment[index]; lvC.fmt = column_alignment[index];
@ -306,13 +310,15 @@ static void OnGetDispInfo(NMLVDISPINFO* plvdi)
plvdi->item.pszText = NULL; plvdi->item.pszText = NULL;
plvdi->item.cchTextMax = 0; plvdi->item.cchTextMax = 0;
switch (plvdi->item.iSubItem) { switch (plvdi->item.iSubItem)
{
case 0: case 0:
LoadString(hInst, IDS_DEFAULT_VALUE_NAME, buffer, sizeof(buffer)/sizeof(TCHAR)); LoadString(hInst, IDS_DEFAULT_VALUE_NAME, buffer, sizeof(buffer)/sizeof(TCHAR));
plvdi->item.pszText = buffer; plvdi->item.pszText = buffer;
break; break;
case 1: case 1:
switch (((LINE_INFO*)plvdi->item.lParam)->dwValType) { switch (((LINE_INFO*)plvdi->item.lParam)->dwValType)
{
case REG_NONE: case REG_NONE:
plvdi->item.pszText = _T("REG_NONE"); plvdi->item.pszText = _T("REG_NONE");
break; break;
@ -349,7 +355,8 @@ static void OnGetDispInfo(NMLVDISPINFO* plvdi)
case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */ case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
plvdi->item.pszText = _T("REG_QWORD"); plvdi->item.pszText = _T("REG_QWORD");
break; break;
default: { default:
{
TCHAR buf2[200]; TCHAR buf2[200];
LoadString(hInst, IDS_UNKNOWN_TYPE, buf2, sizeof(buf2)/sizeof(TCHAR)); LoadString(hInst, IDS_UNKNOWN_TYPE, buf2, sizeof(buf2)/sizeof(TCHAR));
wsprintf(buffer, buf2, ((LINE_INFO*)plvdi->item.lParam)->dwValType); wsprintf(buffer, buf2, ((LINE_INFO*)plvdi->item.lParam)->dwValType);
@ -377,7 +384,8 @@ static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSor
if (g_columnToSort == 1 && l->dwValType != r->dwValType) if (g_columnToSort == 1 && l->dwValType != r->dwValType)
return g_invertSort ? (int)r->dwValType - (int)l->dwValType : (int)l->dwValType - (int)r->dwValType; return g_invertSort ? (int)r->dwValType - (int)l->dwValType : (int)l->dwValType - (int)r->dwValType;
if (g_columnToSort == 2) { if (g_columnToSort == 2)
{
/* FIXME: Sort on value */ /* FIXME: Sort on value */
} }
return g_invertSort ? _tcsicmp(r->name, l->name) : _tcsicmp(l->name, r->name); return g_invertSort ? _tcsicmp(r->name, l->name) : _tcsicmp(l->name, r->name);
@ -388,14 +396,16 @@ BOOL ListWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL *Result)
NMLVDISPINFO* Info; NMLVDISPINFO* Info;
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(wParam);
*Result = TRUE; *Result = TRUE;
switch (((LPNMHDR)lParam)->code) { switch (((LPNMHDR)lParam)->code)
{
case LVN_GETDISPINFO: case LVN_GETDISPINFO:
OnGetDispInfo((NMLVDISPINFO*)lParam); OnGetDispInfo((NMLVDISPINFO*)lParam);
return TRUE; return TRUE;
case LVN_COLUMNCLICK: case LVN_COLUMNCLICK:
if (g_columnToSort == (DWORD)((LPNMLISTVIEW)lParam)->iSubItem) if (g_columnToSort == (DWORD)((LPNMLISTVIEW)lParam)->iSubItem)
g_invertSort = !g_invertSort; g_invertSort = !g_invertSort;
else { else
{
g_columnToSort = ((LPNMLISTVIEW)lParam)->iSubItem; g_columnToSort = ((LPNMLISTVIEW)lParam)->iSubItem;
g_invertSort = FALSE; g_invertSort = FALSE;
} }
@ -503,7 +513,8 @@ void DestroyListView(HWND hwndLV)
LVITEM item; LVITEM item;
count = ListView_GetItemCount(hwndLV); count = ListView_GetItemCount(hwndLV);
for (i = 0; i < count; i++) { for (i = 0; i < count; i++)
{
item.mask = LVIF_PARAM; item.mask = LVIF_PARAM;
item.iItem = i; item.iItem = i;
(void)ListView_GetItem(hwndLV, &item); (void)ListView_GetItem(hwndLV, &item);
@ -555,7 +566,8 @@ BOOL RefreshListView(HWND hwndLV, HKEY hKey, LPCTSTR keyPath)
/* AddEntryToList(hwndLV, _T("(Default)"), dwValType, ValBuf, dwValSize); */ /* AddEntryToList(hwndLV, _T("(Default)"), dwValType, ValBuf, dwValSize); */
/* } */ /* } */
/* dwValSize = max_val_size; */ /* dwValSize = max_val_size; */
while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS) { while (RegEnumValue(hNewKey, dwIndex, ValName, &dwValNameLen, NULL, &dwValType, ValBuf, &dwValSize) == ERROR_SUCCESS)
{
/* Add a terminating 0 character. Usually this is only necessary for strings. */ /* Add a terminating 0 character. Usually this is only necessary for strings. */
ValBuf[dwValSize] = 0; ValBuf[dwValSize] = 0;
#ifdef UNICODE #ifdef UNICODE

View file

@ -129,14 +129,16 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, hMenuFrame, hInstance, NULL/*lpParam*/); NULL, hMenuFrame, hInstance, NULL/*lpParam*/);
if (!hFrameWnd) { if (!hFrameWnd)
{
return FALSE; return FALSE;
} }
/* Create the status bar */ /* Create the status bar */
hStatusBar = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS, hStatusBar = CreateStatusWindow(WS_VISIBLE|WS_CHILD|WS_CLIPSIBLINGS|SBT_NOBORDERS,
_T(""), hFrameWnd, STATUS_WINDOW); _T(""), hFrameWnd, STATUS_WINDOW);
if (hStatusBar) { if (hStatusBar)
{
/* Create the status bar panes */ /* Create the status bar panes */
SetupStatusBar(hFrameWnd, FALSE); SetupStatusBar(hFrameWnd, FALSE);
CheckMenuItem(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED); CheckMenuItem(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED);
@ -159,7 +161,8 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
/* we need to destroy the main menu before destroying the main window /* we need to destroy the main menu before destroying the main window
to avoid a memory leak */ to avoid a memory leak */
void DestroyMainMenu() { void DestroyMainMenu()
{
DestroyMenu(hMenuFrame); DestroyMenu(hMenuFrame);
} }
@ -192,7 +195,8 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
if (ProcessCmdLine(lpCmdLine)) { if (ProcessCmdLine(lpCmdLine))
{
return 0; return 0;
} }
@ -205,15 +209,18 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
hInst = hInstance; hInst = hInstance;
/* Perform application initialization */ /* Perform application initialization */
if (!InitInstance(hInstance, nCmdShow)) { if (!InitInstance(hInstance, nCmdShow))
{
return FALSE; return FALSE;
} }
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL)); hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(ID_ACCEL));
/* Main message loop */ /* Main message loop */
while (GetMessage(&msg, (HWND)NULL, 0, 0)) { while (GetMessage(&msg, (HWND)NULL, 0, 0))
{
if (!TranslateAccelerator(hFrameWnd, hAccel, &msg) if (!TranslateAccelerator(hFrameWnd, hAccel, &msg)
&& !TranslateChildTabMessage(&msg)) { && !TranslateChildTabMessage(&msg))
{
TranslateMessage(&msg); TranslateMessage(&msg);
DispatchMessage(&msg); DispatchMessage(&msg);
} }

View file

@ -43,7 +43,8 @@ extern HINSTANCE hInst;
/******************************************************************************/ /******************************************************************************/
enum OPTION_FLAGS { enum OPTION_FLAGS
{
OPTIONS_AUTO_REFRESH = 0x01, OPTIONS_AUTO_REFRESH = 0x01,
OPTIONS_READ_ONLY_MODE = 0x02, OPTIONS_READ_ONLY_MODE = 0x02,
OPTIONS_CONFIRM_ON_DELETE = 0x04, OPTIONS_CONFIRM_ON_DELETE = 0x04,
@ -53,7 +54,8 @@ enum OPTION_FLAGS {
OPTIONS_VIEW_DATA_ONLY = 0x40, OPTIONS_VIEW_DATA_ONLY = 0x40,
}; };
typedef struct { typedef struct
{
HWND hWnd; HWND hWnd;
HWND hTreeWnd; HWND hTreeWnd;
HWND hListWnd; HWND hListWnd;

View file

@ -52,7 +52,8 @@ static const char *usage =
"This program is command-line compatible with Microsoft Windows\n" "This program is command-line compatible with Microsoft Windows\n"
"regedit.\n"; "regedit.\n";
typedef enum { typedef enum
{
ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE ACTION_UNDEF, ACTION_ADD, ACTION_EXPORT, ACTION_DELETE
} REGEDIT_ACTION; } REGEDIT_ACTION;
@ -79,40 +80,52 @@ void get_file_name(LPWSTR *command_line, LPWSTR file_name)
int pos = 0; /* position of pointer "s" in *command_line */ int pos = 0; /* position of pointer "s" in *command_line */
file_name[0] = 0; file_name[0] = 0;
if (!s[0]) { if (!s[0])
{
return; return;
} }
if (s[0] == L'"') { if (s[0] == L'"')
{
s++; s++;
(*command_line)++; (*command_line)++;
while(s[0] != L'"') { while(s[0] != L'"')
if (!s[0]) { {
if (!s[0])
{
fprintf(stderr, "%s: Unexpected end of file name!\n", getAppName()); fprintf(stderr, "%s: Unexpected end of file name!\n", getAppName());
exit(1); exit(1);
} }
s++; s++;
pos++; pos++;
} }
} else { }
while(s[0] && !iswspace(s[0])) { else
{
while(s[0] && !iswspace(s[0]))
{
s++; s++;
pos++; pos++;
} }
} }
memcpy(file_name, *command_line, pos * sizeof((*command_line)[0])); memcpy(file_name, *command_line, pos * sizeof((*command_line)[0]));
/* remove the last backslash */ /* remove the last backslash */
if (file_name[pos - 1] == L'\\') { if (file_name[pos - 1] == L'\\')
{
file_name[pos - 1] = L'\0'; file_name[pos - 1] = L'\0';
} else { }
else
{
file_name[pos] = L'\0'; file_name[pos] = L'\0';
} }
if (s[0]) { if (s[0])
{
s++; s++;
pos++; pos++;
} }
while(s[0] && iswspace(s[0])) { while(s[0] && iswspace(s[0]))
{
s++; s++;
pos++; pos++;
} }
@ -121,19 +134,23 @@ void get_file_name(LPWSTR *command_line, LPWSTR file_name)
BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s) BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
{ {
switch (action) { switch (action)
case ACTION_ADD: { {
case ACTION_ADD:
{
WCHAR filename[MAX_PATH]; WCHAR filename[MAX_PATH];
FILE *fp; FILE *fp;
get_file_name(&s, filename); get_file_name(&s, filename);
if (!filename[0]) { if (!filename[0])
{
fprintf(stderr, "%s: No file name is specified\n", getAppName()); fprintf(stderr, "%s: No file name is specified\n", getAppName());
fprintf(stderr, usage); fprintf(stderr, usage);
exit(4); exit(4);
} }
while(filename[0]) { while(filename[0])
{
fp = _wfopen(filename, L"r"); fp = _wfopen(filename, L"r");
if (fp == NULL) if (fp == NULL)
{ {
@ -148,10 +165,12 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
} }
break; break;
} }
case ACTION_DELETE: { case ACTION_DELETE:
{
WCHAR reg_key_name[KEY_MAX_LEN]; WCHAR reg_key_name[KEY_MAX_LEN];
get_file_name(&s, reg_key_name); get_file_name(&s, reg_key_name);
if (!reg_key_name[0]) { if (!reg_key_name[0])
{
fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName()); fprintf(stderr, "%s: No registry key is specified for removal\n", getAppName());
fprintf(stderr, usage); fprintf(stderr, usage);
exit(6); exit(6);
@ -159,22 +178,27 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
delete_registry_key(reg_key_name); delete_registry_key(reg_key_name);
break; break;
} }
case ACTION_EXPORT: { case ACTION_EXPORT:
{
WCHAR filename[MAX_PATH]; WCHAR filename[MAX_PATH];
filename[0] = _T('\0'); filename[0] = _T('\0');
get_file_name(&s, filename); get_file_name(&s, filename);
if (!filename[0]) { if (!filename[0])
{
fprintf(stderr, "%s: No file name is specified\n", getAppName()); fprintf(stderr, "%s: No file name is specified\n", getAppName());
fprintf(stderr, usage); fprintf(stderr, usage);
exit(7); exit(7);
} }
if (s[0]) { if (s[0])
{
WCHAR reg_key_name[KEY_MAX_LEN]; WCHAR reg_key_name[KEY_MAX_LEN];
get_file_name(&s, reg_key_name); get_file_name(&s, reg_key_name);
export_registry_key(filename, reg_key_name, REG_FORMAT_4); export_registry_key(filename, reg_key_name, REG_FORMAT_4);
} else { }
else
{
export_registry_key(filename, NULL, REG_FORMAT_4); export_registry_key(filename, NULL, REG_FORMAT_4);
} }
break; break;
@ -196,9 +220,12 @@ BOOL PerformRegAction(REGEDIT_ACTION action, LPWSTR s)
*/ */
static void error_unknown_switch(WCHAR chu, LPWSTR s) static void error_unknown_switch(WCHAR chu, LPWSTR s)
{ {
if (iswalpha(chu)) { if (iswalpha(chu))
{
fprintf(stderr, "%s: Undefined switch /%c!\n", getAppName(), chu); fprintf(stderr, "%s: Undefined switch /%c!\n", getAppName(), chu);
} else { }
else
{
fprintf(stderr, "%s: Alphabetic character is expected after '%c' " fprintf(stderr, "%s: Alphabetic character is expected after '%c' "
"in swit ch specification\n", getAppName(), *(s - 1)); "in swit ch specification\n", getAppName(), *(s - 1));
} }
@ -220,12 +247,16 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
ch = *s; ch = *s;
ch2 = *(s + 1); ch2 = *(s + 1);
chu = (WCHAR)towupper(ch); chu = (WCHAR)towupper(ch);
if (!ch2 || iswspace(ch2)) { if (!ch2 || iswspace(ch2))
{
if (chu == L'S' || chu == L'V') if (chu == L'S' || chu == L'V')
{ {
/* ignore these switches */ /* ignore these switches */
} else { }
switch (chu) { else
{
switch (chu)
{
case L'D': case L'D':
action = ACTION_DELETE; action = ACTION_DELETE;
break; break;
@ -242,14 +273,19 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
} }
} }
s++; s++;
} else { }
if (ch2 == L':') { else
switch (chu) { {
if (ch2 == L':')
{
switch (chu)
{
case L'L': case L'L':
/* fall through */ /* fall through */
case L'R': case L'R':
s += 2; s += 2;
while (*s && !iswspace(*s)) { while (*s && !iswspace(*s))
{
s++; s++;
} }
break; break;
@ -257,7 +293,9 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
error_unknown_switch(chu, s); error_unknown_switch(chu, s);
break; break;
} }
} else { }
else
{
/* this is a file name, starting from '/' */ /* this is a file name, starting from '/' */
s--; s--;
break; break;
@ -265,7 +303,8 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine)
} }
/* skip spaces to the next parameter */ /* skip spaces to the next parameter */
ch = *s; ch = *s;
while (ch && iswspace(ch)) { while (ch && iswspace(ch))
{
s++; s++;
ch = *s; ch = *s;
} }

View file

@ -30,22 +30,25 @@
*/ */
#define REG_FILE_HEX_LINE_LEN (2 + 25 * 3) #define REG_FILE_HEX_LINE_LEN (2 + 25 * 3)
static const CHAR *reg_class_names[] = { static const CHAR *reg_class_names[] =
{
"HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CLASSES_ROOT", "HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CLASSES_ROOT",
"HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_DYN_DATA" "HKEY_CURRENT_CONFIG", "HKEY_CURRENT_USER", "HKEY_DYN_DATA"
}; };
#define REG_CLASS_NUMBER (sizeof(reg_class_names) / sizeof(reg_class_names[0])) #define REG_CLASS_NUMBER (sizeof(reg_class_names) / sizeof(reg_class_names[0]))
const WCHAR* reg_class_namesW[REG_CLASS_NUMBER] = { const WCHAR* reg_class_namesW[REG_CLASS_NUMBER] =
{
L"HKEY_LOCAL_MACHINE", L"HKEY_USERS", L"HKEY_CLASSES_ROOT", L"HKEY_LOCAL_MACHINE", L"HKEY_USERS", L"HKEY_CLASSES_ROOT",
L"HKEY_CURRENT_CONFIG", L"HKEY_CURRENT_USER", L"HKEY_DYN_DATA" L"HKEY_CURRENT_CONFIG", L"HKEY_CURRENT_USER", L"HKEY_DYN_DATA"
}; };
static HKEY reg_class_keys[REG_CLASS_NUMBER] = { static HKEY reg_class_keys[REG_CLASS_NUMBER] =
{
HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CLASSES_ROOT,
HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_DYN_DATA HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_DYN_DATA
}; };
/* return values */ /* return values */
#define NOT_ENOUGH_MEMORY 1 #define NOT_ENOUGH_MEMORY 1
@ -149,7 +152,8 @@ static BOOL convertHexToDWord(WCHAR* str, DWORD *dw)
char dummy; char dummy;
WideCharToMultiByte(CP_ACP, 0, str, -1, buf, 9, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, str, -1, buf, 9, NULL, NULL);
if (lstrlenW(str) > 8 || sscanf(buf, "%lx%c", dw, &dummy) != 1) { if (lstrlenW(str) > 8 || sscanf(buf, "%lx%c", dw, &dummy) != 1)
{
fprintf(stderr,"%s: ERROR, invalid hex value\n", getAppName()); fprintf(stderr,"%s: ERROR, invalid hex value\n", getAppName());
return FALSE; return FALSE;
} }
@ -172,12 +176,14 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
s = str; s = str;
d = data; d = data;
*size=0; *size=0;
while (*s != '\0') { while (*s != '\0')
{
UINT wc; UINT wc;
WCHAR *end; WCHAR *end;
wc = wcstoul(s,&end, 16); wc = wcstoul(s,&end, 16);
if (end == s || wc > 0xff || (*end && *end != L',')) { if (end == s || wc > 0xff || (*end && *end != L','))
{
char* strA = GetMultiByteString(s); char* strA = GetMultiByteString(s);
fprintf(stderr,"%s: ERROR converting CSV hex stream. Invalid value at '%s'\n", fprintf(stderr,"%s: ERROR converting CSV hex stream. Invalid value at '%s'\n",
getAppName(), strA); getAppName(), strA);
@ -203,7 +209,13 @@ static BYTE* convertHexCSVToHex(WCHAR *str, DWORD *size)
*/ */
static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type) static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
{ {
struct data_type { const WCHAR *tag; int len; int type; int parse_type; }; struct data_type
{
const WCHAR *tag;
int len;
int type;
int parse_type;
};
static const WCHAR quote[] = {'"'}; static const WCHAR quote[] = {'"'};
static const WCHAR str[] = {'s','t','r',':','"'}; static const WCHAR str[] = {'s','t','r',':','"'};
@ -225,7 +237,8 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
const struct data_type *ptr; const struct data_type *ptr;
int type; int type;
for (ptr = data_types; ptr->tag; ptr++) { for (ptr = data_types; ptr->tag; ptr++)
{
if (wcsncmp(ptr->tag, *lpValue, ptr->len)) if (wcsncmp(ptr->tag, *lpValue, ptr->len))
continue; continue;
@ -233,14 +246,18 @@ static DWORD getDataType(LPWSTR *lpValue, DWORD* parse_type)
*parse_type = ptr->parse_type; *parse_type = ptr->parse_type;
type=ptr->type; type=ptr->type;
*lpValue+=ptr->len; *lpValue+=ptr->len;
if (type == -1) { if (type == -1)
{
WCHAR* end; WCHAR* end;
/* "hex(xx):" is special */ /* "hex(xx):" is special */
type = (int)wcstoul( *lpValue , &end, 16 ); type = (int)wcstoul( *lpValue , &end, 16 );
if (**lpValue=='\0' || *end!=')' || *(end+1)!=':') { if (**lpValue=='\0' || *end!=')' || *(end+1)!=':')
{
type=REG_NONE; type=REG_NONE;
} else { }
else
{
*lpValue = end + 2; *lpValue = end + 2;
} }
} }
@ -258,10 +275,13 @@ static void REGPROC_unescape_string(WCHAR* str)
int str_idx = 0; /* current character under analysis */ int str_idx = 0; /* current character under analysis */
int val_idx = 0; /* the last character of the unescaped string */ int val_idx = 0; /* the last character of the unescaped string */
int len = lstrlenW(str); int len = lstrlenW(str);
for (str_idx = 0; str_idx < len; str_idx++, val_idx++) { for (str_idx = 0; str_idx < len; str_idx++, val_idx++)
if (str[str_idx] == '\\') { {
if (str[str_idx] == '\\')
{
str_idx++; str_idx++;
switch (str[str_idx]) { switch (str[str_idx])
{
case 'n': case 'n':
str[val_idx] = '\n'; str[val_idx] = '\n';
break; break;
@ -275,7 +295,9 @@ static void REGPROC_unescape_string(WCHAR* str)
str[val_idx] = str[str_idx]; str[val_idx] = str[str_idx];
break; break;
} }
} else { }
else
{
str[val_idx] = str[str_idx]; str[val_idx] = str[str_idx];
} }
} }
@ -310,9 +332,11 @@ static BOOL parseKeyName(LPWSTR lpKeyName, HKEY *hKey, LPWSTR *lpKeyPath)
} }
*hKey = NULL; *hKey = NULL;
for (i = 0; i < REG_CLASS_NUMBER; i++) { for (i = 0; i < REG_CLASS_NUMBER; i++)
{
if (CompareStringW(LOCALE_USER_DEFAULT, 0, lpKeyName, len, reg_class_namesW[i], len) == CSTR_EQUAL && if (CompareStringW(LOCALE_USER_DEFAULT, 0, lpKeyName, len, reg_class_namesW[i], len) == CSTR_EQUAL &&
len == lstrlenW(reg_class_namesW[i])) { len == lstrlenW(reg_class_namesW[i]))
{
*hKey = reg_class_keys[i]; *hKey = reg_class_keys[i];
break; break;
} }
@ -485,29 +509,39 @@ static void processSetValue(WCHAR* line, BOOL is_unicode)
/* get value name */ /* get value name */
while ( iswspace(line[line_idx]) ) line_idx++; while ( iswspace(line[line_idx]) ) line_idx++;
if (line[line_idx] == '@' && line[line_idx + 1] == '=') { if (line[line_idx] == '@' && line[line_idx + 1] == '=')
{
line[line_idx] = '\0'; line[line_idx] = '\0';
val_name = line; val_name = line;
line_idx++; line_idx++;
} else if (line[line_idx] == '\"') { }
else if (line[line_idx] == '\"')
{
line_idx++; line_idx++;
val_name = line + line_idx; val_name = line + line_idx;
while (TRUE) { while (TRUE)
{
if (line[line_idx] == '\\') /* skip escaped character */ if (line[line_idx] == '\\') /* skip escaped character */
{ {
line_idx += 2; line_idx += 2;
} else { }
if (line[line_idx] == '\"') { else
{
if (line[line_idx] == '\"')
{
line[line_idx] = '\0'; line[line_idx] = '\0';
line_idx++; line_idx++;
break; break;
} else { }
else
{
line_idx++; line_idx++;
} }
} }
} }
while ( iswspace(line[line_idx]) ) line_idx++; while ( iswspace(line[line_idx]) ) line_idx++;
if (line[line_idx] != '=') { if (line[line_idx] != '=')
{
char* lineA; char* lineA;
line[line_idx] = '\"'; line[line_idx] = '\"';
lineA = GetMultiByteString(line); lineA = GetMultiByteString(line);
@ -516,7 +550,9 @@ static void processSetValue(WCHAR* line, BOOL is_unicode)
return; return;
} }
} else { }
else
{
char* lineA = GetMultiByteString(line); char* lineA = GetMultiByteString(line);
fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA); fprintf(stderr,"Warning! unrecognized line:\n%s\n", lineA);
HeapFree(GetProcessHeap(), 0, lineA); HeapFree(GetProcessHeap(), 0, lineA);
@ -558,7 +594,8 @@ static void processRegEntry(WCHAR* stdInput, BOOL isUnicode)
* We encountered the end of the file, make sure we * We encountered the end of the file, make sure we
* close the opened key and exit * close the opened key and exit
*/ */
if (stdInput == NULL) { if (stdInput == NULL)
{
closeKey(); closeKey();
return; return;
} }
@ -578,19 +615,22 @@ static void processRegEntry(WCHAR* stdInput, BOOL isUnicode)
if ( stdInput[0] == '-') if ( stdInput[0] == '-')
{ {
delete_registry_key(stdInput + 1); delete_registry_key(stdInput + 1);
} else if ( openKeyW(stdInput) != ERROR_SUCCESS ) }
else if ( openKeyW(stdInput) != ERROR_SUCCESS )
{ {
char* stdInputA = GetMultiByteString(stdInput); char* stdInputA = GetMultiByteString(stdInput);
fprintf(stderr,"%s: setValue failed to open key %s\n", fprintf(stderr,"%s: setValue failed to open key %s\n",
getAppName(), stdInputA); getAppName(), stdInputA);
HeapFree(GetProcessHeap(), 0, stdInputA); HeapFree(GetProcessHeap(), 0, stdInputA);
} }
} else if( currentKeyHandle && }
else if( currentKeyHandle &&
(( stdInput[0] == '@') || /* reading a default @=data pair */ (( stdInput[0] == '@') || /* reading a default @=data pair */
( stdInput[0] == '\"'))) /* reading a new value=data pair */ ( stdInput[0] == '\"'))) /* reading a new value=data pair */
{ {
processSetValue(stdInput, isUnicode); processSetValue(stdInput, isUnicode);
} else }
else
{ {
/* Since we are assuming that the file format is valid we must be /* Since we are assuming that the file format is valid we must be
* reading a blank line which indicates the end of this key processing * reading a blank line which indicates the end of this key processing
@ -614,13 +654,15 @@ static void processRegLinesA(FILE *in)
line = HeapAlloc(GetProcessHeap(), 0, lineSize); line = HeapAlloc(GetProcessHeap(), 0, lineSize);
CHECK_ENOUGH_MEMORY(line); CHECK_ENOUGH_MEMORY(line);
while (!feof(in)) { while (!feof(in))
{
LPSTR s; /* The pointer into line for where the current fgets should read */ LPSTR s; /* The pointer into line for where the current fgets should read */
LPSTR check; LPSTR check;
WCHAR* lineW; WCHAR* lineW;
s = line; s = line;
for (;;) { for (;;)
{
size_t size_remaining; size_t size_remaining;
int size_to_get; int size_to_get;
char *s_eol; /* various local uses */ char *s_eol; /* various local uses */
@ -650,11 +692,15 @@ static void processRegLinesA(FILE *in)
check = fgets (s, size_to_get, in); check = fgets (s, size_to_get, in);
if (check == NULL) { if (check == NULL)
if (ferror(in)) { {
if (ferror(in))
{
perror ("While reading input"); perror ("While reading input");
exit (IO_ERROR); exit (IO_ERROR);
} else { }
else
{
assert (feof(in)); assert (feof(in));
*s = '\0'; *s = '\0';
/* It is not clear to me from the definition that the /* It is not clear to me from the definition that the
@ -666,35 +712,41 @@ static void processRegLinesA(FILE *in)
/* If we didn't read the eol nor the eof go around for the rest */ /* If we didn't read the eol nor the eof go around for the rest */
s_eol = strchr (s, '\n'); s_eol = strchr (s, '\n');
if (!feof (in) && !s_eol) { if (!feof (in) && !s_eol)
{
s = strchr (s, '\0'); s = strchr (s, '\0');
/* It should be s + size_to_get - 1 but this is safer */ /* It should be s + size_to_get - 1 but this is safer */
continue; continue;
} }
/* If it is a comment line then discard it and go around again */ /* If it is a comment line then discard it and go around again */
if (line [0] == '#') { if (line [0] == '#')
{
s = line; s = line;
continue; continue;
} }
/* Remove any line feed. Leave s_eol on the \0 */ /* Remove any line feed. Leave s_eol on the \0 */
if (s_eol) { if (s_eol)
{
*s_eol = '\0'; *s_eol = '\0';
if (s_eol > line && *(s_eol-1) == '\r') if (s_eol > line && *(s_eol-1) == '\r')
*--s_eol = '\0'; *--s_eol = '\0';
} else }
else
s_eol = strchr (s, '\0'); s_eol = strchr (s, '\0');
/* If there is a concatenating \\ then go around again */ /* If there is a concatenating \\ then go around again */
if (s_eol > line && *(s_eol-1) == '\\') { if (s_eol > line && *(s_eol-1) == '\\')
{
int c; int c;
s = s_eol-1; s = s_eol-1;
do do
{ {
c = fgetc(in); c = fgetc(in);
} while(c == ' ' || c == '\t'); }
while(c == ' ' || c == '\t');
if(c == EOF) if(c == EOF)
{ {
@ -737,7 +789,8 @@ static void processRegLinesW(FILE *in)
s = buf; s = buf;
line = buf; line = buf;
while(!feof(in)) { while(!feof(in))
{
size_t size_remaining; size_t size_remaining;
int size_to_get; int size_to_get;
WCHAR *s_eol = NULL; /* various local uses */ WCHAR *s_eol = NULL; /* various local uses */
@ -769,11 +822,15 @@ static void processRegLinesW(FILE *in)
CharsInBuf = fread(s, sizeof(WCHAR), size_to_get - 1, in); CharsInBuf = fread(s, sizeof(WCHAR), size_to_get - 1, in);
s[CharsInBuf] = 0; s[CharsInBuf] = 0;
if (CharsInBuf == 0) { if (CharsInBuf == 0)
if (ferror(in)) { {
if (ferror(in))
{
perror ("While reading input"); perror ("While reading input");
exit (IO_ERROR); exit (IO_ERROR);
} else { }
else
{
assert (feof(in)); assert (feof(in));
*s = '\0'; *s = '\0';
/* It is not clear to me from the definition that the /* It is not clear to me from the definition that the
@ -788,7 +845,8 @@ static void processRegLinesW(FILE *in)
{ {
s_eol = wcschr(line, '\n'); s_eol = wcschr(line, '\n');
if(!s_eol) { if(!s_eol)
{
/* Move the stub of the line to the start of the buffer so /* Move the stub of the line to the start of the buffer so
* we get the maximum space to read into, and so we don't * we get the maximum space to read into, and so we don't
* have to recalculate 'line' if the buffer expands */ * have to recalculate 'line' if the buffer expands */
@ -799,14 +857,16 @@ static void processRegLinesW(FILE *in)
} }
/* If it is a comment line then discard it and go around again */ /* If it is a comment line then discard it and go around again */
if (*line == '#') { if (*line == '#')
{
line = s_eol + 1; line = s_eol + 1;
continue; continue;
} }
/* If there is a concatenating \\ then go around again */ /* If there is a concatenating \\ then go around again */
if ((*(s_eol-1) == '\\') || if ((*(s_eol-1) == '\\') ||
(*(s_eol-1) == '\r' && *(s_eol-2) == '\\')) { (*(s_eol-1) == '\r' && *(s_eol-2) == '\\'))
{
WCHAR* NextLine = s_eol; WCHAR* NextLine = s_eol;
while(*(NextLine+1) == ' ' || *(NextLine+1) == '\t') while(*(NextLine+1) == ' ' || *(NextLine+1) == '\t')
@ -824,7 +884,8 @@ static void processRegLinesW(FILE *in)
} }
/* Remove any line feed. Leave s_eol on the \0 */ /* Remove any line feed. Leave s_eol on the \0 */
if (s_eol) { if (s_eol)
{
*s_eol = '\0'; *s_eol = '\0';
if (s_eol > buf && *(s_eol-1) == '\r') if (s_eol > buf && *(s_eol-1) == '\r')
*(s_eol-1) = '\0'; *(s_eol-1) = '\0';
@ -860,7 +921,8 @@ static void REGPROC_print_error(void)
error_code = GetLastError (); error_code = GetLastError ();
status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, error_code, 0, (LPTSTR) &lpMsgBuf, 0, NULL); NULL, error_code, 0, (LPTSTR) &lpMsgBuf, 0, NULL);
if (!status) { if (!status)
{
fprintf(stderr,"%s: Cannot display message for error %ld, status %ld\n", fprintf(stderr,"%s: Cannot display message for error %ld, status %ld\n",
getAppName(), error_code, GetLastError()); getAppName(), error_code, GetLastError());
exit(1); exit(1);
@ -883,7 +945,8 @@ static void REGPROC_print_error(void)
static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD required_len) static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD required_len)
{ {
required_len++; required_len++;
if (required_len > *len) { if (required_len > *len)
{
*len = required_len; *len = required_len;
if (!*buffer) if (!*buffer)
*buffer = HeapAlloc(GetProcessHeap(), 0, *len * sizeof(**buffer)); *buffer = HeapAlloc(GetProcessHeap(), 0, *len * sizeof(**buffer));
@ -903,7 +966,8 @@ static void REGPROC_resize_char_buffer(WCHAR **buffer, DWORD *len, DWORD require
*/ */
static void REGPROC_resize_binary_buffer(BYTE **buffer, DWORD *size, DWORD required_size) static void REGPROC_resize_binary_buffer(BYTE **buffer, DWORD *size, DWORD required_size)
{ {
if (required_size > *size) { if (required_size > *size)
{
*size = required_size; *size = required_size;
if (!*buffer) if (!*buffer)
*buffer = HeapAlloc(GetProcessHeap(), 0, *size); *buffer = HeapAlloc(GetProcessHeap(), 0, *size);
@ -925,9 +989,11 @@ static void REGPROC_export_string(WCHAR **line_buf, DWORD *line_buf_size, DWORD
/* escaping characters */ /* escaping characters */
pos = *line_len; pos = *line_len;
for (i = 0; i < str_len; i++) { for (i = 0; i < str_len; i++)
{
WCHAR c = str[i]; WCHAR c = str[i];
switch (c) { switch (c)
{
case '\n': case '\n':
extra++; extra++;
REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra); REGPROC_resize_char_buffer(line_buf, line_buf_size, *line_len + str_len + extra);
@ -962,9 +1028,12 @@ static void REGPROC_export_binary(WCHAR **line_buf, DWORD *line_buf_size, DWORD
const WCHAR newline[] = {'\n',0}; const WCHAR newline[] = {'\n',0};
CHAR* value_multibyte = NULL; CHAR* value_multibyte = NULL;
if (type == REG_BINARY) { if (type == REG_BINARY)
{
hex_prefix = hex; hex_prefix = hex;
} else { }
else
{
const WCHAR hex_format[] = {'h','e','x','(','%','u',')',':',0}; const WCHAR hex_format[] = {'h','e','x','(','%','u',')',':',0};
hex_prefix = hex_buf; hex_prefix = hex_buf;
wsprintfW(hex_buf, hex_format, type); wsprintfW(hex_buf, hex_format, type);
@ -1011,7 +1080,8 @@ static void REGPROC_export_binary(WCHAR **line_buf, DWORD *line_buf_size, DWORD
column += 3; column += 3;
/* wrap the line */ /* wrap the line */
if (column >= REG_FILE_HEX_LINE_LEN) { if (column >= REG_FILE_HEX_LINE_LEN)
{
lstrcpyW(*line_buf + data_pos, concat); lstrcpyW(*line_buf + data_pos, concat);
data_pos += concat_len; data_pos += concat_len;
column = concat_prefix; column = concat_prefix;
@ -1062,11 +1132,11 @@ static void REGPROC_write_line(FILE *file, const WCHAR* str, BOOL unicode)
* val_size - size of the buffer for storing values in bytes. * val_size - size of the buffer for storing values in bytes.
*/ */
static void export_hkey(FILE *file, HKEY key, static void export_hkey(FILE *file, HKEY key,
WCHAR **reg_key_name_buf, DWORD *reg_key_name_size, WCHAR **reg_key_name_buf, DWORD *reg_key_name_size,
WCHAR **val_name_buf, DWORD *val_name_size, WCHAR **val_name_buf, DWORD *val_name_size,
BYTE **val_buf, DWORD *val_size, BYTE **val_buf, DWORD *val_size,
WCHAR **line_buf, DWORD *line_buf_size, WCHAR **line_buf, DWORD *line_buf_size,
BOOL unicode) BOOL unicode)
{ {
DWORD max_sub_key_len; DWORD max_sub_key_len;
DWORD max_val_name_len; DWORD max_val_name_len;
@ -1081,7 +1151,8 @@ static void export_hkey(FILE *file, HKEY key,
if (RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL, if (RegQueryInfoKeyW(key, NULL, NULL, NULL, NULL,
&max_sub_key_len, NULL, &max_sub_key_len, NULL,
NULL, &max_val_name_len, &max_val_size, NULL, NULL NULL, &max_val_name_len, &max_val_size, NULL, NULL
) != ERROR_SUCCESS) { ) != ERROR_SUCCESS)
{
REGPROC_print_error(); REGPROC_print_error();
} }
curr_len = lstrlenW(*reg_key_name_buf); curr_len = lstrlenW(*reg_key_name_buf);
@ -1098,26 +1169,34 @@ static void export_hkey(FILE *file, HKEY key,
/* print all the values */ /* print all the values */
i = 0; i = 0;
more_data = TRUE; more_data = TRUE;
while(more_data) { while(more_data)
{
DWORD value_type; DWORD value_type;
DWORD val_name_size1 = *val_name_size; DWORD val_name_size1 = *val_name_size;
DWORD val_size1 = *val_size; DWORD val_size1 = *val_size;
ret = RegEnumValueW(key, i, *val_name_buf, &val_name_size1, NULL, ret = RegEnumValueW(key, i, *val_name_buf, &val_name_size1, NULL,
&value_type, *val_buf, &val_size1); &value_type, *val_buf, &val_size1);
if (ret == ERROR_MORE_DATA) { if (ret == ERROR_MORE_DATA)
{
/* Increase the size of the buffers and retry */ /* Increase the size of the buffers and retry */
REGPROC_resize_char_buffer(val_name_buf, val_name_size, val_name_size1); REGPROC_resize_char_buffer(val_name_buf, val_name_size, val_name_size1);
REGPROC_resize_binary_buffer(val_buf, val_size, val_size1); REGPROC_resize_binary_buffer(val_buf, val_size, val_size1);
} else if (ret != ERROR_SUCCESS) { }
else if (ret != ERROR_SUCCESS)
{
more_data = FALSE; more_data = FALSE;
if (ret != ERROR_NO_MORE_ITEMS) { if (ret != ERROR_NO_MORE_ITEMS)
{
REGPROC_print_error(); REGPROC_print_error();
} }
} else { }
else
{
DWORD line_len; DWORD line_len;
i++; i++;
if ((*val_name_buf)[0]) { if ((*val_name_buf)[0])
{
const WCHAR val_start[] = {'"','%','s','"','=',0}; const WCHAR val_start[] = {'"','%','s','"','=',0};
line_len = 0; line_len = 0;
@ -1128,22 +1207,28 @@ static void export_hkey(FILE *file, HKEY key,
line_len = 3 + lstrlenW(*val_name_buf); line_len = 3 + lstrlenW(*val_name_buf);
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len); REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
wsprintfW(*line_buf, val_start, *val_name_buf); wsprintfW(*line_buf, val_start, *val_name_buf);
} else { }
else
{
const WCHAR std_val[] = {'@','=',0}; const WCHAR std_val[] = {'@','=',0};
line_len = 2; line_len = 2;
REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len); REGPROC_resize_char_buffer(line_buf, line_buf_size, line_len);
lstrcpyW(*line_buf, std_val); lstrcpyW(*line_buf, std_val);
} }
switch (value_type) { switch (value_type)
{
case REG_SZ: case REG_SZ:
{ {
WCHAR* wstr = (WCHAR*)*val_buf; WCHAR* wstr = (WCHAR*)*val_buf;
if (val_size1 < sizeof(WCHAR) || val_size1 % sizeof(WCHAR) || if (val_size1 < sizeof(WCHAR) || val_size1 % sizeof(WCHAR) ||
wstr[val_size1 / sizeof(WCHAR) - 1]) { wstr[val_size1 / sizeof(WCHAR) - 1])
{
REGPROC_export_binary(line_buf, line_buf_size, &line_len, value_type, *val_buf, val_size1, unicode); REGPROC_export_binary(line_buf, line_buf_size, &line_len, value_type, *val_buf, val_size1, unicode);
} else { }
else
{
const WCHAR start[] = {'"',0}; const WCHAR start[] = {'"',0};
const WCHAR end[] = {'"','\n',0}; const WCHAR end[] = {'"','\n',0};
DWORD len; DWORD len;
@ -1199,30 +1284,40 @@ static void export_hkey(FILE *file, HKEY key,
i = 0; i = 0;
more_data = TRUE; more_data = TRUE;
(*reg_key_name_buf)[curr_len] = '\\'; (*reg_key_name_buf)[curr_len] = '\\';
while(more_data) { while(more_data)
{
DWORD buf_size = *reg_key_name_size - curr_len - 1; DWORD buf_size = *reg_key_name_size - curr_len - 1;
ret = RegEnumKeyExW(key, i, *reg_key_name_buf + curr_len + 1, &buf_size, ret = RegEnumKeyExW(key, i, *reg_key_name_buf + curr_len + 1, &buf_size,
NULL, NULL, NULL, NULL); NULL, NULL, NULL, NULL);
if (ret == ERROR_MORE_DATA) { if (ret == ERROR_MORE_DATA)
{
/* Increase the size of the buffer and retry */ /* Increase the size of the buffer and retry */
REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_size, curr_len + 1 + buf_size); REGPROC_resize_char_buffer(reg_key_name_buf, reg_key_name_size, curr_len + 1 + buf_size);
} else if (ret != ERROR_SUCCESS) { }
else if (ret != ERROR_SUCCESS)
{
more_data = FALSE; more_data = FALSE;
if (ret != ERROR_NO_MORE_ITEMS) { if (ret != ERROR_NO_MORE_ITEMS)
{
REGPROC_print_error(); REGPROC_print_error();
} }
} else { }
else
{
HKEY subkey; HKEY subkey;
i++; i++;
if (RegOpenKeyW(key, *reg_key_name_buf + curr_len + 1, if (RegOpenKeyW(key, *reg_key_name_buf + curr_len + 1,
&subkey) == ERROR_SUCCESS) { &subkey) == ERROR_SUCCESS)
{
export_hkey(file, subkey, reg_key_name_buf, reg_key_name_size, export_hkey(file, subkey, reg_key_name_buf, reg_key_name_size,
val_name_buf, val_name_size, val_buf, val_size, val_name_buf, val_name_size, val_buf, val_size,
line_buf, line_buf_size, unicode); line_buf, line_buf_size, unicode);
RegCloseKey(subkey); RegCloseKey(subkey);
} else { }
else
{
REGPROC_print_error(); REGPROC_print_error();
} }
} }
@ -1246,7 +1341,8 @@ static FILE *REGPROC_open_export_file(WCHAR *file_name, BOOL unicode)
file = _wfopen(file_name, L"wb"); file = _wfopen(file_name, L"wb");
else else
file = _wfopen(file_name, L"w"); file = _wfopen(file_name, L"w");
if (!file) { if (!file)
{
CHAR* file_nameA = GetMultiByteString(file_name); CHAR* file_nameA = GetMultiByteString(file_name);
perror(""); perror("");
fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), file_nameA); fprintf(stderr,"%s: Can't open file \"%s\"\n", getAppName(), file_nameA);
@ -1298,7 +1394,8 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
line_buf = HeapAlloc(GetProcessHeap(), 0, line_buf_size * sizeof(*line_buf)); line_buf = HeapAlloc(GetProcessHeap(), 0, line_buf_size * sizeof(*line_buf));
CHECK_ENOUGH_MEMORY(reg_key_name_buf && val_name_buf && val_buf && line_buf); CHECK_ENOUGH_MEMORY(reg_key_name_buf && val_name_buf && val_buf && line_buf);
if (reg_key_name && reg_key_name[0]) { if (reg_key_name && reg_key_name[0])
{
HKEY reg_key_class; HKEY reg_key_class;
WCHAR *branch_name = NULL; WCHAR *branch_name = NULL;
HKEY key; HKEY key;
@ -1308,14 +1405,16 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
lstrcpyW(reg_key_name_buf, reg_key_name); lstrcpyW(reg_key_name_buf, reg_key_name);
/* open the specified key */ /* open the specified key */
if (!parseKeyName(reg_key_name, &reg_key_class, &branch_name)) { if (!parseKeyName(reg_key_name, &reg_key_class, &branch_name))
{
CHAR* key_nameA = GetMultiByteString(reg_key_name); CHAR* key_nameA = GetMultiByteString(reg_key_name);
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n", fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
getAppName(), key_nameA); getAppName(), key_nameA);
HeapFree(GetProcessHeap(), 0, key_nameA); HeapFree(GetProcessHeap(), 0, key_nameA);
exit(1); exit(1);
} }
if (!branch_name[0]) { if (!branch_name[0])
{
/* no branch - registry class is specified */ /* no branch - registry class is specified */
file = REGPROC_open_export_file(file_name, unicode); file = REGPROC_open_export_file(file_name, unicode);
export_hkey(file, reg_key_class, export_hkey(file, reg_key_class,
@ -1323,7 +1422,9 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
&val_name_buf, &val_name_size, &val_name_buf, &val_name_size,
&val_buf, &val_size, &line_buf, &val_buf, &val_size, &line_buf,
&line_buf_size, unicode); &line_buf_size, unicode);
} else if (RegOpenKeyW(reg_key_class, branch_name, &key) == ERROR_SUCCESS) { }
else if (RegOpenKeyW(reg_key_class, branch_name, &key) == ERROR_SUCCESS)
{
file = REGPROC_open_export_file(file_name, unicode); file = REGPROC_open_export_file(file_name, unicode);
export_hkey(file, key, export_hkey(file, key,
&reg_key_name_buf, &reg_key_name_size, &reg_key_name_buf, &reg_key_name_size,
@ -1331,24 +1432,30 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
&val_buf, &val_size, &line_buf, &val_buf, &val_size, &line_buf,
&line_buf_size, unicode); &line_buf_size, unicode);
RegCloseKey(key); RegCloseKey(key);
} else { }
else
{
CHAR* key_nameA = GetMultiByteString(reg_key_name); CHAR* key_nameA = GetMultiByteString(reg_key_name);
fprintf(stderr,"%s: Can't export. Registry key '%s' does not exist!\n", fprintf(stderr,"%s: Can't export. Registry key '%s' does not exist!\n",
getAppName(), key_nameA); getAppName(), key_nameA);
HeapFree(GetProcessHeap(), 0, key_nameA); HeapFree(GetProcessHeap(), 0, key_nameA);
REGPROC_print_error(); REGPROC_print_error();
} }
} else { }
else
{
unsigned int i; unsigned int i;
/* export all registry classes */ /* export all registry classes */
file = REGPROC_open_export_file(file_name, unicode); file = REGPROC_open_export_file(file_name, unicode);
for (i = 0; i < REG_CLASS_NUMBER; i++) { for (i = 0; i < REG_CLASS_NUMBER; i++)
{
/* do not export HKEY_CLASSES_ROOT */ /* do not export HKEY_CLASSES_ROOT */
if (reg_class_keys[i] != HKEY_CLASSES_ROOT && if (reg_class_keys[i] != HKEY_CLASSES_ROOT &&
reg_class_keys[i] != HKEY_CURRENT_USER && reg_class_keys[i] != HKEY_CURRENT_USER &&
reg_class_keys[i] != HKEY_CURRENT_CONFIG && reg_class_keys[i] != HKEY_CURRENT_CONFIG &&
reg_class_keys[i] != HKEY_DYN_DATA) { reg_class_keys[i] != HKEY_DYN_DATA)
{
lstrcpyW(reg_key_name_buf, reg_class_namesW[i]); lstrcpyW(reg_key_name_buf, reg_class_namesW[i]);
export_hkey(file, reg_class_keys[i], export_hkey(file, reg_class_keys[i],
&reg_key_name_buf, &reg_key_name_size, &reg_key_name_buf, &reg_key_name_size,
@ -1359,7 +1466,8 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name, DWORD format)
} }
} }
if (file) { if (file)
{
fclose(file); fclose(file);
} }
HeapFree(GetProcessHeap(), 0, reg_key_name); HeapFree(GetProcessHeap(), 0, reg_key_name);
@ -1382,7 +1490,8 @@ BOOL import_registry_file(FILE* reg_file)
if (s[0] == 0xff && s[1] == 0xfe) if (s[0] == 0xff && s[1] == 0xfe)
{ {
processRegLinesW(reg_file); processRegLinesW(reg_file);
} else }
else
{ {
fseek(reg_file, 0, SEEK_SET); fseek(reg_file, 0, SEEK_SET);
processRegLinesA(reg_file); processRegLinesA(reg_file);
@ -1408,14 +1517,16 @@ void delete_registry_key(WCHAR *reg_key_name)
if (!reg_key_name || !reg_key_name[0]) if (!reg_key_name || !reg_key_name[0])
return; return;
if (!parseKeyName(reg_key_name, &key_class, &key_name)) { if (!parseKeyName(reg_key_name, &key_class, &key_name))
{
char* reg_key_nameA = GetMultiByteString(reg_key_name); char* reg_key_nameA = GetMultiByteString(reg_key_name);
fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n", fprintf(stderr,"%s: Incorrect registry class specification in '%s'\n",
getAppName(), reg_key_nameA); getAppName(), reg_key_nameA);
HeapFree(GetProcessHeap(), 0, reg_key_nameA); HeapFree(GetProcessHeap(), 0, reg_key_nameA);
exit(1); exit(1);
} }
if (!*key_name) { if (!*key_name)
{
char* reg_key_nameA = GetMultiByteString(reg_key_name); char* reg_key_nameA = GetMultiByteString(reg_key_name);
fprintf(stderr,"%s: Can't delete registry class '%s'\n", fprintf(stderr,"%s: Can't delete registry class '%s'\n",
getAppName(), reg_key_nameA); getAppName(), reg_key_nameA);

View file

@ -42,19 +42,22 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
item.hItem = hItem; item.hItem = hItem;
if (!TreeView_GetItem(hwndTV, &item)) return FALSE; if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
if (item.lParam) { if (item.lParam)
{
/* found root key with valid key value */ /* found root key with valid key value */
*phKey = (HKEY)item.lParam; *phKey = (HKEY)item.lParam;
return TRUE; return TRUE;
} }
if(!get_item_path(hwndTV, TreeView_GetParent(hwndTV, hItem), phKey, pKeyPath, pPathLen, pMaxLen)) return FALSE; if(!get_item_path(hwndTV, TreeView_GetParent(hwndTV, hItem), phKey, pKeyPath, pPathLen, pMaxLen)) return FALSE;
if (*pPathLen) { if (*pPathLen)
{
(*pKeyPath)[*pPathLen] = _T('\\'); (*pKeyPath)[*pPathLen] = _T('\\');
++(*pPathLen); ++(*pPathLen);
} }
do { do
{
item.mask = TVIF_TEXT; item.mask = TVIF_TEXT;
item.hItem = hItem; item.hItem = hItem;
item.pszText = *pKeyPath + *pPathLen; item.pszText = *pKeyPath + *pPathLen;
@ -62,7 +65,8 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
item.cchTextMax = (int) maxLen; item.cchTextMax = (int) maxLen;
if (!TreeView_GetItem(hwndTV, &item)) return FALSE; if (!TreeView_GetItem(hwndTV, &item)) return FALSE;
len = _tcslen(item.pszText); len = _tcslen(item.pszText);
if (len < maxLen - 1) { if (len < maxLen - 1)
{
*pPathLen += (int) len; *pPathLen += (int) len;
break; break;
} }
@ -70,7 +74,8 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPTSTR* pKe
if (!newStr) return FALSE; if (!newStr) return FALSE;
*pKeyPath = newStr; *pKeyPath = newStr;
*pMaxLen *= 2; *pMaxLen *= 2;
} while(TRUE); }
while(TRUE);
return TRUE; return TRUE;
} }
@ -87,7 +92,8 @@ LPCTSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey)
if (maxLen == -1) return NULL; if (maxLen == -1) return NULL;
if (!hItem) hItem = TreeView_GetSelection(hwndTV); if (!hItem) hItem = TreeView_GetSelection(hwndTV);
if (!hItem) return NULL; if (!hItem) return NULL;
if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen)) { if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen))
{
return NULL; return NULL;
} }
return pathBuffer; return pathBuffer;
@ -106,8 +112,10 @@ static HTREEITEM AddEntryToTree(HWND hwndTV, HTREEITEM hParent, LPTSTR label, HK
TVITEM tvi; TVITEM tvi;
TVINSERTSTRUCT tvins; TVINSERTSTRUCT tvins;
if (hKey) { if (hKey)
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwChildren, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) { {
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwChildren, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
{
dwChildren = 0; dwChildren = 0;
} }
} }
@ -140,15 +148,20 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
KeyPath = GetItemPath(hwndTV, hItem, &hRoot); KeyPath = GetItemPath(hwndTV, hItem, &hRoot);
if (*KeyPath) { if (*KeyPath)
if (RegOpenKeyEx(hRoot, KeyPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS) { {
if (RegOpenKeyEx(hRoot, KeyPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
{
goto done; goto done;
} }
} else { }
else
{
hKey = hRoot; hKey = hRoot;
} }
if (RegQueryInfoKey(hKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) { if (RegQueryInfoKey(hKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
{
goto done; goto done;
} }
@ -156,19 +169,22 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
tvItem.mask = TVIF_CHILDREN; tvItem.mask = TVIF_CHILDREN;
tvItem.hItem = hItem; tvItem.hItem = hItem;
tvItem.cChildren = dwCount; tvItem.cChildren = dwCount;
if (!TreeView_SetItem(hwndTV, &tvItem)) { if (!TreeView_SetItem(hwndTV, &tvItem))
{
goto done; goto done;
} }
/* We don't have to bother with the rest if it's not expanded. */ /* We don't have to bother with the rest if it's not expanded. */
if (TreeView_GetItemState(hwndTV, hItem, TVIS_EXPANDED) == 0) { if (TreeView_GetItemState(hwndTV, hItem, TVIS_EXPANDED) == 0)
{
RegCloseKey(hKey); RegCloseKey(hKey);
bSuccess = TRUE; bSuccess = TRUE;
goto done; goto done;
} }
dwMaxSubKeyLen++; /* account for the \0 terminator */ dwMaxSubKeyLen++; /* account for the \0 terminator */
if (!(Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR)))) { if (!(Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR))))
{
goto done; goto done;
} }
tvItem.cchTextMax = dwMaxSubKeyLen; tvItem.cchTextMax = dwMaxSubKeyLen;
@ -185,7 +201,8 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
DWORD dwStep = 10000; DWORD dwStep = 10000;
for (childItem = TreeView_GetChild(hwndTV, hItem); childItem; for (childItem = TreeView_GetChild(hwndTV, hItem); childItem;
childItem = TreeView_GetNextSibling(hwndTV, childItem)) { childItem = TreeView_GetNextSibling(hwndTV, childItem))
{
if (dwActualSize + dwMaxSubKeyLen + 1 > dwPhysicalSize) if (dwActualSize + dwMaxSubKeyLen + 1 > dwPhysicalSize)
{ {
@ -218,9 +235,11 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
/* Now go through all the children in the tree, and check if any have to be removed. */ /* Now go through all the children in the tree, and check if any have to be removed. */
childItem = TreeView_GetChild(hwndTV, hItem); childItem = TreeView_GetChild(hwndTV, hItem);
while (childItem) { while (childItem)
{
HTREEITEM nextItem = TreeView_GetNextSibling(hwndTV, childItem); HTREEITEM nextItem = TreeView_GetNextSibling(hwndTV, childItem);
if (RefreshTreeItem(hwndTV, childItem) == FALSE) { if (RefreshTreeItem(hwndTV, childItem) == FALSE)
{
(void)TreeView_DeleteItem(hwndTV, childItem); (void)TreeView_DeleteItem(hwndTV, childItem);
} }
childItem = nextItem; childItem = nextItem;
@ -228,30 +247,38 @@ BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
/* Now go through all the children in the registry, and check if any have to be added. */ /* Now go through all the children in the registry, and check if any have to be added. */
bAddedAny = FALSE; bAddedAny = FALSE;
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) { for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
{
DWORD cName = dwMaxSubKeyLen, dwSubCount; DWORD cName = dwMaxSubKeyLen, dwSubCount;
BOOL found; BOOL found;
found = FALSE; found = FALSE;
if (RegEnumKeyEx(hKey, dwIndex, Name, &cName, 0, 0, 0, NULL) != ERROR_SUCCESS) { if (RegEnumKeyEx(hKey, dwIndex, Name, &cName, 0, 0, 0, NULL) != ERROR_SUCCESS)
{
continue; continue;
} }
/* Check if the node is already in there. */ /* Check if the node is already in there. */
if (pszNodes) { if (pszNodes)
for (s = pszNodes; *s; s += _tcslen(s) + 1) { {
if (!_tcscmp(s, Name)) { for (s = pszNodes; *s; s += _tcslen(s) + 1)
{
if (!_tcscmp(s, Name))
{
found = TRUE; found = TRUE;
break; break;
} }
} }
} }
if (found == FALSE) { if (found == FALSE)
{
/* Find the number of children of the node. */ /* Find the number of children of the node. */
dwSubCount = 0; dwSubCount = 0;
if (RegOpenKeyEx(hKey, Name, 0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS) { if (RegOpenKeyEx(hKey, Name, 0, KEY_QUERY_VALUE, &hSubKey) == ERROR_SUCCESS)
if (RegQueryInfoKey(hSubKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) { {
if (RegQueryInfoKey(hSubKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS)
{
dwSubCount = 0; dwSubCount = 0;
} }
RegCloseKey(hSubKey); RegCloseKey(hSubKey);
@ -287,7 +314,8 @@ BOOL RefreshTreeView(HWND hwndTV)
SendMessage(hwndTV, WM_SETREDRAW, FALSE, 0); SendMessage(hwndTV, WM_SETREDRAW, FALSE, 0);
hItem = TreeView_GetChild(hwndTV, TreeView_GetRoot(hwndTV)); hItem = TreeView_GetChild(hwndTV, TreeView_GetRoot(hwndTV));
while (hItem) { while (hItem)
{
RefreshTreeItem(hwndTV, hItem); RefreshTreeItem(hwndTV, hItem);
hItem = TreeView_GetNextSibling(hwndTV, hItem); hItem = TreeView_GetNextSibling(hwndTV, hItem);
} }
@ -483,7 +511,8 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
static int expanding; static int expanding;
if (expanding) return FALSE; if (expanding) return FALSE;
if (pnmtv->itemNew.state & TVIS_EXPANDEDONCE ) { if (pnmtv->itemNew.state & TVIS_EXPANDEDONCE )
{
return TRUE; return TRUE;
} }
expanding = TRUE; expanding = TRUE;
@ -493,10 +522,13 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
keyPath = GetItemPath(hwndTV, pnmtv->itemNew.hItem, &hRoot); keyPath = GetItemPath(hwndTV, pnmtv->itemNew.hItem, &hRoot);
if (!keyPath) goto done; if (!keyPath) goto done;
if (*keyPath) { if (*keyPath)
{
errCode = RegOpenKeyEx(hRoot, keyPath, 0, KEY_READ, &hNewKey); errCode = RegOpenKeyEx(hRoot, keyPath, 0, KEY_READ, &hNewKey);
if (errCode != ERROR_SUCCESS) goto done; if (errCode != ERROR_SUCCESS) goto done;
} else { }
else
{
hNewKey = hRoot; hNewKey = hRoot;
} }
@ -506,13 +538,15 @@ BOOL OnTreeExpanding(HWND hwndTV, NMTREEVIEW* pnmtv)
Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR)); Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(TCHAR));
if (!Name) goto done; if (!Name) goto done;
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) { for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
{
DWORD cName = dwMaxSubKeyLen, dwSubCount; DWORD cName = dwMaxSubKeyLen, dwSubCount;
errCode = RegEnumKeyEx(hNewKey, dwIndex, Name, &cName, 0, 0, 0, 0); errCode = RegEnumKeyEx(hNewKey, dwIndex, Name, &cName, 0, 0, 0, 0);
if (errCode != ERROR_SUCCESS) continue; if (errCode != ERROR_SUCCESS) continue;
errCode = RegOpenKeyEx(hNewKey, Name, 0, KEY_QUERY_VALUE, &hKey); errCode = RegOpenKeyEx(hNewKey, Name, 0, KEY_QUERY_VALUE, &hKey);
if (errCode == ERROR_SUCCESS) { if (errCode == ERROR_SUCCESS)
{
errCode = RegQueryInfoKey(hKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0); errCode = RegQueryInfoKey(hKey, 0, 0, 0, &dwSubCount, 0, 0, 0, 0, 0, 0, 0);
RegCloseKey(hKey); RegCloseKey(hKey);
} }
@ -611,14 +645,16 @@ HWND CreateTreeView(HWND hwndParent, LPTSTR pHostName, HMENU id)
0, 0, rcClient.right, rcClient.bottom, 0, 0, rcClient.right, rcClient.bottom,
hwndParent, id, hInst, NULL); hwndParent, id, hInst, NULL);
/* Initialize the image list, and add items to the control. */ /* Initialize the image list, and add items to the control. */
if (!InitTreeViewImageLists(hwndTV) || !InitTreeViewItems(hwndTV, pHostName)) { if (!InitTreeViewImageLists(hwndTV) || !InitTreeViewItems(hwndTV, pHostName))
{
DestroyWindow(hwndTV); DestroyWindow(hwndTV);
return NULL; return NULL;
} }
return hwndTV; return hwndTV;
} }
void DestroyTreeView() { void DestroyTreeView()
{
if (pathBuffer) if (pathBuffer)
HeapFree(GetProcessHeap(), 0, pathBuffer); HeapFree(GetProcessHeap(), 0, pathBuffer);
} }

View file

@ -210,6 +210,11 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
ApplicationPageOnNotify(wParam, lParam); ApplicationPageOnNotify(wParam, lParam);
break; break;
case WM_KEYDOWN:
if (wParam == VK_DELETE)
ProcessPage_OnEndProcess();
break;
} }
return 0; return 0;
@ -584,6 +589,14 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
ApplicationPage_OnSwitchTo(); ApplicationPage_OnSwitchTo();
break; break;
case LVN_KEYDOWN:
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
ApplicationPage_OnEndTask();
break;
} }
} }
else if (pnmh->hwndFrom == ListView_GetHeader(hApplicationPageListCtrl)) else if (pnmh->hwndFrom == ListView_GetHeader(hApplicationPageListCtrl))

View file

@ -392,13 +392,13 @@ BEGIN
WS_TABSTOP,125,94,115,10 WS_TABSTOP,125,94,115,10
CONTROL "GDI Objects",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX | CONTROL "GDI Objects",IDC_GDIOBJECTS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,125,105,115,10 WS_TABSTOP,125,105,115,10
CONTROL "I/O Writes",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX | CONTROL "Â/È ïèñàíåòà",IDC_IOWRITES,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,125,116,115,10 WS_TABSTOP,125,116,115,10
CONTROL "I/O Write Bytes",IDC_IOWRITEBYTES,"Button", CONTROL "Â/È áàéòîâå çà ïèñàíå",IDC_IOWRITEBYTES,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,125,127,65,10 BS_AUTOCHECKBOX | WS_TABSTOP,125,127,65,10
CONTROL "I/O Other",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX | CONTROL "Äðóãè Â/È",IDC_IOOTHER,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,125,138,115,10 WS_TABSTOP,125,138,115,10
CONTROL "I/O Other Bytes",IDC_IOOTHERBYTES,"Button", CONTROL "Äðóãè Â/È áàéòîâå",IDC_IOOTHERBYTES,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,125,149,115,10 BS_AUTOCHECKBOX | WS_TABSTOP,125,149,115,10
END END

View file

@ -201,6 +201,11 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
case WM_NOTIFY: case WM_NOTIFY:
ProcessPageOnNotify(wParam, lParam); ProcessPageOnNotify(wParam, lParam);
break; break;
case WM_KEYDOWN:
if (wParam == VK_DELETE)
ProcessPage_OnEndProcess();
break;
} }
return 0; return 0;
@ -251,6 +256,12 @@ void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam)
ProcessPageShowContextMenu(GetSelectedProcessId()); ProcessPageShowContextMenu(GetSelectedProcessId());
break; break;
case LVN_KEYDOWN:
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
ProcessPage_OnEndProcess();
break;
} }
} }
else if (pnmh->hwndFrom == hProcessPageHeaderCtrl) else if (pnmh->hwndFrom == hProcessPageHeaderCtrl)

View file

@ -21,49 +21,51 @@
#include "winhelp_res.h" #include "winhelp_res.h"
#pragma code_page(65001)
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
/* Menu */ /* Menu */
MAIN_MENU MENU MAIN_MENU MENU
{ {
POPUP "파일(&F)" { POPUP "파일(&F)" {
MENUITEM "열기(&O)...", MNID_FILE_OPEN MENUITEM "열기(&O)...", MNID_FILE_OPEN
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "인쇄(&P)", MNID_FILE_PRINT MENUITEM "인쇄(&P)", MNID_FILE_PRINT
MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "종료(&E)", MNID_FILE_EXIT MENUITEM "종료(&E)", MNID_FILE_EXIT
} }
POPUP "편집(&E)" { POPUP "편집(&E)" {
MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE
} }
POPUP "책갈피(&B)" { POPUP "책갈피(&B)" {
MENUITEM "정의(&D)...", MNID_BKMK_DEFINE MENUITEM "정의(&D)...", MNID_BKMK_DEFINE
} }
POPUP "옵션(&O)" { POPUP "옵션(&O)" {
POPUP "가능한 도움말 보이기" POPUP "가능한 도움말 보이기"
BEGIN BEGIN
MENUITEM "기본", MNID_OPTS_HELP_DEFAULT MENUITEM "기본", MNID_OPTS_HELP_DEFAULT
MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE
MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE
END END
MENUITEM "기록", MNID_OPTS_HISTORY MENUITEM "기록", MNID_OPTS_HISTORY
POPUP "글꼴" POPUP "글꼴"
BEGIN BEGIN
MENUITEM "작게", MNID_OPTS_FONTS_SMALL MENUITEM "작게", MNID_OPTS_FONTS_SMALL
MENUITEM "보통", MNID_OPTS_FONTS_NORMAL MENUITEM "보통", MNID_OPTS_FONTS_NORMAL
MENUITEM "크게", MNID_OPTS_FONTS_LARGE MENUITEM "크게", MNID_OPTS_FONTS_LARGE
END END
MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS
} }
POPUP "도움말(&H)" { POPUP "도움말(&H)" {
MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON
MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "정보(&I)...", MNID_HELP_ABOUT MENUITEM "Wine 도움말 정보(&I)...", MNID_HELP_ABOUT
} }
} }
@ -71,7 +73,7 @@ MAIN_MENU MENU
IDD_INDEX DIALOG 0, 0, 200, 190 IDD_INDEX DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 9, "MS Shell Dlg" FONT 9, "MS Shell Dlg"
CAPTION "인덱스" CAPTION "인덱스"
{ {
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
} }
@ -79,50 +81,50 @@ CAPTION "
IDD_SEARCH DIALOG 0, 0, 200, 190 IDD_SEARCH DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 9, "MS Shell Dlg" FONT 9, "MS Shell Dlg"
CAPTION "찾기" CAPTION "찾기"
{ {
LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150 LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150
} }
/* Strings */ /* Strings */
STRINGTABLE STRINGTABLE
{ {
STID_WINE_HELP, "Wine 도움말" STID_WINE_HELP, "Wine 도움말"
STID_WHERROR, "에러" STID_WHERROR, "에러"
STID_WARNING, "경고" STID_WARNING, "경고"
STID_INFO, "정보" STID_INFO, "정보"
STID_NOT_IMPLEMENTED, "구현되지 않았음" STID_NOT_IMPLEMENTED, "구현되지 않았음"
STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생" STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생"
STID_INDEX, "목차(&C)" STID_INDEX, "목차(&C)"
STID_CONTENTS, "요약" STID_CONTENTS, "요약"
STID_BACK, "뒤로(&B)" STID_BACK, "뒤로(&B)"
STID_ALL_FILES, "모든 파일 (*.*)" STID_ALL_FILES, "모든 파일 (*.*)"
STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)" STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)"
STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?" STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?"
STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중" STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중"
STID_PSH_INDEX, "도움말 목차: " STID_PSH_INDEX, "도움말 목차: "
} }
CONTEXT_MENU MENU CONTEXT_MENU MENU
BEGIN BEGIN
POPUP "" POPUP ""
BEGIN BEGIN
MENUITEM "주석...", MNID_CTXT_ANNOTATE MENUITEM "주석...", MNID_CTXT_ANNOTATE
MENUITEM "복사", MNID_CTXT_COPY MENUITEM "복사", MNID_CTXT_COPY
MENUITEM "인쇄...", MNID_CTXT_PRINT MENUITEM "인쇄...", MNID_CTXT_PRINT
POPUP "글꼴" POPUP "글꼴"
BEGIN BEGIN
MENUITEM "좁게", MNID_CTXT_FONTS_SMALL MENUITEM "좁게", MNID_CTXT_FONTS_SMALL
MENUITEM "보통", MNID_CTXT_FONTS_NORMAL MENUITEM "보통", MNID_CTXT_FONTS_NORMAL
MENUITEM "넓게", MNID_CTXT_FONTS_LARGE MENUITEM "넓게", MNID_CTXT_FONTS_LARGE
END END
POPUP "도움말 항상 보이기" POPUP "도움말 항상 보이기"
BEGIN BEGIN
MENUITEM "기본", MNID_CTXT_HELP_DEFAULT MENUITEM "기본", MNID_CTXT_HELP_DEFAULT
MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE
MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE
END END
MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS
END END
END END

View file

@ -4,6 +4,7 @@
* *
* Copyright 2002 liuspider <liuspider@yahoo.com> * Copyright 2002 liuspider <liuspider@yahoo.com>
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com> * Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
* Copyright 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -37,7 +38,7 @@ MAIN_MENU MENU
MENUITEM "打印(&P)", MNID_FILE_PRINT MENUITEM "打印(&P)", MNID_FILE_PRINT
MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "退出(&E)", MNID_FILE_EXIT MENUITEM "退出(&X)", MNID_FILE_EXIT
} }
POPUP "编辑(&E)" { POPUP "编辑(&E)" {
MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG
@ -48,7 +49,7 @@ MAIN_MENU MENU
MENUITEM "定义(&D)...", MNID_BKMK_DEFINE MENUITEM "定义(&D)...", MNID_BKMK_DEFINE
} }
POPUP "选项(&O)" { POPUP "选项(&O)" {
POPUP "显示帮助" POPUP "总是显示帮助"
BEGIN BEGIN
MENUITEM "默认", MNID_OPTS_HELP_DEFAULT MENUITEM "默认", MNID_OPTS_HELP_DEFAULT
MENUITEM "显示", MNID_OPTS_HELP_VISIBLE MENUITEM "显示", MNID_OPTS_HELP_VISIBLE
@ -67,10 +68,26 @@ MAIN_MENU MENU
MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON
MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "资料信息(&I)...", MNID_HELP_ABOUT MENUITEM "关于 Wine 帮助(&I)...", MNID_HELP_ABOUT
} }
} }
IDD_INDEX DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
CAPTION "索引"
{
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
}
IDD_SEARCH DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
CAPTION "搜索"
{
LTEXT "尚未实现", -1, 10, 10, 180, 150
}
/* Strings */ /* Strings */
STRINGTABLE STRINGTABLE
{ {
@ -79,17 +96,40 @@ STID_WHERROR, "错误"
STID_WARNING, "警告" STID_WARNING, "警告"
STID_INFO, "信息" STID_INFO, "信息"
STID_NOT_IMPLEMENTED, "未实现" STID_NOT_IMPLEMENTED, "未实现"
STID_HLPFILE_ERROR_s, "读入帮助文件 %s 时发生错误" STID_HLPFILE_ERROR_s, "读入帮助文件“%s”时发生错误"
STID_INDEX, "内容(&C)" STID_INDEX, "索引(&I)"
STID_CONTENTS, "概要" STID_CONTENTS, "概要"
STID_BACK, "返回(&B)" STID_BACK, "返回(&B)"
STID_ALL_FILES, "所有文件 (*.*)" STID_ALL_FILES, "所有文件 (*.*)"
STID_HELP_FILES_HLP, "帮助文件 (*.hlp)" STID_HELP_FILES_HLP, "帮助文件 (*.hlp)"
STID_FILE_NOT_FOUND_s "不能打开文件 '%s'. 你想要自己找这个文件吗?" STID_FILE_NOT_FOUND_s "找不到文件“%s”。 你想要自己找这个文件吗?"
STID_NO_RICHEDIT "找不到 richedit... 终止" STID_NO_RICHEDIT "找不到 richedit 的实现……终止"
STID_PSH_INDEX, "帮助内容: " STID_PSH_INDEX, "帮助主题:"
} }
CONTEXT_MENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "注释...", MNID_CTXT_ANNOTATE
MENUITEM "复制", MNID_CTXT_COPY
MENUITEM "打印...", MNID_CTXT_PRINT
POPUP "字体"
BEGIN
MENUITEM "小号", MNID_CTXT_FONTS_SMALL
MENUITEM "中号", MNID_CTXT_FONTS_NORMAL
MENUITEM "大号", MNID_CTXT_FONTS_LARGE
END
POPUP "总是显示帮助"
BEGIN
MENUITEM "默认", MNID_CTXT_HELP_DEFAULT
MENUITEM "显示", MNID_CTXT_HELP_VISIBLE
MENUITEM "不显示", MNID_CTXT_HELP_NONVISIBLE
END
MENUITEM "使用系统颜色", MNID_CTXT_SYSTEM_COLORS
END
END
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
/* Menu */ /* Menu */

View file

@ -30,7 +30,6 @@ IDI_WINHELP ICON winhelp.ico
#include "Es.rc" #include "Es.rc"
#include "Fi.rc" #include "Fi.rc"
#include "Hu.rc" #include "Hu.rc"
#include "Ko.rc"
#include "No.rc" #include "No.rc"
#include "Pl.rc" #include "Pl.rc"
#include "Sk.rc" #include "Sk.rc"
@ -44,6 +43,7 @@ IDI_WINHELP ICON winhelp.ico
#include "He.rc" #include "He.rc"
#include "It.rc" #include "It.rc"
#include "Ja.rc" #include "Ja.rc"
#include "Ko.rc"
#include "Lt.rc" #include "Lt.rc"
#include "Nl.rc" #include "Nl.rc"
#include "Pt.rc" #include "Pt.rc"

View file

@ -61,7 +61,7 @@ BEGIN
MENUITEM SEPARATOR MENUITEM SEPARATOR
POPUP "其他(&X)" POPUP "其他(&X)"
BEGIN BEGIN
MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO /* 准确性待议 */
MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT
MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
@ -118,7 +118,7 @@ BEGIN
BEGIN BEGIN
MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */ MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */
MENUITEM "栗色", ID_COLOR_MAROON MENUITEM "栗色", ID_COLOR_MAROON
MENUITEM "调和绿", ID_COLOR_GREEN MENUITEM "绿", ID_COLOR_GREEN
MENUITEM "橄榄色", ID_COLOR_OLIVE MENUITEM "橄榄色", ID_COLOR_OLIVE
MENUITEM "藏青", ID_COLOR_NAVY MENUITEM "藏青", ID_COLOR_NAVY
MENUITEM "紫色", ID_COLOR_PURPLE MENUITEM "紫色", ID_COLOR_PURPLE
@ -126,7 +126,7 @@ BEGIN
MENUITEM "灰色", ID_COLOR_GRAY MENUITEM "灰色", ID_COLOR_GRAY
MENUITEM "银色", ID_COLOR_SILVER MENUITEM "银色", ID_COLOR_SILVER
MENUITEM "红色", ID_COLOR_RED MENUITEM "红色", ID_COLOR_RED
MENUITEM "绿色", ID_COLOR_LIME MENUITEM "青柠色", ID_COLOR_LIME
MENUITEM "黄色", ID_COLOR_YELLOW MENUITEM "黄色", ID_COLOR_YELLOW
MENUITEM "蓝色", ID_COLOR_BLUE MENUITEM "蓝色", ID_COLOR_BLUE
MENUITEM "洋红", ID_COLOR_FUCHSIA /* =magenta? */ MENUITEM "洋红", ID_COLOR_FUCHSIA /* =magenta? */
@ -487,7 +487,9 @@ BEGIN
STRING_PROMPT_SAVE_CHANGES, "儲存改動到 '%s'?" STRING_PROMPT_SAVE_CHANGES, "儲存改動到 '%s'?"
STRING_SEARCH_FINISHED, "檔案查找結束." STRING_SEARCH_FINISHED, "檔案查找結束."
STRING_LOAD_RICHED_FAILED, "RichEdit 裝載失敗." STRING_LOAD_RICHED_FAILED, "RichEdit 裝載失敗."
STRING_SAVE_LOSEFORMATTING, "你已經選擇儲存為文本檔案, 這可能導致格式丟失. 你確定要這麼做嗎?" STRING_SAVE_LOSEFORMATTING, "你已經選擇儲存為文本檔案, " \
"這可能導致格式丟失. " \
"你確定要這麼做嗎?"
STRING_INVALID_NUMBER, "數字格式無效" STRING_INVALID_NUMBER, "數字格式無效"
STRING_OLE_STORAGE_NOT_SUPPORTED, "不支援OLE 儲存檔案" STRING_OLE_STORAGE_NOT_SUPPORTED, "不支援OLE 儲存檔案"
STRING_WRITE_FAILED, "不能儲存檔案." STRING_WRITE_FAILED, "不能儲存檔案."

View file

@ -162,7 +162,7 @@ static void AddButton(HWND hwndToolBar, int nImage, int nCommand)
button.iBitmap = nImage; button.iBitmap = nImage;
button.idCommand = nCommand; button.idCommand = nCommand;
button.fsState = TBSTATE_ENABLED; button.fsState = TBSTATE_ENABLED;
button.fsStyle = TBSTYLE_BUTTON; button.fsStyle = BTNS_BUTTON;
button.dwData = 0; button.dwData = 0;
button.iString = -1; button.iString = -1;
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button); SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
@ -176,7 +176,7 @@ static void AddSeparator(HWND hwndToolBar)
button.iBitmap = -1; button.iBitmap = -1;
button.idCommand = 0; button.idCommand = 0;
button.fsState = 0; button.fsState = 0;
button.fsStyle = TBSTYLE_SEP; button.fsStyle = BTNS_SEP;
button.dwData = 0; button.dwData = 0;
button.iString = -1; button.iString = -1;
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button); SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
@ -1818,7 +1818,7 @@ static LRESULT OnCreate( HWND hWnd )
if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi)) if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi))
return -1; return -1;
hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|TBSTYLE_BUTTON, hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|BTNS_BUTTON,
IDC_TOOLBAR, IDC_TOOLBAR,
1, hInstance, IDB_TOOLBAR, 1, hInstance, IDB_TOOLBAR,
NULL, 0, NULL, 0,
@ -1880,7 +1880,7 @@ static LRESULT OnCreate( HWND hWnd )
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb); SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
hFormatBarWnd = CreateToolbarEx(hReBarWnd, hFormatBarWnd = CreateToolbarEx(hReBarWnd,
CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_BUTTON, CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | BTNS_BUTTON,
IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON)); IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON));
AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD); AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD);

View file

@ -0,0 +1,38 @@
/*
* Serbian language support
*
* Copyright (C) 2007 Mikolaj Zalewski
* Copyright 2010 Đorđe Vasiljević
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "resources.h"
#pragma code_page(65001)
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
STRINGTABLE
{
IDS_FAILED, "Покретање Писанке није успело"
}
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
STRINGTABLE
{
IDS_FAILED, "Pokretanje Pisanke nije uspelo"
}

View file

@ -0,0 +1,31 @@
/*
* Simplified Chinese language support
*
* Copyright (C) 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "resources.h"
/* Chinese text is encoded in UTF-8 */
#pragma code_page(65001)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
{
IDS_FAILED, "启动写字板失败"
}

View file

@ -39,4 +39,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "Ro.rc" #include "Ro.rc"
#include "Ru.rc" #include "Ru.rc"
#include "Si.rc" #include "Si.rc"
#include "Sr.rc"
#include "Uk.rc" #include "Uk.rc"
#include "Zh.rc"

View file

@ -104,7 +104,7 @@ BOOL PrepareService(LPCTSTR ServiceName)
HeapFree(GetProcessHeap(), 0, Buffer); HeapFree(GetProcessHeap(), 0, Buffer);
/* Load the service dll */ /* Load the service dll */
DPRINT1("Trying to load dll\n"); DPRINT("Trying to load dll\n");
hServiceDll = LoadLibrary(DllPath); hServiceDll = LoadLibrary(DllPath);
if (NULL == hServiceDll) if (NULL == hServiceDll)
@ -226,7 +226,7 @@ int _tmain (int argc, LPTSTR argv [])
NrOfServices = LoadServiceCategory(argv[2]); NrOfServices = LoadServiceCategory(argv[2]);
DPRINT1("NrOfServices: %lu\n", NrOfServices); DPRINT("NrOfServices: %lu\n", NrOfServices);
if (0 == NrOfServices) if (0 == NrOfServices)
return 0; return 0;
@ -240,7 +240,7 @@ int _tmain (int argc, LPTSTR argv [])
/* Fill the service table */ /* Fill the service table */
for (i = 0; i < NrOfServices; ++i) for (i = 0; i < NrOfServices; ++i)
{ {
DPRINT1("Loading service: %s\n", Service->Name); DPRINT("Loading service: %s\n", Service->Name);
ServiceTable[i].lpServiceName = Service->Name; ServiceTable[i].lpServiceName = Service->Name;
ServiceTable[i].lpServiceProc = Service->ServiceMainFunc; ServiceTable[i].lpServiceProc = Service->ServiceMainFunc;
Service = Service->Next; Service = Service->Next;

View file

@ -94,20 +94,37 @@ static DWORD WINAPI
RpcServerThread(LPVOID lpParameter) RpcServerThread(LPVOID lpParameter)
{ {
RPC_STATUS Status; RPC_STATUS Status;
BOOLEAN RegisteredProtSeq = FALSE;
UNREFERENCED_PARAMETER(lpParameter); UNREFERENCED_PARAMETER(lpParameter);
DPRINT("RpcServerThread() called\n"); DPRINT("RpcServerThread() called\n");
#if 0
/* XP-compatible protocol sequence/endpoint */
Status = RpcServerUseProtseqEpW(L"ncacn_np", Status = RpcServerUseProtseqEpW(L"ncacn_np",
20, 20,
L"\\pipe\\umpnpmgr", L"\\pipe\\ntsvcs",
NULL); // Security descriptor NULL); // Security descriptor
if (Status != RPC_S_OK) if (Status == RPC_S_OK)
{ RegisteredProtSeq = TRUE;
else
DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status); DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
#endif
/* Vista-compatible protocol sequence/endpoint */
Status = RpcServerUseProtseqEpW(L"ncacn_np",
20,
L"\\pipe\\plugplay",
NULL); // Security descriptor
if (Status == RPC_S_OK)
RegisteredProtSeq = TRUE;
else
DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
/* Make sure there's a usable endpoint */
if (RegisteredProtSeq == FALSE)
return 0; return 0;
}
Status = RpcServerRegisterIf(pnp_v1_0_s_ifspec, Status = RpcServerRegisterIf(pnp_v1_0_s_ifspec,
NULL, NULL,

View file

@ -1496,7 +1496,7 @@ MUI_ERROR bgBGErrorEntries[] =
}, },
{ {
//ERROR_INSUFFICIENT_DISKSPACE, //ERROR_INSUFFICIENT_DISKSPACE,
"Not enough free space in the selected partition.\n" "<EFBFBD>  ¨§΅ΰ ­¨ο ¤ο« ­ο¬  ¤®αβ βκη­® αΆ®΅®¤­® ―ΰ®αβΰ ­αβΆ®.\n"
" * <20> â¨á­¥â¥ ª« ¢¨è, §  ¤  ¯à®¤ê«¦¨â¥.", " * <20> â¨á­¥â¥ ª« ¢¨è, §  ¤  ¯à®¤ê«¦¨â¥.",
NULL NULL
}, },
@ -1640,7 +1640,7 @@ MUI_STRING bgBGStrings[] =
{STRING_COPYING, {STRING_COPYING,
" ‡ ¯¨á ­  ä ©«: %S"}, " ‡ ¯¨á ­  ä ©«: %S"},
{STRING_SETUPCOPYINGFILES, {STRING_SETUPCOPYINGFILES,
"’¥ç¥ § ¯¨á¢ ­¥ ­  ä ©«®¢¥â¥..."}, "” ©«®Ά¥β¥ α¥ § ―¨αΆ β..."},
{STRING_REGHIVEUPDATE, {STRING_REGHIVEUPDATE,
" Žáê¢à¥¬¥­ï¢ ­¥ ­  ॣ¨áâê୨⥠஥¢¥..."}, " Žáê¢à¥¬¥­ï¢ ­¥ ­  ॣ¨áâê୨⥠஥¢¥..."},
{STRING_IMPORTFILE, {STRING_IMPORTFILE,

View file

@ -1,7 +1,7 @@
/* FILE: setup/usetup/lang/cs-CZ.rc /* FILE: setup/usetup/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* THANKS TO: preston * THANKS TO: preston
* UPDATED: 2010-05-25 * UPDATED: 2010-12-12
*/ */
#pragma once #pragma once
@ -993,13 +993,13 @@ static MUI_ENTRY csCZBootLoaderEntries[] =
{ {
8, 8,
12, 12,
"Install bootloader on the harddisk (MBR and VBR).", "Nainstalovat zavadŘź na pevně disk (MBR a VBR).",
TEXT_STYLE_NORMAL TEXT_STYLE_NORMAL
}, },
{ {
8, 8,
13, 13,
"Install bootloader on the harddisk (VBR only).", "Nainstalovat zavadŘź na pevně disk (pouze VBR).",
TEXT_STYLE_NORMAL TEXT_STYLE_NORMAL
}, },
{ {

View file

@ -180,7 +180,7 @@ WORD wDefColor; /* default color */
* insert commas into a number * insert commas into a number
*/ */
INT INT
ConvertULargeInteger(ULONGLONG num, LPTSTR des, INT len, BOOL bPutSeperator) ConvertULargeInteger(ULONGLONG num, LPTSTR des, UINT len, BOOL bPutSeperator)
{ {
TCHAR temp[39]; /* maximum length with nNumberGroups == 1 */ TCHAR temp[39]; /* maximum length with nNumberGroups == 1 */
UINT n, iTarget; UINT n, iTarget;

View file

@ -99,7 +99,7 @@ INT cmd_cls (LPTSTR);
/* Prototypes for CMD.C */ /* Prototypes for CMD.C */
INT ConvertULargeInteger(ULONGLONG num, LPTSTR des, INT len, BOOL bPutSeperator); INT ConvertULargeInteger(ULONGLONG num, LPTSTR des, UINT len, BOOL bPutSeperator);
HANDLE RunFile(DWORD, LPTSTR, LPTSTR, LPTSTR, INT); HANDLE RunFile(DWORD, LPTSTR, LPTSTR, LPTSTR, INT);
INT ParseCommandLine(LPTSTR); INT ParseCommandLine(LPTSTR);
struct _PARSED_COMMAND; struct _PARSED_COMMAND;

View file

@ -131,7 +131,7 @@ static VOID ConWrite(TCHAR *str, DWORD len, DWORD nStdHandle)
error_out_of_memory(); error_out_of_memory();
return; return;
} }
len = MultiByteToWideChar(OutputCodePage, 0, str, len, buffer, len, NULL, NULL); len = MultiByteToWideChar(OutputCodePage, 0, str, len, buffer, len);
str = (PVOID)buffer; str = (PVOID)buffer;
#endif #endif
WriteFile(hOutput, str, len * sizeof(WCHAR), &dwWritten, NULL); WriteFile(hOutput, str, len * sizeof(WCHAR), &dwWritten, NULL);

View file

@ -23,6 +23,7 @@
#include <stdarg.h> #include <stdarg.h>
#include <math.h> #include <math.h>
#include <time.h> #include <time.h>
#include <assert.h>
#define NTOS_MODE_USER #define NTOS_MODE_USER
#include <ndk/ntndk.h> #include <ndk/ntndk.h>

View file

@ -152,7 +152,7 @@ CreateDropTarget(IN HWND hwndTarget,
{ {
CopyMemory(&This->Callbacks, CopyMemory(&This->Callbacks,
Callbacks, Callbacks,
sizeof(Callbacks)); sizeof(*Callbacks));
} }
hr = CoCreateInstance(&CLSID_DragDropHelper, hr = CoCreateInstance(&CLSID_DragDropHelper,

View file

@ -1,3 +1,4 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
IDM_TRAYWND MENU DISCARDABLE IDM_TRAYWND MENU DISCARDABLE
@ -36,7 +37,7 @@ BEGIN
MENUITEM "&Ñèãóðíîñò...", IDM_SECURITY, MFT_STRING, MFS_ENABLED MENUITEM "&Ñèãóðíîñò...", IDM_SECURITY, MFT_STRING, MFS_ENABLED
MENUITEM "&Ìðåæîâè âðúçêè", IDM_NETWORKCONNECTIONS, MFT_STRING, MFS_ENABLED MENUITEM "&Ìðåæîâè âðúçêè", IDM_NETWORKCONNECTIONS, MFT_STRING, MFS_ENABLED
MENUITEM "&Ïå÷àòà÷è è ôàêñîâå", IDM_PRINTERSANDFAXES, MFT_STRING, MFS_ENABLED MENUITEM "&Ïå÷àòà÷è è ôàêñîâå", IDM_PRINTERSANDFAXES, MFT_STRING, MFS_ENABLED
MENUITEM "&Taskbar and Start Menu", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED MENUITEM "&Задачна лента и изборник „Пуск“", IDM_TASKBARANDSTARTMENU, MFT_STRING, MFS_ENABLED
END END
POPUP "&Òúðñåíå", IDM_SEARCH POPUP "&Òúðñåíå", IDM_SEARCH
BEGIN BEGIN
@ -49,6 +50,7 @@ BEGIN
MENUITEM "&Èçõîä %s...", IDM_LOGOFF, MFT_STRING, MFS_ENABLED MENUITEM "&Èçõîä %s...", IDM_LOGOFF, MFT_STRING, MFS_ENABLED
MENUITEM "&Îòêà÷âàíå...", IDM_DISCONNECT, MFT_STRING, MFS_ENABLED MENUITEM "&Îòêà÷âàíå...", IDM_DISCONNECT, MFT_STRING, MFS_ENABLED
/* undock computer*/ /* undock computer*/
/* неясно */
MENUITEM "Îò&ãíåçäâàíå íà êîìïþòúðà", IDM_UNDOCKCOMPUTER, MFT_STRING, MFS_ENABLED MENUITEM "Îò&ãíåçäâàíå íà êîìïþòúðà", IDM_UNDOCKCOMPUTER, MFT_STRING, MFS_ENABLED
MENUITEM "&Èçêëþ÷âàíå...", IDM_SHUTDOWN, MFT_STRING, MFS_ENABLED MENUITEM "&Èçêëþ÷âàíå...", IDM_SHUTDOWN, MFT_STRING, MFS_ENABLED
END END
@ -121,7 +123,7 @@ BEGIN
IDS_PROPERTIES "&Ñâîéñòâà" IDS_PROPERTIES "&Ñâîéñòâà"
IDS_OPEN_ALL_USERS "&Îòâàðÿíå íà âñè÷êè ïîòðåáèòåëè" IDS_OPEN_ALL_USERS "&Îòâàðÿíå íà âñè÷êè ïîòðåáèòåëè"
IDS_EXPLORE_ALL_USERS "&Ðàçëèñòâàíå íà âñè÷êè ïîòðåáèòåëè" IDS_EXPLORE_ALL_USERS "&Ðàçëèñòâàíå íà âñè÷êè ïîòðåáèòåëè"
IDS_STARTUP_ERROR "The system cannot start explorer because the registry is corrupted or unavailable." IDS_STARTUP_ERROR "Уредбата не може да пусне изследователя, понеже понеже регистърът е увреден или недостъпен."
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE

View file

@ -1,7 +1,7 @@
/* /*
* FILE: base/shell/explorer-new/lang/cs-CZ.rc * FILE: base/shell/explorer-new/lang/cs-CZ.rc
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com) * TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
* UPDATED: 2009-07-15 * UPDATED: 2010-05-31
*/ */
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
@ -126,7 +126,7 @@ BEGIN
IDS_PROPERTIES "Vl&astnosti" IDS_PROPERTIES "Vl&astnosti"
IDS_OPEN_ALL_USERS "Ote&vøít složku All Users" IDS_OPEN_ALL_USERS "Ote&vøít složku All Users"
IDS_EXPLORE_ALL_USERS "Pro&cházet složku All Users" IDS_EXPLORE_ALL_USERS "Pro&cházet složku All Users"
IDS_STARTUP_ERROR "The system cannot start explorer because the registry is corrupted or unavailable." IDS_STARTUP_ERROR "Systém nemohl spustit proces Explorer, protože registry jsou poškozené nebo nedostupné."
END END
STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE

View file

@ -1257,7 +1257,7 @@ HKLM,"SYSTEM\CurrentControlSet\Services\Packet","Type",0x00010001,0x00000001
; PCI Bus driver ; PCI Bus driver
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","ErrorControl",0x00010001,0x00000001 HKLM,"SYSTEM\CurrentControlSet\Services\Pci","ErrorControl",0x00010001,0x00000001
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Group",0x00000000,"Boot Bus HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Group",0x00000000,"Boot Bus "
HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Tag",0x00010001,0x00000002 HKLM,"SYSTEM\CurrentControlSet\Services\Pci","Tag",0x00010001,0x00000002
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","1045C621",0x00030003,04,00,00,00,00,00,00,00 HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","1045C621",0x00030003,04,00,00,00,00,00,00,00
HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","10950640",0x00030003,04,00,00,00,00,00,00,00 HKLM,"SYSTEM\CurrentControlSet\Services\Pci\Parameters","10950640",0x00030003,04,00,00,00,00,00,00,00

View file

@ -445,9 +445,12 @@ ScsiPortConvertPhysicalAddressToUlong(
SCSI_PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS
NTAPI NTAPI
ScsiPortConvertUlongToPhysicalAddress( ScsiPortConvertUlongToPhysicalAddress(
IN ULONG UlongAddress) IN ULONG_PTR UlongAddress)
{ {
return RtlConvertUlongToLargeInteger(UlongAddress); SCSI_PHYSICAL_ADDRESS Address;
Address.QuadPart = UlongAddress;
return Address;
} }
VOID VOID

View file

@ -0,0 +1,149 @@
/* $Id: en-US.rc 49139 2010-10-13 21:23:48Z dreimer $
*
* PROJECT: ReactOS Console Configuration DLL
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/cpl/console/lang/en-US.rc
* PURPOSE: English resource file
* PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at)
*/
#include <commctrl.h>
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
IDD_PROPPAGEOPTIONS DIALOGEX 0, 0, 283, 220
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "Íàñòðîéêè"
FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "Ðàçìåð íà ïîêàçàëåöà", -1, 7, 7, 130, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
CONTROL "&Ìàëúê", IDC_RADIO_SMALL_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 20, 90, 10
CONTROL "&Ñðåäåí", IDC_RADIO_MEDIUM_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 90, 10
CONTROL "&Ãîëÿì", IDC_RADIO_LARGE_CURSOR, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 60, 90, 10
GROUPBOX "Íàñòðîéêè íà åêðàíà", -1, 143, 7, 130, 70, WS_CHILD | WS_VISIBLE | WS_GROUP
CONTROL "&Ïðîçîðåö", IDC_RADIO_DISPLAY_WINDOW, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 20, 70, 10
CONTROL "&Öÿë åêðàí", IDC_RADIO_DISPLAY_FULL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 40, 70, 10
GROUPBOX "Äíåâíèê íà çàïîâåäèòå", -1, 7, 84, 130, 77, WS_CHILD | WS_VISIBLE | WS_GROUP
LTEXT "Ðàçìåð íà &áóôåðà", -1, 14, 101, 70, 12
EDITTEXT IDC_EDIT_BUFFER_SIZE, 90, 97, 30, 15, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_BUFFER_SIZE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 119, 97, 12, 15
LTEXT "&Áðîé áóôåðè", -1, 14, 124, 70, 12
EDITTEXT IDC_EDIT_NUM_BUFFER, 90, 120, 30, 15, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_NUM_BUFFER, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 119, 120, 12, 15
CHECKBOX "Ïðå&ìàõâàíå íà ñòàðèòå áðîéêè", IDC_CHECK_DISCARD_DUPLICATES, 12, 140, 120, 15
GROUPBOX "Ïðîìÿíà íà íàñòðîéêèòå", -1, 143, 85, 130, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP
CHECKBOX "Ðåæèì &áúðçà îáðàáîòêà", IDC_CHECK_QUICK_EDIT, 150, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
CHECKBOX "Ðåæèì &âìúêâàíå", IDC_CHECK_INSERT_MODE, 150, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "Øðèôò"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Ïðîçîðå÷åí ïðåãëåä:", -1, 10, 10, 94, 10
LTEXT "Ðàçìåð:", -1, 180, 10, 36, 10
CONTROL "", IDC_STATIC_FONT_WINDOW_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 10, 20, 163, 74
LISTBOX IDC_LBOX_FONTS, 181, 20, 55, 80, LBS_DISABLENOSCROLL | WS_VSCROLL
LTEXT "&Øðèôò:", -1, 10, 105, 33, 10
CHECKBOX "&Ïîëó÷åðè øðèôòîâå", IDC_CHECK_BOLD_FONTS, 38, 105, 85, 10
LISTBOX IDC_LBOX_TYPE, 10, 120, 110, 40, LBS_DISABLENOSCROLL | WS_VSCROLL
GROUPBOX "", IDC_GROUPBOX_FONT_NAME, 6, 156, 241, 50
CONTROL "", IDC_STATIC_SELECT_FONT_PREVIEW, "Static", SS_OWNERDRAW | SS_SUNKEN, 16, 165, 95, 35
LTEXT "Âñåêè çíàê å:", -1, 124, 166, 75, 10
LTEXT "screen pixel wide\nscreen pixel high", -1, 136, 180, 101, 20 /* íåÿñíî */
LTEXT "", IDC_FONT_SIZE_X, 120, 180, 10, 10
LTEXT "", IDC_FONT_SIZE_Y, 120, 188, 10, 10
END
IDD_PROPPAGELAYOUT DIALOGEX 0, 0, 273, 230
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "Ïîäðåäáà"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Ïðîçîðå÷åí ïðåãëåä", -1, 8, 6, 105, 10
CONTROL "", IDC_STATIC_LAYOUT_WINDOW_PREVIEW, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 16, 115, 70
GROUPBOX "Ðàçìåð íà åêðàííèÿ áóôåð", -1, 130, 12, 135, 50
LTEXT "&Øèðèíà:", -1, 140, 28, 40, 10
LTEXT "&Âèñî÷èíà:", -1, 140, 46, 39, 10
EDITTEXT IDC_EDIT_SCREEN_BUFFER_WIDTH, 203, 25, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 25, 13, 14
EDITTEXT IDC_EDIT_SCREEN_BUFFER_HEIGHT, 203, 42, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_SCREEN_BUFFER_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 42, 13, 14
GROUPBOX "Ðàçìåð íà ïðîçîðåöà", -1, 130, 65, 135, 47
LTEXT "&Ø&èðèíà:", -1, 140, 78, 39, 10
LTEXT "&Âè&ñî÷èíà:", -1, 140, 95, 37, 10
EDITTEXT IDC_EDIT_WINDOW_SIZE_WIDTH, 203, 75, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_WIDTH, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 75, 13, 14
EDITTEXT IDC_EDIT_WINDOW_SIZE_HEIGHT, 203, 92, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_WINDOW_SIZE_HEIGHT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 92, 13, 14
GROUPBOX "Ïîëîæåíèå íà ïðîçîðåöà", -1, 130, 116, 135, 64
LTEXT "Îò&ëÿâî:", -1, 140, 132, 38, 10
LTEXT "Îò&ãîðå:", -1, 140, 149, 40, 10
EDITTEXT IDC_EDIT_WINDOW_POS_LEFT, 203, 128, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_WINDOW_POS_LEFT, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 128, 13, 14
EDITTEXT IDC_EDIT_WINDOW_POS_TOP, 203, 146, 35, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_WINDOW_POS_TOP, UPDOWN_CLASS, UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 238, 146, 13, 14
CHECKBOX "Óðåäáàòà íà&ìåñòâà ïðîçîðåöà", IDC_CHECK_SYSTEM_POS_WINDOW, 137, 165, 118, 10
END
IDD_PROPPAGECOLORS DIALOGEX 0, 0, 253, 220
STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION
CAPTION "Öâåòîâå"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Åêðàíåí &òåêñò", IDC_RADIO_SCREEN_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 12, 112, 10
CONTROL "Åêðàííà ïîä&öâåòêà", IDC_RADIO_SCREEN_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 30, 112, 10
CONTROL "Èç&ñêà÷àù òåêñò", IDC_RADIO_POPUP_TEXT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 48, 112, 10
CONTROL "Èçñêà÷àùà ïîä&öâåòêà", IDC_RADIO_POPUP_BACKGROUND, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 10, 67, 112, 10
GROUPBOX "Èçáðàíè öâåòîâè ñòîéíîñòè", -1, 129, 7, 118, 73
LTEXT "&×åðâåíî:", -1, 140, 25, 48, 10
EDITTEXT IDC_EDIT_COLOR_RED, 210, 22, 30, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_COLOR_RED, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 22, 12, 14
LTEXT "&Çåëåíî:", -1, 140, 42, 48, 10
EDITTEXT IDC_EDIT_COLOR_GREEN, 210, 39, 30, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_COLOR_GREEN, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 39, 12, 14
LTEXT "&Ñèíüî:", -1, 140, 60, 48, 10
EDITTEXT IDC_EDIT_COLOR_BLUE, 210, 56, 30, 14, ES_RIGHT | WS_GROUP
CONTROL "", IDC_UPDOWN_COLOR_BLUE, UPDOWN_CLASS, UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | WS_BORDER | WS_GROUP, 240, 56, 12, 14
CONTROL "", IDC_STATIC_COLOR1, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 17, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR2, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 31, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR3, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 45, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR4, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 59, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR5, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 73, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR6, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 87, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR7, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 101, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR8, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 115, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR9, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 129, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR10, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 143, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR11, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 157, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR12, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 171, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR13, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 185, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR14, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 199, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR15, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 213, 90, 12, 12
CONTROL "", IDC_STATIC_COLOR16, "Static", SS_NOTIFY | SS_SUNKEN | SS_OWNERDRAW, 227, 90, 12, 12
GROUPBOX "Èçáðàíè åêðàííè öâåòîâå:", -1, 7, 111, 240, 40
CONTROL "", IDC_STATIC_SCREEN_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 124, 224, 20
GROUPBOX "Èçáðàíè èçñêà÷àùè öâåòîâå:", -1, 7, 162, 240, 40
CONTROL "", IDC_STATIC_POPUP_COLOR, "Static", SS_OWNERDRAW | SS_SUNKEN, 15, 176, 224, 20
END
IDD_APPLYOPTIONS DIALOGEX 0, 0, 265, 79
STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION
CAPTION "Ïðèëàãàíå íà ñâîéñòâàòà"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "Ïðèëàãàíå íà ñâîéñòâàòà ñàìî çà &òåêóùèÿ ïðîçîðåö", IDC_RADIO_APPLY_CURRENT, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 12, 207, 10
CONTROL "Ïðèëàãàíå íà ñâîéñòâàòà çà áúäåùè ïðîçîðöè ñúñ ñúùîòî çàãëàâèå", IDC_RADIO_APPLY_ALL, "Button", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 31, 247, 10
PUSHBUTTON "Äîáðå", IDOK, 58, 58, 50, 14, WS_VISIBLE
PUSHBUTTON "Îòêàç", IDCANCEL, 114, 58, 50, 14, WS_VISIBLE
END
STRINGTABLE
BEGIN
IDS_CPLNAME "Êîíçîëà"
IDS_CPLDESCRIPTION "Íàñòðîéêà íà êîíçîëàòà."
IDS_APPLY_SHORTCUT_ALL "Ïðîìÿíà íà &ïðåïðàòêàòà, çàïóñíàëà òîçè ïðîçîðåö"
IDS_SCREEN_TEXT "C:\\ReactOS> dir\nSYSTEM <DIR> 10-01-99 5:00\nSYSTEM32 <DIR> 10-01-99 5:00"
IDS_RASTERFONTS "Ðåøåòú÷íè øðèôòîâå"
END

Some files were not shown because too many files have changed in this diff Show more