Skip to content

Commit eb0ebc3

Browse files
committed
add sha3 support, closes idrassi#3
* also improve file type detection This is the "Optimized64" implementation from the Keccak Code Package. The KCP is available from: https://github.com/gvanas/KeccakCodePackage
1 parent c8c09a8 commit eb0ebc3

23 files changed

+4160
-83
lines changed

HashCheck.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,6 @@ HANDLE g_hActCtx;
2727
// Major and minor Windows version (declared as extern in globals.h)
2828
UINT16 g_uWinVer;
2929

30-
// File extensions to associate with
31-
static const LPCTSTR ASSOCIATIONS[] =
32-
{
33-
TEXT(".sfv"),
34-
TEXT(".md4"),
35-
TEXT(".md5"),
36-
TEXT(".sha1"),
37-
TEXT(".sha256"),
38-
TEXT(".sha512"),
39-
TEXT(".asc")
40-
};
41-
4230
// Prototypes for the self-registration/install/uninstall helper functions
4331
STDAPI DllRegisterServerEx( LPCTSTR );
4432
HRESULT Install( BOOL, BOOL );
@@ -186,7 +174,7 @@ STDAPI DllRegisterServerEx( LPCTSTR lpszModuleName )
186174
RegCloseKey(hKey);
187175
} else return(SELFREG_E_CLASS);
188176

189-
// The actual association of .sfv/.md4/.md5/.sha1/.sha256/.sha512/.asc files with our program ID
177+
// The actual association of .sfv/.md5/.sha1/.sha256/.sha512/.sha3-256/.sha3-512/.asc files with our program ID
190178
// will be handled by DllInstall, not DllRegisterServer.
191179

192180
// Register approval

HashCheck.rc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,10 @@ IDD_OPTIONS DIALOGEX 10, 10, 200, 264
131131
AUTOCHECKBOX "C&RC-32",IDC_OPT_CHK_CRC32, 13, 150, 54, 10, WS_TABSTOP
132132
AUTOCHECKBOX "MD5",IDC_OPT_CHK_MD5, 13, 164, 54, 10, WS_TABSTOP
133133
AUTOCHECKBOX "SHA-1",IDC_OPT_CHK_SHA1, 13, 178, 54, 10, WS_TABSTOP
134-
AUTOCHECKBOX "SHA-256",IDC_OPT_CHK_SHA256, 100, 150, 54, 10, WS_TABSTOP
135-
AUTOCHECKBOX "SHA-512",IDC_OPT_CHK_SHA512, 100, 164, 54, 10, WS_TABSTOP
134+
AUTOCHECKBOX "SHA-256",IDC_OPT_CHK_SHA256, 73, 150, 54, 10, WS_TABSTOP
135+
AUTOCHECKBOX "SHA-512",IDC_OPT_CHK_SHA512, 73, 164, 54, 10, WS_TABSTOP
136+
AUTOCHECKBOX "SHA3-256",IDC_OPT_CHK_SHA3_256,133,150, 54, 10, WS_TABSTOP
137+
AUTOCHECKBOX "SHA3-512",IDC_OPT_CHK_SHA3_512,133,164, 54, 10, WS_TABSTOP
136138
GROUPBOX "", IDC_OPT_FONT, 7, 202, 186, 34, WS_GROUP
137139
CTEXT "", IDC_OPT_FONT_PREVIEW, 13, 215, 100, 14, SS_CENTERIMAGE | SS_SUNKEN
138140
PUSHBUTTON "", IDC_OPT_FONT_CHANGE, 117, 215, 70, 14, WS_TABSTOP

HashCheck.vcxproj

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@
131131
<ClCompile>
132132
<Optimization>MaxSpeed</Optimization>
133133
<IntrinsicFunctions>true</IntrinsicFunctions>
134-
<PreprocessorDefinitions>WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
134+
<PreprocessorDefinitions>WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
135135
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
136136
<FunctionLevelLinking>true</FunctionLevelLinking>
137137
<WarningLevel>Level3</WarningLevel>
@@ -155,7 +155,7 @@
155155
<ClCompile>
156156
<Optimization>MaxSpeed</Optimization>
157157
<IntrinsicFunctions>true</IntrinsicFunctions>
158-
<PreprocessorDefinitions>_TIMED;WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
158+
<PreprocessorDefinitions>_TIMED;WIN32;__i386__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
159159
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
160160
<FunctionLevelLinking>true</FunctionLevelLinking>
161161
<WarningLevel>Level3</WarningLevel>
@@ -179,7 +179,7 @@
179179
<ClCompile>
180180
<Optimization>MaxSpeed</Optimization>
181181
<IntrinsicFunctions>true</IntrinsicFunctions>
182-
<PreprocessorDefinitions>WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
182+
<PreprocessorDefinitions>WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
183183
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
184184
<FunctionLevelLinking>true</FunctionLevelLinking>
185185
<WarningLevel>Level3</WarningLevel>
@@ -203,7 +203,7 @@
203203
<ClCompile>
204204
<Optimization>MaxSpeed</Optimization>
205205
<IntrinsicFunctions>true</IntrinsicFunctions>
206-
<PreprocessorDefinitions>_TIMED;WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
206+
<PreprocessorDefinitions>_TIMED;WIN64;__amd64__;NDEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
207207
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
208208
<FunctionLevelLinking>true</FunctionLevelLinking>
209209
<WarningLevel>Level3</WarningLevel>
@@ -226,7 +226,7 @@
226226
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
227227
<ClCompile>
228228
<Optimization>Disabled</Optimization>
229-
<PreprocessorDefinitions>WIN32;__i386__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
229+
<PreprocessorDefinitions>WIN32;__i386__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
230230
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
231231
<WarningLevel>Level3</WarningLevel>
232232
<SDLCheck>true</SDLCheck>
@@ -245,7 +245,7 @@
245245
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
246246
<ClCompile>
247247
<Optimization>Disabled</Optimization>
248-
<PreprocessorDefinitions>WIN64;__amd64__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
248+
<PreprocessorDefinitions>WIN64;__amd64__;_DEBUG;_WINDOWS;_UNICODE;UNICODE;_USRDLL;_WIN32_WINNT=0x0600;SL_ENABLE_LGBLK;SL_SMBLK_SIZE=0x1000;BYTE_ORDER=LITTLE_ENDIAN;KeccakP200_excluded;KeccakP400_excluded;KeccakP800_excluded;%(PreprocessorDefinitions)</PreprocessorDefinitions>
249249
<MinimalRebuild>true</MinimalRebuild>
250250
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
251251
<WarningLevel>Level3</WarningLevel>
@@ -277,6 +277,9 @@
277277
<ClCompile Include="libs\md5.c" />
278278
<ClCompile Include="libs\sha1.c" />
279279
<ClCompile Include="libs\sha2.c" />
280+
<ClCompile Include="libs\sha3\KeccakHash.c" />
281+
<ClCompile Include="libs\sha3\KeccakP-1600-opt64.c" />
282+
<ClCompile Include="libs\sha3\KeccakSponge.c" />
280283
<ClCompile Include="libs\SimpleList.c" />
281284
<ClCompile Include="libs\SimpleString.c" />
282285
<ClCompile Include="libs\WinHash.cpp" />
@@ -302,6 +305,7 @@
302305
<ClInclude Include="HashCheckUI.h" />
303306
<ClInclude Include="IsSSD.h" />
304307
<ClInclude Include="libs\IsFontAvailable.h" />
308+
<ClInclude Include="libs\sha3\KeccakHash.h" />
305309
<ClInclude Include="libs\SimpleList.h" />
306310
<ClInclude Include="libs\SimpleString.h" />
307311
<ClInclude Include="libs\BitwiseIntrinsics.h" />

HashCheck.vcxproj.filters

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
<Filter Include="Libraries">
1717
<UniqueIdentifier>{3d06f958-2b36-4a2d-a5a9-c4e7445f5196}</UniqueIdentifier>
1818
</Filter>
19+
<Filter Include="Libraries\sha3">
20+
<UniqueIdentifier>{10750838-6937-43da-bede-5de87aa2ff94}</UniqueIdentifier>
21+
</Filter>
1922
</ItemGroup>
2023
<ItemGroup>
2124
<ClCompile Include="HashCheck.cpp">
@@ -84,6 +87,15 @@
8487
<ClCompile Include="HashVerify.cpp">
8588
<Filter>Source Files</Filter>
8689
</ClCompile>
90+
<ClCompile Include="libs\sha3\KeccakHash.c">
91+
<Filter>Libraries\sha3</Filter>
92+
</ClCompile>
93+
<ClCompile Include="libs\sha3\KeccakP-1600-opt64.c">
94+
<Filter>Libraries\sha3</Filter>
95+
</ClCompile>
96+
<ClCompile Include="libs\sha3\KeccakSponge.c">
97+
<Filter>Libraries\sha3</Filter>
98+
</ClCompile>
8799
</ItemGroup>
88100
<ItemGroup>
89101
<None Include="HashCheck.def">
@@ -157,6 +169,9 @@
157169
<ClInclude Include="IsSSD.h">
158170
<Filter>Header Files</Filter>
159171
</ClInclude>
172+
<ClInclude Include="libs\sha3\KeccakHash.h">
173+
<Filter>Libraries\sha3</Filter>
174+
</ClInclude>
160175
</ItemGroup>
161176
<ItemGroup>
162177
<ResourceCompile Include="HashCheck.rc">

HashCheckResources.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
#define IDC_OPT_CHK_SHA1 512
5757
#define IDC_OPT_CHK_SHA256 513
5858
#define IDC_OPT_CHK_SHA512 514
59-
#define IDC_OPT_FONT 515
60-
#define IDC_OPT_FONT_CHANGE 516
61-
#define IDC_OPT_FONT_PREVIEW 517
59+
#define IDC_OPT_CHK_SHA3_256 515
60+
#define IDC_OPT_CHK_SHA3_512 516
61+
#define IDC_OPT_FONT 517
62+
#define IDC_OPT_FONT_CHANGE 518
63+
#define IDC_OPT_FONT_PREVIEW 519

HashCheckTranslations.rc

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ STRINGTABLE LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
3232
IDS_HP_FIND_NOTFOUND "Text not found."
3333
IDS_HP_SAVE "&Save..."
3434
IDS_HP_OPTIONS "&Options"
35-
IDS_HP_FILELABEL " File: " // should have the same width as "SHA-256: "; may translate "Name" if "File" is too long
35+
IDS_HP_FILELABEL " File: " // should have the same width as "SHA3-256: "; may translate "Name" if "File" is too long
3636

3737
// Strings used exclusively in the HashVerify module
3838
IDS_HV_LOADERROR_FMT "Cannot load ""%s""" // %s == name of the checksum file
@@ -92,7 +92,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
9292
IDS_HP_FIND_NOTFOUND "未找到文字。"
9393
IDS_HP_SAVE "儲存(&S)..."
9494
IDS_HP_OPTIONS "選項(&O)"
95-
IDS_HP_FILELABEL " File: " // alternatively, "  檔案: "
95+
IDS_HP_FILELABEL " File: " // alternatively, "  檔案: "
9696

9797
IDS_HV_LOADERROR_FMT "無法載入 ""%s"""
9898
IDS_HV_SUMMARY "摘要"
@@ -150,7 +150,7 @@ STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
150150
IDS_HP_FIND_NOTFOUND "未找到文本。"
151151
IDS_HP_SAVE "保存(&S)..."
152152
IDS_HP_OPTIONS "选项(&O)"
153-
IDS_HP_FILELABEL " File: " // alternatively, "  文件: "
153+
IDS_HP_FILELABEL " File: " // alternatively, "  文件: "
154154

155155
IDS_HV_LOADERROR_FMT "无法载入 ""%s"""
156156
IDS_HV_SUMMARY "摘要"
@@ -208,7 +208,7 @@ STRINGTABLE LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
208208
IDS_HP_FIND_NOTFOUND "Text nenalezen."
209209
IDS_HP_SAVE "&Ulož..."
210210
IDS_HP_OPTIONS "&Nastavení"
211-
IDS_HP_FILELABEL " Soubor: "
211+
IDS_HP_FILELABEL " Soubor: "
212212

213213
IDS_HV_LOADERROR_FMT "Nemohu načíst ""%s"""
214214
IDS_HV_SUMMARY "Souhrn"
@@ -266,7 +266,7 @@ STRINGTABLE LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
266266
IDS_HP_FIND_NOTFOUND "Text nicht gefunden."
267267
IDS_HP_SAVE "&Speichern..."
268268
IDS_HP_OPTIONS "&Optionen"
269-
IDS_HP_FILELABEL " Datei: "
269+
IDS_HP_FILELABEL " Datei: "
270270

271271
IDS_HV_LOADERROR_FMT "Kann ""%s"" nicht öffnen"
272272
IDS_HV_SUMMARY "Report"
@@ -324,7 +324,7 @@ STRINGTABLE LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
324324
IDS_HP_FIND_NOTFOUND "Δεν βρέθηκε κείμενο."
325325
IDS_HP_SAVE "&Αποθήκευση"
326326
IDS_HP_OPTIONS "&Επιλογές"
327-
IDS_HP_FILELABEL " Αρχείο: "
327+
IDS_HP_FILELABEL " Αρχείο: "
328328

329329
IDS_HV_LOADERROR_FMT "Αδύνατο το φόρτωμα του «%s»"
330330
IDS_HV_SUMMARY "Σύνοψη"
@@ -382,7 +382,7 @@ STRINGTABLE LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
382382
IDS_HP_FIND_NOTFOUND "Texto no encontrado."
383383
IDS_HP_SAVE "&Guardar..."
384384
IDS_HP_OPTIONS "&Opciones"
385-
IDS_HP_FILELABEL " Nombre: "
385+
IDS_HP_FILELABEL " Nombre: "
386386

387387
IDS_HV_LOADERROR_FMT "No se puede abrir ""%s"""
388388
IDS_HV_SUMMARY "Resumen"
@@ -440,7 +440,7 @@ STRINGTABLE LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
440440
IDS_HP_FIND_NOTFOUND "Texte non trouvé."
441441
IDS_HP_SAVE "&Enregistrer"
442442
IDS_HP_OPTIONS "&Options"
443-
IDS_HP_FILELABEL " Nom: "
443+
IDS_HP_FILELABEL " Nom: "
444444

445445
IDS_HV_LOADERROR_FMT "Impossible de charger ""%s"""
446446
IDS_HV_SUMMARY "Résumé"
@@ -498,7 +498,7 @@ STRINGTABLE LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
498498
IDS_HP_FIND_NOTFOUND "Testo non trovato."
499499
IDS_HP_SAVE "&Salva..."
500500
IDS_HP_OPTIONS "&Opzioni"
501-
IDS_HP_FILELABEL " File: "
501+
IDS_HP_FILELABEL " File: "
502502

503503
IDS_HV_LOADERROR_FMT "Impossibile caricare ""%s"""
504504
IDS_HV_SUMMARY "Sommario"
@@ -556,7 +556,7 @@ STRINGTABLE LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
556556
IDS_HP_FIND_NOTFOUND "指定したキーワードは見つかりません。"
557557
IDS_HP_SAVE "保存(&S)..."
558558
IDS_HP_OPTIONS "オプション(&O)"
559-
IDS_HP_FILELABEL " File: " // alternatively, " ファイル: "
559+
IDS_HP_FILELABEL " File: " // alternatively, " ファイル: "
560560

561561
IDS_HV_LOADERROR_FMT """%s"" の読み込みに失敗します"
562562
IDS_HV_SUMMARY "概略"
@@ -614,7 +614,7 @@ STRINGTABLE LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
614614
IDS_HP_FIND_NOTFOUND "찾지 못했습니다."
615615
IDS_HP_SAVE "저장(&S)..."
616616
IDS_HP_OPTIONS "옵션(&O)"
617-
IDS_HP_FILELABEL " File: "
617+
IDS_HP_FILELABEL " File: "
618618

619619
IDS_HV_LOADERROR_FMT """%s"" 불러올 수 없음"
620620
IDS_HV_SUMMARY "요약"
@@ -672,7 +672,7 @@ STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
672672
IDS_HP_FIND_NOTFOUND "Zoektekst niet gevonden."
673673
IDS_HP_SAVE "Op&slaan..."
674674
IDS_HP_OPTIONS "&Opties"
675-
IDS_HP_FILELABEL " Naam: "
675+
IDS_HP_FILELABEL " Naam: "
676676

677677
IDS_HV_LOADERROR_FMT "Kan ""%s"" niet openen"
678678
IDS_HV_SUMMARY "Samenvatting"
@@ -730,7 +730,7 @@ STRINGTABLE LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
730730
IDS_HP_FIND_NOTFOUND "Tekst nieodnaleziony."
731731
IDS_HP_SAVE "&Zapisz..."
732732
IDS_HP_OPTIONS "&Opcje"
733-
IDS_HP_FILELABEL " Plik: "
733+
IDS_HP_FILELABEL " Plik: "
734734

735735
IDS_HV_LOADERROR_FMT "Nie mogę wczytać ""%s"""
736736
IDS_HV_SUMMARY "Sumowanie"
@@ -788,7 +788,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
788788
IDS_HP_FIND_NOTFOUND "Texto náo encontrado."
789789
IDS_HP_SAVE "&Salvar..."
790790
IDS_HP_OPTIONS "&Opções"
791-
IDS_HP_FILELABEL " Nome: "
791+
IDS_HP_FILELABEL " Nome: "
792792

793793
IDS_HV_LOADERROR_FMT "Impossível carregar ""%s"""
794794
IDS_HV_SUMMARY "Sumário"
@@ -846,7 +846,7 @@ STRINGTABLE LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
846846
IDS_HP_FIND_NOTFOUND "Texto não encontrado."
847847
IDS_HP_SAVE "&Guardar..."
848848
IDS_HP_OPTIONS "&Opções"
849-
IDS_HP_FILELABEL " Nome: "
849+
IDS_HP_FILELABEL " Nome: "
850850

851851
IDS_HV_LOADERROR_FMT "Impossível carregar ""%s"""
852852
IDS_HV_SUMMARY "Summário"
@@ -904,7 +904,7 @@ STRINGTABLE LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
904904
IDS_HP_FIND_NOTFOUND "Text negăsit."
905905
IDS_HP_SAVE "&Salvare..."
906906
IDS_HP_OPTIONS "Optiu&ni"
907-
IDS_HP_FILELABEL " Fişier: "
907+
IDS_HP_FILELABEL " Fişier: "
908908

909909
IDS_HV_LOADERROR_FMT "Nu pot încărca ""%s"""
910910
IDS_HV_SUMMARY "Sumar"
@@ -962,7 +962,7 @@ STRINGTABLE LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
962962
IDS_HP_FIND_NOTFOUND "Текст не найден."
963963
IDS_HP_SAVE "&Сохранить..."
964964
IDS_HP_OPTIONS "&Опции"
965-
IDS_HP_FILELABEL " Файл: "
965+
IDS_HP_FILELABEL " Файл: "
966966

967967
IDS_HV_LOADERROR_FMT "Невозможно открыть ""%s"""
968968
IDS_HV_SUMMARY "Результаты"
@@ -1020,7 +1020,7 @@ STRINGTABLE LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
10201020
IDS_HP_FIND_NOTFOUND "Sökord ej funnet."
10211021
IDS_HP_SAVE "&Spara..."
10221022
IDS_HP_OPTIONS "&Inställningar"
1023-
IDS_HP_FILELABEL " Fil: "
1023+
IDS_HP_FILELABEL " Fil: "
10241024

10251025
IDS_HV_LOADERROR_FMT "Kan ej ladda ""%s"""
10261026
IDS_HV_SUMMARY "Summering"
@@ -1078,7 +1078,7 @@ STRINGTABLE LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
10781078
IDS_HP_FIND_NOTFOUND "Metin bulunamadı."
10791079
IDS_HP_SAVE "&Kaydet..."
10801080
IDS_HP_OPTIONS "&Özellikler"
1081-
IDS_HP_FILELABEL " Dosya: "
1081+
IDS_HP_FILELABEL " Dosya: "
10821082

10831083
IDS_HV_LOADERROR_FMT """%s"" açılamıyor"
10841084
IDS_HV_SUMMARY "Özet"
@@ -1136,7 +1136,7 @@ STRINGTABLE LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
11361136
IDS_HP_FIND_NOTFOUND "Текст не знайдений."
11371137
IDS_HP_SAVE "&Зберегти..."
11381138
IDS_HP_OPTIONS "&Опції"
1139-
IDS_HP_FILELABEL " Файл: "
1139+
IDS_HP_FILELABEL " Файл: "
11401140

11411141
IDS_HV_LOADERROR_FMT "Неможливо відкрити ""%s"""
11421142
IDS_HV_SUMMARY "Результати"
@@ -1194,7 +1194,7 @@ STRINGTABLE LANGUAGE LANG_CATALAN, SUBLANG_CATALAN_CATALAN
11941194
IDS_HP_FIND_NOTFOUND "No s'ha trobat el text."
11951195
IDS_HP_SAVE "&Desa..."
11961196
IDS_HP_OPTIONS "&Opcions"
1197-
IDS_HP_FILELABEL " Fitxer: "
1197+
IDS_HP_FILELABEL " Fitxer: "
11981198

11991199
IDS_HV_LOADERROR_FMT "No es pot carregar ""%s"""
12001200
IDS_HV_SUMMARY "Resum"

0 commit comments

Comments
 (0)