mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 20:18:22 +00:00
Sync xcopy, iexplore, winhlp32, wordpad and write to wine 1.3.10
svn path=/trunk/; revision=50150
This commit is contained in:
parent
07bf61809e
commit
8354381c8b
15 changed files with 550 additions and 205 deletions
|
@ -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"
|
||||||
|
|
|
@ -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\
|
||||||
|
|
141
reactos/base/applications/cmdutils/xcopy/Sr.rc
Normal file
141
reactos/base/applications/cmdutils/xcopy/Sr.rc
Normal 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"
|
||||||
|
|
||||||
|
}
|
|
@ -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"
|
||||||
|
|
|
@ -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,126 +126,17 @@ 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));
|
return RC_OK;
|
||||||
|
else
|
||||||
/* First non-switch parameter is source, second is destination */
|
return rc;
|
||||||
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;
|
|
||||||
default:
|
|
||||||
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(*argvW));
|
|
||||||
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");
|
||||||
WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource));
|
WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource));
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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? */
|
||||||
|
|
|
@ -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);
|
||||||
|
|
38
reactos/base/applications/write/Sr.rc
Normal file
38
reactos/base/applications/write/Sr.rc
Normal 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"
|
||||||
|
}
|
31
reactos/base/applications/write/Zh.rc
Normal file
31
reactos/base/applications/write/Zh.rc
Normal 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, "启动写字板失败"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue