mirror of
https://github.com/pbatard/rufus.git
synced 2026-02-04 03:27:14 -06:00
Compare commits
106 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cac828621a | ||
|
|
fb9dd17fe6 | ||
|
|
460cc5768a | ||
|
|
de12649c99 | ||
|
|
6e5bd4424f | ||
|
|
913fd56fb5 | ||
|
|
06c2924296 | ||
|
|
1efb25b06b | ||
|
|
46f9c9ec60 | ||
|
|
385cb93744 | ||
|
|
2476a92d70 | ||
|
|
79b0425c57 | ||
|
|
2fa14b0d45 | ||
|
|
3607f5cec8 | ||
|
|
fec6051000 | ||
|
|
be95fd0e00 | ||
|
|
a8c745d2a9 | ||
|
|
6a7fb939d5 | ||
|
|
c4d6a00c28 | ||
|
|
2af24e460e | ||
|
|
b2fd426028 | ||
|
|
d755303a10 | ||
|
|
9d074f8591 | ||
|
|
6629ef0941 | ||
|
|
af58b1cecd | ||
|
|
05526d4e6a | ||
|
|
920a4c5c90 | ||
|
|
90370405ad | ||
|
|
fda1362eb0 | ||
|
|
10694ae42e | ||
|
|
56b4b9f249 | ||
|
|
2a8c066b72 | ||
|
|
bb11c037d7 | ||
|
|
0de4db13d8 | ||
|
|
6a1c2b4087 | ||
|
|
1c201cc01f | ||
|
|
329e9705e2 | ||
|
|
3619bad538 | ||
|
|
1740def709 | ||
|
|
3ec2ac3aab | ||
|
|
10fc6727da | ||
|
|
7b8ddbe3ec | ||
|
|
99c04a9f46 | ||
|
|
8ec08c1f9e | ||
|
|
00f7bd193f | ||
|
|
e43d6bbc8a | ||
|
|
c93793092a | ||
|
|
1a4175891b | ||
|
|
3bbdd6624e | ||
|
|
c6a85b09ae | ||
|
|
e571996525 | ||
|
|
a2dd380e93 | ||
|
|
a8901f5e58 | ||
|
|
8cf88ffe7a | ||
|
|
446e71f56d | ||
|
|
94a2c7c2fb | ||
|
|
170440e51c | ||
|
|
e9f451dfe0 | ||
|
|
9a32dba290 | ||
|
|
3791b96fcd | ||
|
|
e128727521 | ||
|
|
d06b729659 | ||
|
|
dab438d814 | ||
|
|
fe9b137902 | ||
|
|
688f011f31 | ||
|
|
207a330979 | ||
|
|
be5642ef33 | ||
|
|
bb8f231c07 | ||
|
|
87efc7642a | ||
|
|
01d18d99de | ||
|
|
4adfa4f37e | ||
|
|
13c6becf42 | ||
|
|
965759f58a | ||
|
|
ea01cd41c0 | ||
|
|
2470c56c7e | ||
|
|
5d35a0f1fa | ||
|
|
96996ae1ee | ||
|
|
c288f2fe57 | ||
|
|
9f7d623e2e | ||
|
|
1ed92072b8 | ||
|
|
e60dd7edb8 | ||
|
|
c31df87732 | ||
|
|
b895f26ebc | ||
|
|
88f023e796 | ||
|
|
7ff68dc7af | ||
|
|
871bc9a25f | ||
|
|
fdde687d46 | ||
|
|
845d26e3b6 | ||
|
|
df4f8301d7 | ||
|
|
bc75274a9a | ||
|
|
7585a35c2c | ||
|
|
9540ca359d | ||
|
|
622e60659c | ||
|
|
50801a47ff | ||
|
|
f3c29bf537 | ||
|
|
ec604f43d6 | ||
|
|
d910441427 | ||
|
|
1c300b428a | ||
|
|
1e2f1c1aff | ||
|
|
3d5ab84ec1 | ||
|
|
8d1ed44e1e | ||
|
|
79f1209ab9 | ||
|
|
8f3a9c1c7c | ||
|
|
cef7a5cb0c | ||
|
|
fcdde3dcb8 | ||
|
|
37e383ade6 |
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1 @@
|
||||
blank_issues_enabled: false
|
||||
@ -1,48 +1,57 @@
|
||||
<!--
|
||||
PLEASE READ THIS CAREFULLY:
|
||||
|
||||
1. You *MUST* read and complete the steps from the checklist below, by placing
|
||||
an x into each [ ] (so that it shows '[x]', NOT '[ x]' or '[x ]'), BEFORE
|
||||
clicking on 'Submit new issue'.
|
||||
|
||||
2. Failure to perform these steps, WHICH ARE ONLY THERE TO HELP *YOU*, will
|
||||
usually result in your issue being dismissed without notice.
|
||||
|
||||
3. If you are reporting an issue when trying to run Rufus, or when trying to
|
||||
boot a media created by Rufus, you *MUST* provide a log, period. Please do
|
||||
not assume that the developer(s) will be able to "guess" the specifics of
|
||||
your environment, what image you used, what type of media you used it with
|
||||
or the many many other critical parameters that the log provides data for.
|
||||
To investigate an issue, a log from Rufus is ALWAYS required.
|
||||
|
||||
4. If you still *choose* not to provide a log when reporting a problem, you
|
||||
agree that your issue will be closed without any further investigation.
|
||||
|
||||
YOU HAVE BEEN WARNED.
|
||||
-->
|
||||
|
||||
Checklist
|
||||
---------
|
||||
- [ ] I have been made aware that if my problem can be summarized as _"I've created or tried to create a media using Rufus, and ..."_, and I am not including a log, **this issue will be summarily closed**.
|
||||
- [ ] I looked at https://github.com/pbatard/rufus/wiki/FAQ to see if my question has already been answered.
|
||||
- [ ] I performed a search in the issue tracker for similar issues using keywords relevant to my problem, such as the error message I got from the log.
|
||||
- [ ] I clicked the 'Log' button (🗒️) or pressed <kbd>Ctrl</kbd>-<kbd>L</kbd> in Rufus, or used [DebugView](https://learn.microsoft.com/en-us/sysinternals/downloads/debugview), and copy/pasted the log into the section that says `<FULL LOG>` below.
|
||||
- [ ] The log I am copying is the FULL log, starting with the line `Rufus version: x.y.z` - I have NOT removed any part of it.
|
||||
|
||||
Additionally (if applicable):
|
||||
- [ ] I ran a bad blocks check, by clicking _Show advanced format options_ then _Check device for bad blocks_, and confirmed that my USB is not defective.
|
||||
- [ ] I also tried one or more of the following:
|
||||
- [ ] Using a different USB drive.
|
||||
- [ ] Plugging the USB into a different port.
|
||||
- [ ] Running Rufus on a different computer.
|
||||
- [ ] If using an image, I clicked on the `(✓)` button to compute the MD5, SHA1 and SHA256 checksums, which are therefore present in the log I copied. I confirmed, by performing an internet search, that these values match the ones from the official image.
|
||||
|
||||
Issue description
|
||||
-----------------
|
||||
<Please describe your issue here>
|
||||
|
||||
Log
|
||||
---
|
||||
```
|
||||
<FULL LOG>
|
||||
```
|
||||
---
|
||||
name: Report an issue with the application
|
||||
about: Please make sure you follow the check-list carefully!
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
PLEASE READ THIS CAREFULLY:
|
||||
|
||||
1. You *MUST* read and complete the steps from the checklist below, by placing
|
||||
an x into each [ ] (so that it shows '[x]', NOT '[ x]' or '[x ]'), BEFORE
|
||||
clicking on 'Submit new issue'.
|
||||
|
||||
2. Failure to perform these steps, WHICH ARE ONLY THERE TO HELP *YOU*, will
|
||||
usually result in your issue being dismissed without notice.
|
||||
|
||||
3. If you are reporting an issue when trying to run Rufus, or when trying to
|
||||
boot a media created by Rufus, you *MUST* provide a log, period. Please do
|
||||
not assume that the developer(s) will be able to "guess" the specifics of
|
||||
your environment, what image you used, what type of media you used it with
|
||||
or the many many other critical parameters that the log provides data for.
|
||||
To investigate an issue, a log from Rufus is ALWAYS required.
|
||||
|
||||
4. If you still *choose* not to provide a log when reporting a problem, you
|
||||
agree that your issue will be closed without any further investigation.
|
||||
|
||||
YOU HAVE BEEN WARNED.
|
||||
-->
|
||||
|
||||
Checklist
|
||||
---------
|
||||
- [ ] I have been made aware that if my problem can be summarized as _"I've created or tried to create a media using Rufus, and ..."_, and I am not including a log, **this issue will be summarily closed**.
|
||||
- [ ] I looked at https://github.com/pbatard/rufus/wiki/FAQ to see if my question has already been answered.
|
||||
- [ ] I performed a search in the issue tracker for similar issues using keywords relevant to my problem, such as the error message I got from the log.
|
||||
- [ ] I clicked the 'Log' button (🗒️) or pressed <kbd>Ctrl</kbd>-<kbd>L</kbd> in Rufus, or used [DebugView](https://learn.microsoft.com/en-us/sysinternals/downloads/debugview), and copy/pasted the log into the section that says `<FULL LOG>` below.
|
||||
- [ ] The log I am copying is the FULL log, starting with the line `Rufus version: x.y.z` - I have NOT removed any part of it.
|
||||
|
||||
Additionally (if applicable):
|
||||
- [ ] I ran a bad blocks check, by clicking _Show advanced format options_ then _Check device for bad blocks_, and confirmed that my USB is not defective.
|
||||
- [ ] I also tried one or more of the following:
|
||||
- [ ] Using a different USB drive.
|
||||
- [ ] Plugging the USB into a different port.
|
||||
- [ ] Running Rufus on a different computer.
|
||||
- [ ] If using an image, I clicked on the `(✓)` button to compute the MD5, SHA1 and SHA256 checksums, which are therefore present in the log I copied. I confirmed, by performing an internet search, that these values match the ones from the official image.
|
||||
|
||||
Issue description
|
||||
-----------------
|
||||
<Please describe your issue here>
|
||||
|
||||
Log
|
||||
---
|
||||
```
|
||||
<FULL LOG>
|
||||
```
|
||||
7
.github/workflows/codeql.yml
vendored
7
.github/workflows/codeql.yml
vendored
@ -4,6 +4,7 @@ on:
|
||||
push:
|
||||
branches: [master]
|
||||
paths-ignore:
|
||||
- '.github/ISSUE_TEMPLATE/**'
|
||||
- '.gitignore'
|
||||
- '.gitattributes'
|
||||
- 'res/**'
|
||||
@ -40,10 +41,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: cpp
|
||||
|
||||
@ -56,4 +57,4 @@ jobs:
|
||||
run: msbuild ${{env.SOLUTION_FILE_PATH}} /m /p:Configuration=${{ env.BUILD_CONFIGURATION}},Platform=${{ env.TARGET_PLATFORM }}
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@v4
|
||||
|
||||
5
.github/workflows/coverity.yml
vendored
5
.github/workflows/coverity.yml
vendored
@ -4,6 +4,7 @@ on:
|
||||
push:
|
||||
branches: [master]
|
||||
paths-ignore:
|
||||
- '.github/ISSUE_TEMPLATE/**'
|
||||
- '.gitignore'
|
||||
- '.gitattributes'
|
||||
- 'res/**'
|
||||
@ -27,7 +28,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
@ -52,7 +53,7 @@ jobs:
|
||||
cov-build.exe --dir cov-int msbuild ${{ env.SOLUTION_FILE_PATH }} /m /p:Configuration=${{ env.BUILD_CONFIGURATION }},Platform=${{ env.TARGET_PLATFORM }}
|
||||
|
||||
- name: Publish Coverity artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: cov-int
|
||||
path: cov-int/
|
||||
|
||||
24
.github/workflows/mingw.yml
vendored
24
.github/workflows/mingw.yml
vendored
@ -3,6 +3,7 @@ name: MinGW
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.github/ISSUE_TEMPLATE/**'
|
||||
- '.gitignore'
|
||||
- '.gitattributes'
|
||||
- 'res/**'
|
||||
@ -53,7 +54,7 @@ jobs:
|
||||
upx
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
@ -84,6 +85,23 @@ jobs:
|
||||
strip ./${{ matrix.exe }}
|
||||
upx --lzma --best ./${{ matrix.exe }}
|
||||
|
||||
- name: Prepare to sign ALPHA
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
shell: bash
|
||||
# NB: The Base64 encoded variable should not have line breaks or this will fail!
|
||||
run: echo ${{ secrets.RUFUS_GITHUB_OFFICIAL_BUILD }} | base64 -di > ./sign.pfx
|
||||
|
||||
- name: Add signtool to path
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
uses: KamaranL/add-signtool-action@v1
|
||||
|
||||
- name: Sign ALPHA
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
shell: cmd
|
||||
run: |
|
||||
signtool sign /v /f sign.pfx /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 ${{ matrix.exe }}
|
||||
del sign.pfx
|
||||
|
||||
- name: Display SHA-256
|
||||
run: sha256sum ./${{ matrix.exe }}
|
||||
|
||||
@ -96,7 +114,7 @@ jobs:
|
||||
|
||||
- name: Upload artifacts
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ matrix.sys }}
|
||||
path: ./*.exe
|
||||
@ -106,7 +124,7 @@ jobs:
|
||||
needs: MinGW-Build
|
||||
steps:
|
||||
- name: Merge Artifacts
|
||||
uses: actions/upload-artifact/merge@v4
|
||||
uses: actions/upload-artifact/merge@v6
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
with:
|
||||
name: MinGW
|
||||
|
||||
6
.github/workflows/setup.yml
vendored
6
.github/workflows/setup.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
@ -36,7 +36,7 @@ jobs:
|
||||
run: sha256sum ./setup_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: ${{ matrix.TARGET_PLATFORM }}
|
||||
path: ./*.exe
|
||||
@ -46,7 +46,7 @@ jobs:
|
||||
needs: VS2022-Build
|
||||
steps:
|
||||
- name: Merge Artifacts
|
||||
uses: actions/upload-artifact/merge@v4
|
||||
uses: actions/upload-artifact/merge@v5
|
||||
with:
|
||||
name: setup
|
||||
delete-merged: true
|
||||
|
||||
48
.github/workflows/vs2022.yml
vendored
48
.github/workflows/vs2022.yml
vendored
@ -3,6 +3,7 @@ name: VS2022
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.github/ISSUE_TEMPLATE/**'
|
||||
- '.gitignore'
|
||||
- '.gitattributes'
|
||||
- 'res/**'
|
||||
@ -35,11 +36,11 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
TARGET_PLATFORM: [x64, x86, arm64, arm]
|
||||
TARGET_PLATFORM: [x64, x86, arm64]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
@ -49,6 +50,20 @@ jobs:
|
||||
with:
|
||||
msbuild-architecture: x64
|
||||
|
||||
- name: Install UPX
|
||||
uses: crazy-max/ghaction-upx@v3
|
||||
with:
|
||||
install-only: true
|
||||
|
||||
- name: Set version
|
||||
id: set_version
|
||||
shell: bash
|
||||
run: |
|
||||
version=$(git describe --tags)
|
||||
version=${version:1}
|
||||
version=${version%%-*}
|
||||
echo "version=$version" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Set ALPHA
|
||||
id: set_alpha
|
||||
shell: bash
|
||||
@ -75,6 +90,31 @@ jobs:
|
||||
move .\${{ matrix.TARGET_PLATFORM }}\Release\rufus.exe .\rufus_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
move .\${{ matrix.TARGET_PLATFORM }}\Release\rufus.pdb .\rufus_${{ matrix.TARGET_PLATFORM }}.pdb
|
||||
|
||||
- name: Prepare to sign ALPHA
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
shell: bash
|
||||
# NB: The Base64 encoded variable should not have line breaks or this will fail!
|
||||
run: echo ${{ secrets.RUFUS_GITHUB_OFFICIAL_BUILD }} | base64 -di > ./sign.pfx
|
||||
|
||||
- name: Add signtool to path
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
uses: KamaranL/add-signtool-action@v1
|
||||
|
||||
- name: Sign ALPHA
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
shell: cmd
|
||||
run: |
|
||||
signtool sign /v /f sign.pfx /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 rufus_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
del sign.pfx
|
||||
|
||||
- name: Create standalone release executables
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
shell: cmd
|
||||
run: |
|
||||
copy rufus_${{ matrix.TARGET_PLATFORM }}.exe rufus-${{ steps.set_version.outputs.version }}_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
if exist rufus-${{ steps.set_version.outputs.version }}_x64.exe ( ren rufus-${{ steps.set_version.outputs.version }}_x64.exe rufus-${{ steps.set_version.outputs.version }}.exe )
|
||||
if not ${{ matrix.TARGET_PLATFORM }}==arm64 ( upx --lzma --best rufus-*.exe )
|
||||
|
||||
- name: Display SHA-256
|
||||
run: sha256sum ./rufus_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
|
||||
@ -86,7 +126,7 @@ jobs:
|
||||
curl --request POST --url https://www.virustotal.com/api/v3/monitor/items --header 'x-apikey: ${{ secrets.VIRUSTOTAL_API_KEY }}' --form path='/rufus_${{ matrix.TARGET_PLATFORM }}.exe' --form file=@./rufus_${{ matrix.TARGET_PLATFORM }}.exe
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
with:
|
||||
name: ${{ matrix.TARGET_PLATFORM }}
|
||||
@ -99,7 +139,7 @@ jobs:
|
||||
needs: VS2022-Build
|
||||
steps:
|
||||
- name: Merge Artifacts
|
||||
uses: actions/upload-artifact/merge@v4
|
||||
uses: actions/upload-artifact/merge@v6
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
with:
|
||||
name: VS2022
|
||||
|
||||
@ -14,12 +14,13 @@ AM_V_SED = $(AM_V_SED_$(V))
|
||||
# target arch. Oh, and we can't use 'target_cpu' or AC definitions on account that we are
|
||||
# switching archs when building on our local machine, and don't want to have to go though
|
||||
# a costly reconf each time when we can simply issue a 'make clean'.
|
||||
# Oh, and to find the number after the @ sign, just have a look at the MinGW .a libraries.
|
||||
TUPLE := $(shell $(CC) -dumpmachine)
|
||||
TARGET := $(word 1,$(subst -, ,$(TUPLE)))
|
||||
DEF_SUFFIX := $(if $(TARGET:x86_64=),.def,.def64)
|
||||
|
||||
.PHONY: all
|
||||
all: dwmapi-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-delaylib.lib wintrust-delaylib.lib
|
||||
all: crypt32-delaylib.lib dwmapi-delaylib.lib setupapi-delaylib.lib uxtheme-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-delaylib.lib wintrust-delaylib.lib
|
||||
|
||||
%.def64: %.def
|
||||
$(AM_V_SED) "s/@.*//" $< >$@
|
||||
@ -28,4 +29,4 @@ all: dwmapi-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-dela
|
||||
$(AM_V_DLLTOOL) --input-def $< --output-delaylib $@ --dllname $(basename $<).dll
|
||||
|
||||
clean:
|
||||
$(RM) -rf *.lib
|
||||
$(RM) -f $(CURDIR)/*.lib
|
||||
|
||||
@ -212,6 +212,7 @@ AM_V_SED = $(AM_V_SED_$(V))
|
||||
# target arch. Oh, and we can't use 'target_cpu' or AC definitions on account that we are
|
||||
# switching archs when building on our local machine, and don't want to have to go though
|
||||
# a costly reconf each time when we can simply issue a 'make clean'.
|
||||
# Oh, and to find the number after the @ sign, just have a look at the MinGW .a libraries.
|
||||
TUPLE := $(shell $(CC) -dumpmachine)
|
||||
TARGET := $(word 1,$(subst -, ,$(TUPLE)))
|
||||
DEF_SUFFIX := $(if $(TARGET:x86_64=),.def,.def64)
|
||||
@ -367,7 +368,7 @@ uninstall-am:
|
||||
|
||||
|
||||
.PHONY: all
|
||||
all: dwmapi-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-delaylib.lib wintrust-delaylib.lib
|
||||
all: crypt32-delaylib.lib dwmapi-delaylib.lib setupapi-delaylib.lib uxtheme-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-delaylib.lib wintrust-delaylib.lib
|
||||
|
||||
%.def64: %.def
|
||||
$(AM_V_SED) "s/@.*//" $< >$@
|
||||
@ -376,7 +377,7 @@ all: dwmapi-delaylib.lib version-delaylib.lib virtdisk-delaylib.lib wininet-dela
|
||||
$(AM_V_DLLTOOL) --input-def $< --output-delaylib $@ --dllname $(basename $<).dll
|
||||
|
||||
clean:
|
||||
$(RM) -rf *.lib
|
||||
$(RM) -f $(CURDIR)/*.lib
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
||||
10
.mingw/cfgmgr32.def
Normal file
10
.mingw/cfgmgr32.def
Normal file
@ -0,0 +1,10 @@
|
||||
EXPORTS
|
||||
CM_Get_Device_IDA@16
|
||||
CM_Get_Device_ID_List_SizeA@12
|
||||
CM_Get_Device_ID_ListA@16
|
||||
CM_Locate_DevNodeA@12
|
||||
CM_Get_Child@12
|
||||
CM_Get_Sibling@12
|
||||
CM_Get_Parent@12
|
||||
CM_Get_DevNode_Status@16
|
||||
CM_Get_DevNode_Registry_PropertyA@24
|
||||
14
.mingw/crypt32.def
Normal file
14
.mingw/crypt32.def
Normal file
@ -0,0 +1,14 @@
|
||||
EXPORTS
|
||||
CertFindCertificateInStore@24
|
||||
CertGetCertificateChain@32
|
||||
CertGetNameStringA@24
|
||||
CertCloseStore@8
|
||||
CertFreeCertificateContext@4
|
||||
CryptQueryObject@44
|
||||
CryptDecodeObjectEx@32
|
||||
CryptHashCertificate@28
|
||||
CryptMsgGetParam@20
|
||||
CryptMsgClose@4
|
||||
CryptMsgGetParam@20
|
||||
CryptMsgOpenToDecode@24
|
||||
CryptMsgUpdate@16
|
||||
@ -1,2 +1,4 @@
|
||||
EXPORTS
|
||||
DwmGetColorizationColor@8
|
||||
DwmGetWindowAttribute@16
|
||||
DwmSetWindowAttribute@16
|
||||
|
||||
20
.mingw/setupapi.def
Normal file
20
.mingw/setupapi.def
Normal file
@ -0,0 +1,20 @@
|
||||
EXPORTS
|
||||
CM_Locate_DevNodeA@12
|
||||
CM_Get_DevNode_Registry_PropertyA@24
|
||||
CM_Get_DevNode_Status@16
|
||||
CM_Get_Child@12
|
||||
CM_Get_Parent@12
|
||||
CM_Get_Sibling@12
|
||||
CM_Get_Device_IDA@16
|
||||
CM_Get_Device_ID_ListA@16
|
||||
CM_Get_Device_ID_List_SizeA@12
|
||||
SetupDiGetDeviceInstanceIdA@20
|
||||
SetupDiGetDeviceRegistryPropertyA@28
|
||||
SetupDiGetDeviceRegistryPropertyW@28
|
||||
SetupDiChangeState@8
|
||||
SetupDiGetClassDevsA@16
|
||||
SetupDiSetClassInstallParamsW@16
|
||||
SetupDiEnumDeviceInfo@12
|
||||
SetupDiEnumDeviceInterfaces@20
|
||||
SetupDiDestroyDeviceInfoList@4
|
||||
SetupDiGetDeviceInterfaceDetailA@24
|
||||
15
.mingw/uxtheme.def
Normal file
15
.mingw/uxtheme.def
Normal file
@ -0,0 +1,15 @@
|
||||
EXPORTS
|
||||
BeginBufferedAnimation@32
|
||||
BufferedPaintRenderAnimation@8
|
||||
BufferedPaintStopAllAnimations@4
|
||||
CloseThemeData@4
|
||||
DrawThemeBackground@24
|
||||
DrawThemeParentBackground@12
|
||||
DrawThemeTextEx@36
|
||||
EndBufferedAnimation@8
|
||||
GetThemeBackgroundContentRect@24
|
||||
GetThemeFont@24
|
||||
GetThemePartSize@28
|
||||
GetThemeTransitionDuration@24
|
||||
OpenThemeData@8
|
||||
SetWindowTheme@12
|
||||
@ -2,6 +2,7 @@ EXPORTS
|
||||
HttpQueryInfoA@20
|
||||
HttpOpenRequestA@32
|
||||
HttpSendRequestA@20
|
||||
HttpAddRequestHeadersA@16
|
||||
InternetCloseHandle@4
|
||||
InternetConnectA@32
|
||||
InternetCrackUrlA@16
|
||||
|
||||
@ -46,32 +46,59 @@
|
||||
<ClCompile Include="..\src\bled\decompress_unlzma.c" />
|
||||
<ClCompile Include="..\src\bled\decompress_unxz.c" />
|
||||
<ClCompile Include="..\src\bled\decompress_unzip.c" />
|
||||
<ClCompile Include="..\src\bled\decompress_unzstd.c" />
|
||||
<ClCompile Include="..\src\bled\decompress_vtsi.c" />
|
||||
<ClCompile Include="..\src\bled\filter_accept_all.c" />
|
||||
<ClCompile Include="..\src\bled\filter_accept_list.c" />
|
||||
<ClCompile Include="..\src\bled\filter_accept_reject_list.c" />
|
||||
<ClCompile Include="..\src\bled\find_list_entry.c" />
|
||||
<ClCompile Include="..\src\bled\fse_decompress.c" />
|
||||
<ClCompile Include="..\src\bled\header_list.c" />
|
||||
<ClCompile Include="..\src\bled\header_skip.c" />
|
||||
<ClCompile Include="..\src\bled\header_verbose_list.c" />
|
||||
<ClCompile Include="..\src\bled\huf_decompress.c" />
|
||||
<ClCompile Include="..\src\bled\init_handle.c" />
|
||||
<ClCompile Include="..\src\bled\open_transformer.c" />
|
||||
<ClCompile Include="..\src\bled\seek_by_jump.c" />
|
||||
<ClCompile Include="..\src\bled\seek_by_read.c" />
|
||||
<ClCompile Include="..\src\bled\xxhash.c" />
|
||||
<ClCompile Include="..\src\bled\xz_dec_bcj.c" />
|
||||
<ClCompile Include="..\src\bled\xz_dec_lzma2.c" />
|
||||
<ClCompile Include="..\src\bled\xz_dec_stream.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_common.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_ddict.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_decompress.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_decompress_block.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_entropy_common.c" />
|
||||
<ClCompile Include="..\src\bled\zstd_error_private.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\bled\bb_archive.h" />
|
||||
<ClInclude Include="..\src\bled\bled.h" />
|
||||
<ClInclude Include="..\src\bled\fse.h" />
|
||||
<ClInclude Include="..\src\bled\fse_bitstream.h" />
|
||||
<ClInclude Include="..\src\bled\huf.h" />
|
||||
<ClInclude Include="..\src\bled\libbb.h" />
|
||||
<ClInclude Include="..\src\bled\platform.h" />
|
||||
<ClInclude Include="..\src\bled\xxhash.h" />
|
||||
<ClInclude Include="..\src\bled\xz.h" />
|
||||
<ClInclude Include="..\src\bled\xz_config.h" />
|
||||
<ClInclude Include="..\src\bled\xz_lzma2.h" />
|
||||
<ClInclude Include="..\src\bled\xz_private.h" />
|
||||
<ClInclude Include="..\src\bled\xz_stream.h" />
|
||||
<ClInclude Include="..\src\bled\zstd.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_bits.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_compiler.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_config.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_cpu.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_ddict.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_decompress_block.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_decompress_internal.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_deps.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_errors.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_error_private.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_internal.h" />
|
||||
<ClInclude Include="..\src\bled\zstd_mem.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>bled</ProjectName>
|
||||
|
||||
@ -87,6 +87,36 @@
|
||||
<ClCompile Include="..\src\bled\decompress_vtsi.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\decompress_unzstd.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\fse_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\huf_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\xxhash.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_decompress_block.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_entropy_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_error_private.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\bled\zstd_ddict.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\bled\bb_archive.h">
|
||||
@ -116,5 +146,56 @@
|
||||
<ClInclude Include="..\src\bled\xz_stream.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\fse.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\fse_bitstream.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\huf.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\xxhash.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_compiler.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_cpu.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_ddict.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_decompress_block.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_decompress_internal.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_deps.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_error_private.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_errors.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_internal.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_mem.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\bled\zstd_bits.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -121,24 +121,25 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -151,23 +152,24 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -182,23 +184,24 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -216,8 +219,8 @@
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
@ -226,15 +229,16 @@
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -247,26 +251,26 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<UndefinePreprocessorDefinitions>NDEBUG</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -279,26 +283,26 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<UndefinePreprocessorDefinitions>NDEBUG</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories>
|
||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -313,26 +317,26 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<BuildLog />
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<UndefinePreprocessorDefinitions>NDEBUG</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
|
||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -350,26 +354,26 @@
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_RUFUS;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;COBJMACROS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\msvc-missing;..\src\ms-sys\inc;..\src\syslinux\libinstaller;..\src\syslinux\libfat;..\src\syslinux\win;..\src\libcdio;..\src\getopt;..\src\wimlib;..\res;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<ExceptionHandling>Async</ExceptionHandling>
|
||||
<DisableSpecificWarnings>4091;5255;28251;28252;28253;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<UndefinePreprocessorDefinitions>NDEBUG</UndefinePreprocessorDefinitions>
|
||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalOptions>/utf-8 /std:clatest $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;crypt32.lib;gdi32.lib;ole32.lib;dwmapi.lib;setupapi.lib;shell32.lib;ntdll.lib;shlwapi.lib;uxtheme.lib;version.lib;virtdisk.lib;wininet.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<AdditionalOptions>/BREPRO /DEPENDENTLOADFLAG:0x800 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>advapi32.dll;comctl32.dll;crypt32.dll;gdi32.dll;ole32.dll;dwmapi.dll;setupapi.dll;shell32.dll;shlwapi.dll;uxtheme.dll;version.dll;virtdisk.dll;wininet.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -381,7 +385,10 @@
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\badblocks.c" />
|
||||
<ClCompile Include="..\src\cpu.c" />
|
||||
<ClCompile Include="..\src\cregex_compile.c" />
|
||||
<ClCompile Include="..\src\cregex_parse.c" />
|
||||
<ClCompile Include="..\src\cregex_vm.c" />
|
||||
<ClCompile Include="..\src\darkmode.c" />
|
||||
<ClCompile Include="..\src\dos_locale.c" />
|
||||
<ClCompile Include="..\src\drive.c" />
|
||||
<ClCompile Include="..\src\format.c" />
|
||||
@ -395,7 +402,6 @@
|
||||
<ClCompile Include="..\src\parser.c" />
|
||||
<ClCompile Include="..\src\pki.c" />
|
||||
<ClCompile Include="..\src\process.c" />
|
||||
<ClCompile Include="..\src\re.c" />
|
||||
<ClCompile Include="..\src\rufus.c" />
|
||||
<ClCompile Include="..\src\hash.c" />
|
||||
<ClCompile Include="..\src\smart.c" />
|
||||
@ -407,21 +413,25 @@
|
||||
<ClCompile Include="..\src\ui.c" />
|
||||
<ClCompile Include="..\src\vhd.c" />
|
||||
<ClCompile Include="..\src\wue.c" />
|
||||
<ClCompile Include="..\src\xml.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\res\dbx\dbx_info.h" />
|
||||
<ClInclude Include="..\res\grub2\grub2_version.h" />
|
||||
<ClInclude Include="..\res\grub\grub_version.h" />
|
||||
<ClInclude Include="..\src\badblocks.h" />
|
||||
<ClInclude Include="..\src\bled\bled.h" />
|
||||
<ClInclude Include="..\src\cpu.h" />
|
||||
<ClInclude Include="..\src\cregex.h" />
|
||||
<ClInclude Include="..\src\darkmode.h" />
|
||||
<ClInclude Include="..\src\drive.h" />
|
||||
<ClInclude Include="..\src\efi.h" />
|
||||
<ClInclude Include="..\src\format.h" />
|
||||
<ClInclude Include="..\src\gpt_types.h" />
|
||||
<ClInclude Include="..\src\hdd_vs_ufd.h" />
|
||||
<ClInclude Include="..\src\mbr_types.h" />
|
||||
<ClInclude Include="..\src\missing.h" />
|
||||
<ClInclude Include="..\src\process.h" />
|
||||
<ClInclude Include="..\src\re.h" />
|
||||
<ClInclude Include="..\src\msvc-missing\unistd.h" />
|
||||
<ClInclude Include="..\src\ntdll.h" />
|
||||
<ClInclude Include="..\src\settings.h" />
|
||||
<ClInclude Include="..\src\libcdio\cdio\cdio.h" />
|
||||
<ClInclude Include="..\src\libcdio\cdio\iso9660.h" />
|
||||
@ -442,6 +452,7 @@
|
||||
<ClInclude Include="..\src\vhd.h" />
|
||||
<ClInclude Include="..\src\winio.h" />
|
||||
<ClInclude Include="..\src\wue.h" />
|
||||
<ClInclude Include="..\src\xml.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Manifest Include="..\src\rufus.manifest" />
|
||||
@ -485,6 +496,9 @@
|
||||
<ProjectReference Include="ext2fs.vcxproj">
|
||||
<Project>{b01f5886-2b39-4b66-b65c-6427135b6a02}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="wimlib.vcxproj">
|
||||
<Project>{633cfc82-e01b-4777-bde4-dc0739804332}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@ -87,13 +87,22 @@
|
||||
<ClCompile Include="..\src\format_fat32.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\re.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wue.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cpu.c">
|
||||
<ClCompile Include="..\src\xml.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\darkmode.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cregex_compile.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cregex_parse.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\cregex_vm.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
@ -161,7 +170,7 @@
|
||||
<ClInclude Include="..\src\db.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\process.h">
|
||||
<ClInclude Include="..\src\ntdll.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\ui.h">
|
||||
@ -179,9 +188,6 @@
|
||||
<ClInclude Include="..\src\winio.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\re.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\res\grub\grub_version.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@ -194,7 +200,22 @@
|
||||
<ClInclude Include="..\src\vhd.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\cpu.h">
|
||||
<ClInclude Include="..\src\efi.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\res\dbx\dbx_info.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\msvc-missing\unistd.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\xml.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\darkmode.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\cregex.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
|
||||
416
.vs/wimlib.vcxproj
Normal file
416
.vs/wimlib.vcxproj
Normal file
@ -0,0 +1,416 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\wimlib\avl_tree.c" />
|
||||
<ClCompile Include="..\src\wimlib\blob_table.c" />
|
||||
<ClCompile Include="..\src\wimlib\compress.c" />
|
||||
<ClCompile Include="..\src\wimlib\compress_common.c" />
|
||||
<ClCompile Include="..\src\wimlib\compress_parallel.c" />
|
||||
<ClCompile Include="..\src\wimlib\compress_serial.c" />
|
||||
<ClCompile Include="..\src\wimlib\cpu_features.c" />
|
||||
<ClCompile Include="..\src\wimlib\decompress.c" />
|
||||
<ClCompile Include="..\src\wimlib\decompress_common.c" />
|
||||
<ClCompile Include="..\src\wimlib\dentry.c" />
|
||||
<ClCompile Include="..\src\wimlib\divsufsort.c" />
|
||||
<ClCompile Include="..\src\wimlib\encoding.c" />
|
||||
<ClCompile Include="..\src\wimlib\error.c" />
|
||||
<ClCompile Include="..\src\wimlib\export_image.c" />
|
||||
<ClCompile Include="..\src\wimlib\extract.c" />
|
||||
<ClCompile Include="..\src\wimlib\file_io.c" />
|
||||
<ClCompile Include="..\src\wimlib\header.c" />
|
||||
<ClCompile Include="..\src\wimlib\inode.c" />
|
||||
<ClCompile Include="..\src\wimlib\inode_fixup.c" />
|
||||
<ClCompile Include="..\src\wimlib\inode_table.c" />
|
||||
<ClCompile Include="..\src\wimlib\integrity.c" />
|
||||
<ClCompile Include="..\src\wimlib\iterate_dir.c" />
|
||||
<ClCompile Include="..\src\wimlib\lcpit_matchfinder.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzms_common.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzms_compress.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzms_decompress.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzx_common.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzx_compress.c" />
|
||||
<ClCompile Include="..\src\wimlib\lzx_decompress.c" />
|
||||
<ClCompile Include="..\src\wimlib\metadata_resource.c" />
|
||||
<ClCompile Include="..\src\wimlib\pathlist.c" />
|
||||
<ClCompile Include="..\src\wimlib\paths.c" />
|
||||
<ClCompile Include="..\src\wimlib\pattern.c" />
|
||||
<ClCompile Include="..\src\wimlib\progress.c" />
|
||||
<ClCompile Include="..\src\wimlib\registry.c" />
|
||||
<ClCompile Include="..\src\wimlib\reparse.c" />
|
||||
<ClCompile Include="..\src\wimlib\resource.c" />
|
||||
<ClCompile Include="..\src\wimlib\scan.c" />
|
||||
<ClCompile Include="..\src\wimlib\security.c" />
|
||||
<ClCompile Include="..\src\wimlib\sha1.c" />
|
||||
<ClCompile Include="..\src\wimlib\solid.c" />
|
||||
<ClCompile Include="..\src\wimlib\split.c" />
|
||||
<ClCompile Include="..\src\wimlib\tagged_items.c" />
|
||||
<ClCompile Include="..\src\wimlib\textfile.c" />
|
||||
<ClCompile Include="..\src\wimlib\threads.c" />
|
||||
<ClCompile Include="..\src\wimlib\timestamp.c" />
|
||||
<ClCompile Include="..\src\wimlib\update_image.c" />
|
||||
<ClCompile Include="..\src\wimlib\util.c" />
|
||||
<ClCompile Include="..\src\wimlib\wim.c" />
|
||||
<ClCompile Include="..\src\wimlib\wimboot.c" />
|
||||
<ClCompile Include="..\src\wimlib\win32_apply.c" />
|
||||
<ClCompile Include="..\src\wimlib\win32_capture.c" />
|
||||
<ClCompile Include="..\src\wimlib\win32_common.c" />
|
||||
<ClCompile Include="..\src\wimlib\win32_replacements.c" />
|
||||
<ClCompile Include="..\src\wimlib\win32_vss.c" />
|
||||
<ClCompile Include="..\src\wimlib\write.c" />
|
||||
<ClCompile Include="..\src\wimlib\xml.c" />
|
||||
<ClCompile Include="..\src\wimlib\xmlproc.c" />
|
||||
<ClCompile Include="..\src\wimlib\xml_windows.c" />
|
||||
<ClCompile Include="..\src\wimlib\xpress_compress.c" />
|
||||
<ClCompile Include="..\src\wimlib\xpress_decompress.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\wimlib\config.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\alloca.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\apply.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\assert.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\avl_tree.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\bitops.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\blob_table.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\bt_matchfinder.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\case.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\chunk_compressor.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compiler.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compressor_ops.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compress_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\cpu_features.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\decompressor_ops.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\decompress_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\dentry.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\divsufsort.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\encoding.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\endianness.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\error.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\file_io.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\glob.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\guid.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\hc_matchfinder.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\header.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\inode.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\inode_table.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\integrity.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lcpit_matchfinder.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\list.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzms_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzms_constants.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzx_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzx_constants.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\matchfinder_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\metadata.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\ntfs_3g.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\object_id.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\pathlist.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\paths.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\pattern.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\progress.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\registry.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\reparse.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\resource.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\scan.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\security.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\security_descriptor.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\sha1.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\solid.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\tagged_items.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\test_support.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\textfile.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\threads.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\timestamp.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\types.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\unaligned.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\unix_data.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\util.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wim.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wimboot.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32_common.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32_vss.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wof.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\write.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xattr.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xml.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xmlproc.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xml_windows.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xpress_constants.h" />
|
||||
<ClInclude Include="..\src\wimlib\wimlib_tchar.h" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{633CFC82-E01B-4777-BDE4-DC0739804332}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>wimlib</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(SolutionDir)arm\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(SolutionDir)arm\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(SolutionDir)arm64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(SolutionDir)arm64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(SolutionDir)arm64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(SolutionDir)arm64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)x86\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)x86\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)x86\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)x86\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)x64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)x64\$(Configuration)\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;__SSE2__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;__SSE2__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Lib />
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;__SSE2__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>..\src;..\src\wimlib;..\src\msvc-missing;..\src\libcdio;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4018;4146;4267;4244;4334;4789;4996;6201;6239;6246;6255;6262;6297;6326;28252;28253</DisableSpecificWarnings>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<AdditionalOptions>/std:clatest</AdditionalOptions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>_RUFUS;HAVE_CONFIG_H;UNICODE;_OFF_T_DEFINED;_off_t=__int64;off_t=_off_t;_FILE_OFFSET_BITS=64;__SSE2__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
422
.vs/wimlib.vcxproj.filters
Normal file
422
.vs/wimlib.vcxproj.filters
Normal file
@ -0,0 +1,422 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\wimlib\wim.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\extract.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\xml.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\xmlproc.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\util.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\error.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\win32_replacements.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\win32_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\blob_table.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\encoding.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\cpu_features.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\threads.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\win32_apply.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\win32_vss.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\header.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\metadata_resource.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\resource.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\security.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\decompress_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\sha1.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\xpress_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\write.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\file_io.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\progress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\integrity.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\dentry.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\export_image.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\inode.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\iterate_dir.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\avl_tree.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\win32_capture.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\timestamp.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\pathlist.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\paths.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\scan.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzms_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzms_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzx_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzx_decompress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\solid.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\reparse.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\compress_parallel.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\compress_serial.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\compress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\xpress_compress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzms_compress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lzx_compress.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\compress_common.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\pattern.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\lcpit_matchfinder.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\textfile.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\divsufsort.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\inode_table.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\inode_fixup.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\tagged_items.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\wimboot.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\update_image.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\xml_windows.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\registry.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\wimlib\split.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\wimlib\config.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\assert.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\blob_table.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\cpu_features.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\dentry.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\encoding.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\file_io.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\integrity.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\metadata.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\security.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\threads.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wim.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xml.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\list.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\sha1.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\types.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\util.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib_tchar.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compiler.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\avl_tree.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\case.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\inode.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\error.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\guid.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\header.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\apply.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\progress.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\endianness.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\object_id.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\pathlist.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\paths.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\pattern.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\reparse.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\tagged_items.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\unix_data.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xattr.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\timestamp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\write.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xmlproc.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\test_support.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\glob.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\win32_vss.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\bitops.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\ntfs_3g.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\scan.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\unaligned.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\inode_table.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\textfile.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wimboot.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\wof.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\alloca.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\decompress_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\decompressor_ops.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xpress_constants.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\chunk_compressor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\solid.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzms_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzms_constants.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzx_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lzx_constants.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compress_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\compressor_ops.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\hc_matchfinder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\matchfinder_common.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\bt_matchfinder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\lcpit_matchfinder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\divsufsort.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\xml_windows.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\registry.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\wimlib\wimlib\security_descriptor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -1,3 +1,67 @@
|
||||
o Version 4.12 (2026.01.30)
|
||||
Filter out the new Bitdefender VHDs
|
||||
Filter disallowed characters in local account names
|
||||
Improve Microsoft Dev Drive detection (courtesy of Martin Kuschnik)
|
||||
Improve the pre-formatting partition cleanup code
|
||||
Improve error reporting on ISO extraction issues
|
||||
Improve detection of drives with long hardware IDs (typically SSDs)
|
||||
Improve conflicting process reporting
|
||||
Improve support for Nutanix and umbrelOS ISOs
|
||||
Fix a TOCTOU vulnerability in Fido script execution (CVE-2026-2398, reported by @independent-arg)
|
||||
Fix replacement vulnerabilities for diskcopy.dll and oscdimg.exe
|
||||
Fix FFU image creation being erroneously invocated, when trying to save an ISO image
|
||||
Fix saving of ISO images to paths that contain spaces
|
||||
Update UEFI:NTFS and UEFI DBXs to latest
|
||||
|
||||
o Version 4.11 (2025.10.02)
|
||||
Add a cheat mode to toggle between Light and Dark mode
|
||||
Improve WUE option text relating to the CA 2023 option
|
||||
Update Linux SBAT / Microsoft SVN Secure Boot revocation values to latest
|
||||
Fix some GRUB/Syslinux download dialogs showing only the 'Close' button
|
||||
Fix an assert being triggered when using the WUE CA 2023 option on its own
|
||||
Fix an application crash on systems that have a failed dynamic disk
|
||||
|
||||
o Version 4.10 (2025.09.24)
|
||||
Add Dark Mode support (courtesy of @ozone10)
|
||||
Add support for creating Windows CA 2023 compatible media (requires a Windows 11 25H2 ISO)
|
||||
Add support for saving an existing drive to ISO (UDF only)
|
||||
Improve error reporting when saving to VHD/VHDX (with thanks to @Kazkans)
|
||||
Improve persistence support for Linux Mint
|
||||
Fix UEFI DBX updates being reported in some timezones, even when there are none
|
||||
Fix a situation where no file system can be selected in ISO mode
|
||||
Fix a crash when trying to process Windows ISOs with very long paths
|
||||
|
||||
o Version 4.9 (2025.06.15) [BUGFIX RELEASE]
|
||||
Fix downloads from https://rufus.ie no longer working due to recent GitHub server changes
|
||||
Fix unofficial Windows ISOs, with single index WIMs, not presenting the WUE dialog
|
||||
|
||||
o Version 4.8 (2025.06.11)
|
||||
Switch to wimlib for all WIM image processing:
|
||||
- Greatly speeds up image analysis when opening Windows ISOs
|
||||
- Can speed up Windows To Go drive creation (But won't do miracles if you have a crap drive)
|
||||
- Might help with Parallels limitations on Mac (But Rufus on Parallels is still UNSUPPORTED)
|
||||
- Enables the splitting of >4GB files with Alt-E (But still WAY SLOWER than using UEFI:NTFS)
|
||||
Switch to using Visual Studio binaries everywhere, due to MinGW DLL delay-loading limitations
|
||||
Add more exceptions for Linux ISOs that restrict themselves to DD mode (Nobara, openSUSE, ...)
|
||||
Improve reporting of UEFI bootloaders in the log, with info on the Secure Boot status
|
||||
Fix an issue with size limitations when writing an uncompressed VHD back to the same drive
|
||||
Fix a crash when opening the log with the 32-bit MinGW compiled version
|
||||
Fix commandline parameters not being forwarded to original Windows setup.exe
|
||||
|
||||
o Version 4.7 (2025.04.09)
|
||||
Add a mechanism to detect and download updated DBXs from the official UEFI repository
|
||||
Add zstd compression support for disk images
|
||||
Add a new exclusion feature in the settings, to ignore disks with a specific GPT GUID
|
||||
Improve detection for compressed VHD images that are too large to fit the target drive
|
||||
Fix commandline hogger not being deleted when running Rufus from a different directory
|
||||
Fix FAT filenames from embedded images being potentially truncated on image extraction
|
||||
Fix a side-loading vulnerability [CVE-2025-26624] with cfgmgr32.dll (with thanks to @EmperialX)
|
||||
Fix UI memory leaks (courtesy of @ozone10)
|
||||
Fall back to user/system default locale when getting error description (courtesy of @Wack0)
|
||||
Don't run the commandline hogger on POSIX shells
|
||||
Drop ARM 32-bit builds (Note that ARM 64-bit builds are *NOT* affected by this)
|
||||
Update FreeDOS and Grub4DOS to latest
|
||||
|
||||
o Version 4.6 (2024.10.21)
|
||||
Add a new setup.exe wrapper to bypass Windows 11 24H2 in-place upgrade restrictions
|
||||
Add TimeZone to regional options replication
|
||||
|
||||
@ -3,6 +3,9 @@ TARGET = rufus
|
||||
TAGVER = $(shell git log --oneline | wc -l)
|
||||
SEDCMD = s/^\([ \t]*\)Version="\([0-9]*\)\.\([0-9]*\)\.[0-9]*\.\([0-9]*\)"\(.*\)/\1Version="\2.\3.@@TAGVER@@.\4"\5/
|
||||
|
||||
upx: all
|
||||
@upx --lzma --best src/$(TARGET)$(EXEEXT)
|
||||
|
||||
# This step produces the UPX compressed and signed releases that are made available for public download
|
||||
# NB: UPX v3.09 or later is needed for LZMA compression (http://upx.sourceforge.net/)
|
||||
release: all
|
||||
|
||||
@ -502,6 +502,9 @@ uninstall-am:
|
||||
pdf-am ps ps-am tags tags-am uninstall uninstall-am
|
||||
|
||||
|
||||
upx: all
|
||||
@upx --lzma --best src/$(TARGET)$(EXEEXT)
|
||||
|
||||
# This step produces the UPX compressed and signed releases that are made available for public download
|
||||
# NB: UPX v3.09 or later is needed for LZMA compression (http://upx.sourceforge.net/)
|
||||
release: all
|
||||
|
||||
10
SECURITY.md
10
SECURITY.md
@ -1,7 +1,9 @@
|
||||
# Reporting a Vulnerability
|
||||
# Reporting a security vulnerability
|
||||
|
||||
To report a vulnerability for Rufus, please e-mail support@akeo.ie.
|
||||
To report a **security** vulnerability for Rufus (i.e. an issue that you believe could lead to malicious actors being able to exploit the Rufus application), please e-mail support@akeo.ie.
|
||||
|
||||
If you find a vulnerability, we will ask you to respect [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure) practices.
|
||||
Please do **NOT** use the e-mail above if you have a regular issue, such as a problem creating or using a bootable drive. Instead go back to https://github.com/pbatard/rufus/issues and create an issue using the regular *Issue Report* template.
|
||||
|
||||
In return, we will endeavour to respond to vulnerability reports within 48 hours.
|
||||
For any security vulnerability report, we kindly ask you to respect [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure) practices.
|
||||
|
||||
In return, we will endeavour to respond to security vulnerability reports within 48 hours.
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#!/bin/sh
|
||||
rm -f rufus*.exe
|
||||
./configure --disable-debug "$@"
|
||||
make -j12 clean
|
||||
make -j12 release
|
||||
|
||||
29
configure
vendored
29
configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.71 for rufus 4.6.
|
||||
# Generated by GNU Autoconf 2.71 for rufus 4.12.
|
||||
#
|
||||
# Report bugs to <https://github.com/pbatard/rufus/issues>.
|
||||
#
|
||||
@ -611,8 +611,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='rufus'
|
||||
PACKAGE_TARNAME='rufus'
|
||||
PACKAGE_VERSION='4.6'
|
||||
PACKAGE_STRING='rufus 4.6'
|
||||
PACKAGE_VERSION='4.12'
|
||||
PACKAGE_STRING='rufus 4.12'
|
||||
PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues'
|
||||
PACKAGE_URL='https://rufus.ie'
|
||||
|
||||
@ -1269,7 +1269,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures rufus 4.6 to adapt to many kinds of systems.
|
||||
\`configure' configures rufus 4.12 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1336,7 +1336,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of rufus 4.6:";;
|
||||
short | recursive ) echo "Configuration of rufus 4.12:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1428,7 +1428,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
rufus configure 4.6
|
||||
rufus configure 4.12
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
@ -1504,7 +1504,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by rufus $as_me 4.6, which was
|
||||
It was created by rufus $as_me 4.12, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
@ -2767,7 +2767,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='rufus'
|
||||
VERSION='4.6'
|
||||
VERSION='4.12'
|
||||
|
||||
|
||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||
@ -4702,7 +4702,7 @@ fi
|
||||
printf "%s\n" "enabling Large File Support (ISO support)" >&6; }
|
||||
AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t -Doff32_t=long"
|
||||
|
||||
# check for -Wno-pointer-sign compiler support (GCC >= 4)
|
||||
# Check for -Wno-pointer-sign compiler support (GCC >= 4)
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CFLAGS="$CFLAGS -Wno-pointer-sign"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@ -4725,7 +4725,9 @@ fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
|
||||
AM_CFLAGS="$AM_CFLAGS -DUNICODE -D_UNICODE -UNDEBUG -DCOBJMACROS -D__USE_MINGW_ANSI_STDIO=0 -std=gnu99 -Wshadow -Wall -Wformat-security -Wundef -Wunused -Wstrict-prototypes -Wno-restrict -Wno-array-bounds -Werror-implicit-function-declaration -Wbidi-chars=none $nopointersign_cflags"
|
||||
# NB: The DECLSPEC_IMPORT redefinition below is a temporary(?) workaround for MinGW32 delay-loading
|
||||
# See https://github.com/pbatard/rufus/pull/2513 as well as https://sourceware.org/bugzilla/show_bug.cgi?id=14339
|
||||
AM_CFLAGS="$AM_CFLAGS -DUNICODE -D_UNICODE -UNDEBUG -DCOBJMACROS -D__USE_MINGW_ANSI_STDIO=0 -UDECLSPEC_IMPORT -DDECLSPEC_IMPORT=__attribute__\(\(visibility\(\\\"hidden\\\"\)\)\) -std=gnu11 -Wshadow -Wall -Wformat-security -Wundef -Wunused -Wstrict-prototypes -Wno-restrict -Wno-array-bounds -Werror-implicit-function-declaration -Wbidi-chars=none $nopointersign_cflags"
|
||||
|
||||
|
||||
|
||||
@ -4758,6 +4760,8 @@ ac_config_files="$ac_config_files src/syslinux/libinstaller/Makefile"
|
||||
|
||||
ac_config_files="$ac_config_files src/syslinux/win/Makefile"
|
||||
|
||||
ac_config_files="$ac_config_files src/wimlib/Makefile"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
# This file is a shell script that caches the results of configure
|
||||
# tests run on this system so they can be shared between configure
|
||||
@ -5309,7 +5313,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by rufus $as_me 4.6, which was
|
||||
This file was extended by rufus $as_me 4.12, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -5365,7 +5369,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config='$ac_cs_config_escaped'
|
||||
ac_cs_version="\\
|
||||
rufus config.status 4.6
|
||||
rufus config.status 4.12
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
@ -5491,6 +5495,7 @@ do
|
||||
"src/syslinux/libfat/Makefile") CONFIG_FILES="$CONFIG_FILES src/syslinux/libfat/Makefile" ;;
|
||||
"src/syslinux/libinstaller/Makefile") CONFIG_FILES="$CONFIG_FILES src/syslinux/libinstaller/Makefile" ;;
|
||||
"src/syslinux/win/Makefile") CONFIG_FILES="$CONFIG_FILES src/syslinux/win/Makefile" ;;
|
||||
"src/wimlib/Makefile") CONFIG_FILES="$CONFIG_FILES src/wimlib/Makefile" ;;
|
||||
|
||||
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
|
||||
esac
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
AC_INIT([rufus], [4.6], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie])
|
||||
AC_INIT([rufus], [4.12], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie])
|
||||
AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies])
|
||||
AC_CONFIG_SRCDIR([src/rufus.c])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@ -57,14 +57,16 @@ fi
|
||||
AC_MSG_RESULT([enabling Large File Support (ISO support)])
|
||||
AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t -Doff32_t=long"
|
||||
|
||||
# check for -Wno-pointer-sign compiler support (GCC >= 4)
|
||||
# Check for -Wno-pointer-sign compiler support (GCC >= 4)
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CFLAGS="$CFLAGS -Wno-pointer-sign"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
|
||||
[nopointersign_cflags="-Wno-pointer-sign"], [nopointersign_cflags=""])
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
|
||||
AM_CFLAGS="$AM_CFLAGS -DUNICODE -D_UNICODE -UNDEBUG -DCOBJMACROS -D__USE_MINGW_ANSI_STDIO=0 -std=gnu99 -Wshadow -Wall -Wformat-security -Wundef -Wunused -Wstrict-prototypes -Wno-restrict -Wno-array-bounds -Werror-implicit-function-declaration -Wbidi-chars=none $nopointersign_cflags"
|
||||
# NB: The DECLSPEC_IMPORT redefinition below is a temporary(?) workaround for MinGW32 delay-loading
|
||||
# See https://github.com/pbatard/rufus/pull/2513 as well as https://sourceware.org/bugzilla/show_bug.cgi?id=14339
|
||||
AM_CFLAGS="$AM_CFLAGS -DUNICODE -D_UNICODE -UNDEBUG -DCOBJMACROS -D__USE_MINGW_ANSI_STDIO=0 -UDECLSPEC_IMPORT -DDECLSPEC_IMPORT=__attribute__\(\(visibility\(\\\"hidden\\\"\)\)\) -std=gnu11 -Wshadow -Wall -Wformat-security -Wundef -Wunused -Wstrict-prototypes -Wno-restrict -Wno-array-bounds -Werror-implicit-function-declaration -Wbidi-chars=none $nopointersign_cflags"
|
||||
|
||||
AC_SUBST([VISIBILITY_CFLAGS])
|
||||
AC_SUBST([AM_CFLAGS])
|
||||
@ -84,4 +86,5 @@ AC_CONFIG_FILES([src/ms-sys/Makefile])
|
||||
AC_CONFIG_FILES([src/syslinux/libfat/Makefile])
|
||||
AC_CONFIG_FILES([src/syslinux/libinstaller/Makefile])
|
||||
AC_CONFIG_FILES([src/syslinux/win/Makefile])
|
||||
AC_CONFIG_FILES([src/wimlib/Makefile])
|
||||
AC_OUTPUT
|
||||
|
||||
62
res/appstore/get_pe_info.c
Normal file
62
res/appstore/get_pe_info.c
Normal file
@ -0,0 +1,62 @@
|
||||
// Compile with: gcc -lversion -o get_pe_info get_pe_info.c
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
VS_FIXEDFILEINFO *file_info;
|
||||
DWORD handle, size;
|
||||
WORD lang, codepage;
|
||||
UINT len;
|
||||
void *buffer = NULL, *translation, *version_info;
|
||||
char sub_block[50];
|
||||
int ret = 1;
|
||||
|
||||
if (argc != 3 || argv[1][0] != '-') {
|
||||
printf("Usage: %s [-i|-v] <path_to_executable>\n", argv[0]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
size = GetFileVersionInfoSizeA(argv[2], &handle);
|
||||
if (size == 0) {
|
||||
fprintf(stderr, "Failed to get version info size.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
buffer = malloc(size);
|
||||
if (buffer == NULL)
|
||||
goto out;
|
||||
|
||||
if (!GetFileVersionInfoA(argv[2], handle, size, buffer)) {
|
||||
fprintf(stderr, "Failed to get version info.\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (argv[1][1] == 'i') {
|
||||
if (!VerQueryValueA(buffer, "\\VarFileInfo\\Translation", &translation, &len) || len < 4) {
|
||||
fprintf(stderr, "Failed to retrieve language and codepage information.\n");
|
||||
goto out;
|
||||
}
|
||||
lang = *(WORD*)translation;
|
||||
codepage = *((WORD*)translation + 1);
|
||||
snprintf(sub_block, sizeof(sub_block), "\\StringFileInfo\\%04x%04x\\InternalName", lang, codepage);
|
||||
if (!VerQueryValueA(buffer, sub_block, &version_info, &len)) {
|
||||
fprintf(stderr, "Failed to retrieve Internal Name.\n");
|
||||
goto out;
|
||||
}
|
||||
printf("%s\n", (char*)version_info);
|
||||
} else {
|
||||
if (!VerQueryValueA(buffer, "\\", (LPVOID*)&file_info, &len) || len < sizeof(VS_FIXEDFILEINFO)) {
|
||||
fprintf(stderr, "Failed to retrieve file info.\n");
|
||||
goto out;
|
||||
}
|
||||
printf("%d.%d.%d.%d\n", HIWORD(file_info->dwFileVersionMS), LOWORD(file_info->dwFileVersionMS),
|
||||
HIWORD(file_info->dwFileVersionLS), LOWORD(file_info->dwFileVersionLS));
|
||||
}
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
free(buffer);
|
||||
return ret;
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
"Field","ID","Type (Type)","default","en-us","ar-sa","bg-bg","zh-cn","zh-tw","hr-hr","cs-cz","da-dk","nl-nl","fi-fi","fr-fr","de-de","el-gr","he-il","hu-hu","id-id","it-it","ja-jp","ko-kr","lv-lv","lt-lt","ms-my","nb-no","fa-ir","pl-pl","pt-br","pt-pt","ro-ro","ru-ru","sr-latn-rs","sk-sk","sl-si","es-es","sv-se","th-th","tr-tr","uk-ua","vi-vn"
|
||||
"Field","ID","Type (Type)","default","en-us","ar-sa","bg-bg","zh-cn","zh-tw","hr-hr","cs-cz","da-dk","nl-nl","fi-fi","fr-fr","de-de","el-gr","he-il","hu-hu","id-id","it-it","ja-jp","ko-kr","lv-lv","lt-lt","ms-my","nb-no","fa-ir","pl-pl","pt-br","pt-pt","ro-ro","ru-ru","sr-latn-rs","sk-sk","sl-si","es-es","sv-se","th-th","tr-tr","uk-ua","vi-vn"
|
||||
"Description","2","Text","","Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc.
|
||||
• Official site: https://rufus.ie
|
||||
• Source Code: https://github.com/pbatard/rufus
|
||||
@ -32,7 +32,7 @@
|
||||
• Muutosloki: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus est un utilitaire permettant de formater et de créer des média USB amorçables, tels que clés USB, mémoire flash, etc.
|
||||
• Site officiel : https://rufus.ie
|
||||
• Code source: https://github.com/pbatard/rufus
|
||||
• ChangeLog: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus ist ein Werkzeug, welches dabei hilft, bootfähige USB-Laufwerke zu erstellen, wie beispielweise USB-Keys, Speichersticks usw.
|
||||
• ChangeLog: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus ist ein Werkzeug, das beim Formatieren und Erstellen bootfähiger USB-Flash-Laufwerke wie USB-Sticks, Speichersticks usw. hilft.
|
||||
• Offizielle Website: https://rufus.ie
|
||||
• Quellcode: https://github.com/pbatard/rufus
|
||||
• Änderungsprotokoll: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Το Rufus είναι ένα βοηθητικό πρόγραμμα που βοηθά στη διαμόρφωση και τη δημιουργία μονάδων flash USB με δυνατότητα εκκίνησης, όπως κλειδιά USB/pendrives,κάρτες μνήμης κ.λπ.
|
||||
@ -110,25 +110,30 @@
|
||||
• Sürüm Notları https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus це утиліта, яка допомагає форматувати та створювати завантажувальні флешки, картки пам'яті, тощо.
|
||||
• Офіційний сайт: https://rufus.ie
|
||||
• Сирцевий код: https://github.com/pbatard/rufus
|
||||
• Список змін: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus là một tiện ích giúp định dạng và tạo khả năng khởi động cho USB, chẳng hạn như thẻ USB/đĩa di động, thẻ nhớ, vv.
|
||||
• Список змін: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt","Rufus là một tiện ích giúp định dạng và tạo khả năng khởi động cho các thiết bị USB, ví dụ như thẻ USB/đĩa di động, thẻ nhớ, v.v...
|
||||
• Trang web chính thức: https://rufus.ie
|
||||
• Mã nguồn: https://github.com/pbatard/rufus
|
||||
• Nhật ký thay đổi: https://github.com/pbatard/rufus/blob/master/ChangeLog.txt"
|
||||
"ReleaseNotes","3","Text","• Add a new setup.exe wrapper to bypass Windows 11 24H2 in-place upgrade restrictions
|
||||
• Add TimeZone to regional options replication
|
||||
• Set local account passwords to not expire by default
|
||||
• Fix an error when trying to write compressed VHD images
|
||||
• Fix an error when invoking Rufus from the PowerShell commandline
|
||||
• Improve revoked UEFI bootloaders check to support Linux SBAT, Windows SVN and cert DBX
|
||||
• Improve support for ReactOS boot media
|
||||
",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"ReleaseNotes","3","Text","• Filter out the new Bitdefender VHDs
|
||||
• Filter disallowed characters in local account names
|
||||
• Improve Microsoft Dev Drive detection (courtesy of Martin Kuschnik)
|
||||
• Improve the pre-formatting partition cleanup code
|
||||
• Improve error reporting on ISO extraction issues
|
||||
• Improve detection of drives with long hardware IDs (typically SSDs)
|
||||
• Improve conflicting process reporting
|
||||
• Improve support for Nutanix and umbrelOS ISOs
|
||||
• Fix a TOCTOU vulnerability in Fido script execution (CVE-2026-2398, reported by @independent-arg)
|
||||
• Fix replacement vulnerabilities for diskcopy.dll and oscdimg.exe
|
||||
• Fix FFU image creation being erroneously invocated, when trying to save an ISO image
|
||||
• Fix saving of ISO images to paths that contain spaces
|
||||
• Update UEFI:NTFS and UEFI DBXs to latest",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"Title","4","Text","Rufus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"ShortTitle","5","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"SortTitle","6","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"VoiceTitle","7","Text","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"ShortDescription","8","Text","","Rufus - The Reliable USB Formatting Utility","Rufus - أداة فرمتة الـ USB جديرة بالثقة","Rufus - Надеждната USB форматираща програма","Rufus - 可靠的 USB 格式化工具","Rufus - 快速可靠的 USB 格式化工具","Rufus - Pouzdan alat za formatiranje USB-a","Rufus - Spolehlivý program pro formátování USB","Rufus - Det pålidelige USB-formateringsværktøj","Rufus - de betrouwbare USB-formatteertool","Rufus - Luotettava USB-alustusohjelma","Rufus - L'utilitaire de formatage USB fiable","Rufus - Das zuverlässige USB-Formatierungstool","Rufus - Μία αξιόπιστη εφαρμογή διαμόρφωσης USB","Rufus - הכלי לאתחול USB האמין ביותר","Rufus - A megbízható USB-formázó segédprogram","Rufus - Utilitas Pemformatan USB yang Handal","Rufus - Utility affidabile per la formattazione di unità USB","Rufus - 信頼性の高い USB フォーマット ユーティリティ","Rufus - 신뢰할 수 있는 USB 포맷 유틸리티","Rufus - uzticama un vienkārša USB formatēšanas utilīta","Rufus - patikima USB formatavimo priemonė","Rufus - Utiliti pemformatan USB yang dipercayai","Rufus - Det pålitelige USB-formateringsprogrammet","Rufus، ابزاری کاربردی و قابلاطمینان برای فرمت کردن درایوهای USB","Rufus - niezawodne narzędzie do formatowania USB","Rufus - O Utilitário de Formatação USB Confiável","Rufus - O utilitário de confiança para formatação USB","Rufus - Instrumentul de încredere pentru formatări USB","Rufus - Надёжная утилита для форматирования USB-дисков","Rufus - Pouzdan Alat Za Formatiranje USB diska","Rufus - Spoľahlivý program pre formátovanie USB","Rufus - zanesljivi pripomoček za USB formatiranje","Rufus, la herramienta de formateo de USBs en la que puedes confiar","Rufus - Det pålitliga verktyget för USB-formatering","Rufus - ยูทิลิตี้การฟอร์แมต USB ที่ไว้ใจได้","Rufus - Güvenilir USB Biçimlendirme Programı","Rufus - надійна утиліта для форматування USB-накопичувачів","Rufus - Tiện ích Định dạng USB Đáng tin cậy"
|
||||
"DevStudio","9","Text","Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"CopyrightTrademarkInformation","12","Text","© 2011-2024 Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"CopyrightTrademarkInformation","12","Text","© 2011-2026 Pete Batard",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"AdditionalLicenseTerms","13","Text","https://www.gnu.org/licenses/gpl-3.0.html","This application is licensed under the terms of the GNU Public License (GPL) version 3.
|
||||
See https://www.gnu.org/licenses/gpl-3.0.en.html for details.","هذا التطبيق مُرخص بموجب شروط رخصة جنو (GNU) العمومية (GPL) الإصدار 3.
|
||||
راجع https://www.gnu.org/licenses/gpl-3.0.ar.html لمزيد من التفاصيل.","Тази програма е лицензирана според условията на GNU Public License (GPL) версия 3.
|
||||
@ -148,7 +153,7 @@ További információ: https://www.gnu.org/licenses/gpl-3.0.html.","Aplikasi ini
|
||||
Lihat https://www.gnu.org/licenses/gpl-3.0.html untuk detail lebih lanjut.","Questa applicazione è rilasciata sotto i termini della GNU Public License (GPL) versione 3.
|
||||
Vedere https://www.gnu.org/licenses/gpl-3.0.html per dettagli.","このアプリケーションはGNU Public License (GPL) version 3でライセンスされています。
|
||||
詳細は https://www.gnu.org/licenses/gpl-3.0.ja.html をご覧ください。","이 응용 프로그램은 GNU Public License (GPL) 버전 3의 조건에 따라 라이선스가 부여됩니다.
|
||||
자세한 내용은 https://www.gnu.org/licenses/gpl-3.0.html 을 참조하십시오.","Šai programmai ir licences noteikumi, kā GNU Public License (GPL) version 3.
|
||||
자세한 내용은 https://www.gnu.org/licenses/gpl-3.0.html 을 참조하세요.","Šai programmai ir licences noteikumi, kā GNU Public License (GPL) version 3.
|
||||
Papildinformācijai skatīt https://www.gnu.org/licenses/gpl-3.0.html.","Ši programa yra licencijuota pagal GNU viešosios licencijos (GPL) 3 versijos sąlygas.
|
||||
Daugiau informacijos rasite https://www.gnu.org/licenses/gpl-3.0.html.","Permohonan ini dilesenkan di bawah syarat-syarat Lesen Awam GNU (GPL) versi 3.
|
||||
Lihat https://www.gnu.org/licenses/gpl-3.0.html untuk butiran.","Dette programmet er lisensiert under GNU Public Licence (GPL) versjon 3.
|
||||
@ -264,14 +269,14 @@ Xem tại https://www.gnu.org/licenses/gpl-3.0.html để biết thêm chi tiế
|
||||
"OptionalPromo414x180","613","Relative path (or URL to file in Partner Center)","",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
"Feature1","700","Text","","Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","تهيئة USB وبطاقة الفلاش ومحركات الأقراص الافتراضية إلى FAT / FAT32 / NTFS / UDF / exFAT / ReFS / ext2 / ext3","Форматиране на USB, карти памет и виртуални устройства с FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","将 U 盘、存储卡或虚拟驱动器格式化为 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","將隨身碟、記憶卡或虛擬光碟機格式化為 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 格式","Formatirajte USB, flash karticu i virtualne pogone na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formátování USB, flash karet a virtuálních jednotek na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, flash kort og virtuelle drev til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flashkaart en virtuele schijven formatteren naar FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Alusta USB-asemia, muistikortteja ja virtuaalisia asemia muotoon FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatez des périphériques USB, des cartes flash et des disques virtuels en FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatieren von USB, Flash-Karte und virtuellen Laufwerken in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Μορφοποίηση USB, κάρτας flash και εικονικών μονάδων δίσκου σε FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","אתחול USB, כרטיסי זיכרון וכוננים וירטואליים ל־FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash memóriakártyák és virtuális meghajtók formázása FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 fájlrendszerre","Format USB, kartu flash dan penyimpanan maya ke FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatta USB, flash card e unità virtuali in FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USBメモリやSDカード、仮想ドライブをFAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3でフォーマットします。","USB, 플래시 카드 및 가상 드라이브를 FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3로 포맷","Formatē USB, atmiņas kartes un virtuālos diskus formātos FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Suformatuokite USB, flash kortelę ir virtualius diskus į FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatkan USB, kad flash dan pemacu maya kepada FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formater USB, minnekort og virtuelle disker til FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","فرمت USB، فلش کارت و درایوهای مجازی به FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Sformatuj nośnik używając: FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartões flash e discos virtuais com FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatar dispositivos USB, cartão de memória e drives virtuais em FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatează USB, card flash si drive-uri virtuale la FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Форматирование USB, флешек и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatiraj USB, flash kartice, i virtualne diskove u FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Naformátujte USB, kartu a virtuálne disky do FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatiranje USB, bliskavice in virtualnih pogonov na FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatee USB, tarjetas flash y unidades virtuales a FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Formatera USB-enheter, flash-kort och virtuella enheter till FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","ฟอร์แมต USB, แฟลชการ์ด หรือไดรฟ์เสมือน ให้อยู่ในรูปแบบของ FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","USB, flash kart ve sanal sürücüleri FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3 olarak biçimlendirin","Форматування USB-накопичувачів, флешок, карток пам'яті у FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3","Định dạng USB, thẻ nhớ hoặc ổ nhớ ảo với FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3"
|
||||
"Feature2","701","Text","","Create FreeDOS bootable USB drives","إنشاء محركات أقراص USB قابلة للإقلاع من FreeDOS","Създаване на FreeDOS стартиращ USB устройства","创建 FreeDOS 可启动驱动器","建立 FreeDOS 可開機隨身碟","Stvaranje FreeDOS USB pogona za pokretanje","Vytvoření bootovacích disků USB se systémem FreeDOS","Lav FreeDOS opstartsbare USB drev","FreeDOS opstartbare USB-schijven aanmaken","Luo boottaavia FreeDOS USB-asemia","Créez des disques amorçable FreeDOS","FreeDOS-bootfähige USB-Laufwerke erstellen","Δημιουργήστε μονάδες USB με δυνατότητα εκκίνησης FreeDOS","יצירת כונני USB הניתנים לאתחול של FreeDOS","Bootolható FreeDOS USB meghajtó készítése","Buat perangkat USB FreeDOS yang dapat di boot","Crea unità USB avviabili FreeDOS","FreeDOSの起動可能ドライブを作成します。","FreeDOS 부팅 가능한 USB 드라이브 만들기","Izveido FreeDOS ielādes USB ierīces","Sukurkite FreeDOS įkrovos USB diskus","Buat pemacu USB boleh boot FreeDOS","Lag FreeDos oppstartbar USB stick","درایوهای USB قابل بوت FreeDOS را ایجاد کنید","Stwórz nośnik rozruchowy USB FreeDOS","Criar discos USB inicializáveis FreeDOS","Criar unidades USB inicializáveis FreeDOS","Crează drive USB bootabil FreeDOS","Создание загрузочных USB-дисков FreeDOS","Kreiraj FreeDOS butabilni USB disk","Vytvorte bootovacie usb zariadenia FreeDOS","Ustvarite FreeDOS zagonske USB pogone","Crear unidades USB de arranque FreeDOS","Skapa FreeDOS startbara USB-enheter","สร้าง USB ไดรฟ์บูตสำหรับระบบ FreeDOS","FreeDOS önyüklenebilir USB sürücüleri oluşturun","Створення завантажувальних пристроїв FreeDOS","Tạo USB có thể khởi động với FreeDOS"
|
||||
"Feature3","702","Text","","Create bootable drives from bootable ISOs (Windows, Linux, etc.)","إنشاء محركات أقراص قابلة للإقلاع من ملفات ISO القابلة للإقلاع (Windows و Linux وما إلى ذلك)","Създаване на стартиращи устройства от ISO образи (Windows, Linux и др.)","从可启动 ISO 文件 (Windows 和 Linux 等) 创建可启动驱动器","從可開機 ISO 檔案 (Windows 和 Linux 等) 建立可開機隨身碟","Stvaranje pogona za pokretanje iz ISO-ova za pokretanje (Windows, Linux itd.)","Vytváření bootovacích jednotek ze zaváděcích ISO (Windows, Linux atd.)","Lav opstartsbarer drev fra opstartsbarer ISOer (Window, Linux, osv.)","Opstartbare schijven aanmaken via opstartbare ISO's (Windows, Linux, enz)","Luo käynnistysasemia boottaavista ISO-kuvista (Windows, Linux jne.)","Créez des disques amorçables à partir d'images ISOs (Windows, Linux, etc.)","Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux, etc.)","Δημιουργήστε εκκινήσιμες μονάδες από ISO με δυνατότητα εκκίνησης (Windows, Linux, κ.λπ.)","יצירת כוננים הניתנים לאתחול מקובצי ISO הניתנים לאתחול (Windows, Linux וכו')","Bootolható meghajtók készítése bootolható ISO képfájlokból (Windows, Linux, stb.)","Buat perangkat yang dapat di boot dari ISO (Windows, Linux, dll.)","Crea unità avviabili da ISO avviabili (Windows, Linux, ecc.)","WindowsやLinuxなどのISOファイルから起動可能ドライブを作成します。","부팅 가능한 ISO (Windows, Linux 등)에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ISO failiem (Windows, Linux, u.c.)","Sukurkite įkrovos diskus iš įkrovos ISO (Windows, Linux ir kt.)","Buat pemacu boleh boot daripada ISO boleh boot (Windows, Linux, dll.)","Lag oppstartabar enhet/disk fra ISOer (Windows, Linux, etc.)","ایجاد درایوهای قابل بوت از ISOهای قابل بوت (ویندوز، لینوکس و غیره)","Twórz dyski rozruchowe z obrazów ISO (Windows, Linux itp.)","Criar discos inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Criar unidades inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Crează drive-uri bootabile de la ISO-uri bootabile (Windows, Linux, etc.)","Создание загрузочных дисков из загрузочных образов ISO (Windows, Linux и т.д.)","Kreirajte disk jedinice za pokretanje sistema od ISO-a koji se mogu pokretanja sistema (Windows, Linux itd.)","Vytvorte bootovacie jednotky z ISO súborov (Windows, Linux atď.)","Ustvarite zagonske pogone iz zagonskih ISO-jev (Windows, Linux itd.)","Cree unidades de arranque desde ISO de arranque (Windows, Linux, etc.)","Skapa startbara enheter från startbara ISO-filer (Windows, Linux, etc.)","สร้าง USB ไดรฟ์บูตจากไฟล์ ISO ที่บูตได้ (เช่น ไฟล์ติดตั้ง Windows หรือ Linux เป็นต้น)","Önyüklenebilir ISO'lardan önyüklenebilir sürücüler oluşturun (Windows, Linux, vb.)","Створення завантажувальних пристроїв з завантажувальних образів (Windows, Linux, тощо)","Tạo ổ đĩa có thể khởi động từ các file ISO có thể khởi động (Windows, Linux, v.v...)"
|
||||
"Feature3","702","Text","","Create bootable drives from bootable ISOs (Windows, Linux, etc.)","إنشاء محركات أقراص قابلة للإقلاع من ملفات ISO القابلة للإقلاع (Windows و Linux وما إلى ذلك)","Създаване на стартиращи устройства от ISO образи (Windows, Linux и др.)","从可启动 ISO 文件 (Windows 和 Linux 等) 创建可启动驱动器","從可開機 ISO 檔案 (Windows 和 Linux 等) 建立可開機隨身碟","Stvaranje pogona za pokretanje iz ISO-ova za pokretanje (Windows, Linux itd.)","Vytváření bootovacích jednotek ze zaváděcích ISO (Windows, Linux atd.)","Lav opstartsbarer drev fra opstartsbarer ISOer (Window, Linux, osv.)","Opstartbare schijven aanmaken via opstartbare ISO's (Windows, Linux, enz)","Luo käynnistysasemia boottaavista ISO-kuvista (Windows, Linux jne.)","Créez des disques amorçables à partir d'images ISOs (Windows, Linux, etc.)","Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux etc.)","Δημιουργήστε εκκινήσιμες μονάδες από ISO με δυνατότητα εκκίνησης (Windows, Linux, κ.λπ.)","יצירת כוננים הניתנים לאתחול מקובצי ISO הניתנים לאתחול (Windows, Linux וכו')","Bootolható meghajtók készítése bootolható ISO képfájlokból (Windows, Linux, stb.)","Buat perangkat yang dapat di boot dari ISO (Windows, Linux, dll.)","Crea unità avviabili da ISO avviabili (Windows, Linux, ecc.)","WindowsやLinuxなどのISOファイルから起動可能ドライブを作成します。","부팅 가능한 ISO (Windows, Linux 등)에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ISO failiem (Windows, Linux, u.c.)","Sukurkite įkrovos diskus iš įkrovos ISO (Windows, Linux ir kt.)","Buat pemacu boleh boot daripada ISO boleh boot (Windows, Linux, dll.)","Lag oppstartabar enhet/disk fra ISOer (Windows, Linux, etc.)","ایجاد درایوهای قابل بوت از ISOهای قابل بوت (ویندوز، لینوکس و غیره)","Twórz dyski rozruchowe z obrazów ISO (Windows, Linux itp.)","Criar discos inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Criar unidades inicializáveis a partir de ISOs inicializáveis (Windows, Linux, etc.)","Crează drive-uri bootabile de la ISO-uri bootabile (Windows, Linux, etc.)","Создание загрузочных дисков из загрузочных образов ISO (Windows, Linux и т.д.)","Kreirajte disk jedinice za pokretanje sistema od ISO-a koji se mogu pokretanja sistema (Windows, Linux itd.)","Vytvorte bootovacie jednotky z ISO súborov (Windows, Linux atď.)","Ustvarite zagonske pogone iz zagonskih ISO-jev (Windows, Linux itd.)","Cree unidades de arranque desde ISO de arranque (Windows, Linux, etc.)","Skapa startbara enheter från startbara ISO-filer (Windows, Linux, etc.)","สร้าง USB ไดรฟ์บูตจากไฟล์ ISO ที่บูตได้ (เช่น ไฟล์ติดตั้ง Windows หรือ Linux เป็นต้น)","Önyüklenebilir ISO'lardan önyüklenebilir sürücüler oluşturun (Windows, Linux, vb.)","Створення завантажувальних пристроїв з завантажувальних образів (Windows, Linux, тощо)","Tạo ổ đĩa có thể khởi động từ các file ISO có thể khởi động (Windows, Linux, v.v...)"
|
||||
"Feature4","703","Text","","Create bootable drives from bootable disk images, including compressed ones","إنشاء محركات أقراص قابلة للإقلاع من صور الأقراص القابلة للإقلاع ، بما في ذلك الأقراص المضغوطة","Създаване на стартиращи устройства от образи, включително компресирани такива","从可启动硬盘镜像 (包括压缩镜像) 创建可启动驱动器","從可開機硬碟映像檔 (包括壓縮映像檔) 建立可開機隨身碟","Stvaranje pogona za pokretanje iz slika diska za pokretanje, uključujući komprimirane","Vytváření zaváděcích jednotek ze zaváděcích obrazů disků, včetně komprimovaných","Lav opstartsbarer drev fra opstartsbarer disk billeder, inklusiv komprimerede billeder","Opstartbare schijven aanmaken van opstartbare schijf-images, inclusief gecomprimeerde images","Luo käynnistysasemia boottaavista levykuvista, pakatut kuvat mukaanlukien","Créez des disques amorçables à partir d'images disque, y compris à partir d'images compressées","Erstellen bootfähiger Laufwerke aus bootfähigen Festplatten-Images, einschließlich komprimierter Images","Δημιουργήστε μονάδες εκκίνησης από εικόνες δίσκου με δυνατότητα εκκίνησης, συμπεριλαμβανομένων συμπιεσμένων","יצירת כוננים הניתנים לאתחול מקובצי תמונת דיסק הניתנים לאתחול, כולל קבצים דחוסים","Bootolható meghajtók készítése bootolható lemez képfájlokból, beleértve a tömörítetteket is","Buat perangkat yang dapat di boot dari Disk Image, termasuk yang Disk Image yang terkompresi","Crea unità avviabili da immagini disco avviabili, incluse quelle compresse","圧縮済みのものを含むディスクイメージから起動可能ドライブを作成します。","압축된 이미지를 포함하여 부팅 가능한 디스크 이미지에서 부팅 가능한 드라이브 만들기","Izveido ielādes ierīces no ielādes disku virtuālajiem attēliem, tai skaitā arī no saspiestajiem","Sukurkite įkrovos diskus iš įkrovos disko vaizdų, įskaitant suspaustus","Buat pemacu boleh boot daripada imej cakera boleh boot, termasuk yang dimampatkan","Lag oppstartbare disker fra images, inkludert komprimerte sådan","درایوهای قابل بوت را از تصاویر دیسک قابل بوت، از جمله موارد فشرده، ایجاد کنید","Twórz dyski rozruchowe z obrazów dysków, włączając skompresowane","Criar discos inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Criar unidades inicializáveis a partir de imagens de disco inicializáveis, inclusive de imagens compactadas","Crează drive-uri de la imagini de disc bootabile, incluzând cele compresate","Создание загрузочных дисков из образов загрузочных дисков, в том числе сжатых","Kreiranje disk jedinica za pokretanje sistema sa slika diska koji se može pokretanja, uključujući kompresovane","Vytvorte bootovacie jednotky z diskových obrazov, vrátane tých komprimovaných","Ustvarite zagonske pogone iz slik diska, ki jih je mogoče zagnati, vključno s stisnjenimi","Cree unidades de arranque a partir de imágenes de disco de arranque, incluidas las comprimidas","Skapa startbara enheter från startbara diskavbildningar, inklusive komprimerade","สร้างไดรฟ์บูตจากดิสก์อิมเมจที่บูตได้ (รองรับไฟล์ดิสก์อิมเมจที่ถูกบีบอัด)","Sıkıştırılmış olanlar da dahil olmak üzere önyüklenebilir disk yansısından önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв з завантажувальних образів, у тому числі стиснутих","Tạo ổ đĩa có thể khởi động từ các tệp đĩa có thể khởi động, bao gồm cả tệp nén"
|
||||
"Feature5","704","Text","","Create BIOS or UEFI bootable drives, including UEFI bootable NTFS","إنشاء BIOS أو محركات أقراص UEFI قابلة للإقلاع ، بما في ذلك UEFI NTFS القابل للتشغيل","Създаване на BIOS или UEFI стартиращи устройства, включително UEFI стартиращ NTFS","创建 BIOS 或 UEFI 可启动驱动器,包括 UEFI 可启动的 NTFS 驱动器","建立 BIOS 或 UEFI 可開機隨身碟,包括 UEFI 下的可開機 NTFS 隨身碟","Stvaranje BIOS ili UEFI pogona za pokretanje, uključujući UEFI NTFS za pokretanje","Vytvořte zaváděcí jednotky BIOS nebo UEFI, včetně zaváděcích souborů NTFS UEFI","Lav BIOS eller UEFI opstartsbarer drev, inklusiv UEFI opstartsbarer NTFS","BIOS of UEFI opstartbare schijven aanmaken, inclusief UEFI opstartbare NTFS","Luo BIOS- tai UEFI-boottaavia asemia, mukaanlukien UEFI-boottaavat NTFS-asemat","Créez des disques amorçables BIOS ou UEFI, y compris des disques UEFI amorçables utilisant NTFS","Erstellen von BIOS- oder UEFI-bootfähigen Laufwerken, einschließlich UEFI-bootfähigem NTFS","Δημιουργήστε μονάδες δίσκου με δυνατότητα εκκίνησης BIOS ή UEFI, συμπεριλαμβανομένων NTFS με δυνατότητα εκκίνησης UEFI","יצירת כוננים הניתנים לאתחול ממחשבים התומכים ב־BIOS או UEFI, לרבות כוננים הניתנים לאתחול מ־UEFI, המשתמשים במערכת הקבצים NTFS","BIOS-ból vagy UEFI-ből bootolható meghajtók készítése, beleértve az UEFI-ből bootolható NTFS meghajtókat is","Buat perangkat BIOS atau UEFI yang dapat di boot, termasuk perangkat NTFS yang dapat di boot oleh UEFI","Crea unità avviabili BIOS o UEFI, incluso NTFS avviabile UEFI","UEFI:NTFSを含むBIOS及びUEFIで起動可能なドライブを作成します。","UEFI 부팅 가능한 NTFS를 포함하여 BIOS 또는 UEFI 부팅 가능 드라이브 만들기","Izveido BIOS vai UEFI ielādes ierīces, ieskaitot UEFI ielādi no NTFS","Sukurkite BIOS arba UEFI įkrovos diskus, įskaitant UEFI įkrovos NTFS","Buat pemacu boleh boot BIOS atau UEFI, termasuk NTFS boleh boot UEFI","Lag BIOS eller UEFI oppstartbare disker, inkludert UEFI oppstartbar NTFS","درایوهای قابل بوت بایوس یا UEFI از جمله NTFS قابل بوت UEFI ایجاد کنید","Stwórz dysk rozruchowy BIOS lub UEFI, włączając bootowalny dysk UEFI NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Criar discos inicializáveis BIOS ou UEFI, inclusive discos UEFI inicializáveis usando NTFS","Crează discuri bootabile BIOS sau UEFI, incluzând NTFS-uri bootabile de UEFI","Создание загрузочных дисков BIOS или UEFI, включая загрузочный UEFI NTFS","Kreiranje BIOS ili UEFI disk jedinica za pokretanje sistema, uključujući NTFS sa UEFI pokretanjem sistema","Vytvorte bootovacie jednotky systému BIOS alebo UEFI vrátane UEFI bootovateľnej jednotky NTFS","Ustvarite zagonske pogone BIOS ali UEFI, vključno z UEFI bootable NTFS","Cree unidades de arranque BIOS o UEFI, incluido NTFS de arranque UEFI","Skapa BIOS- eller UEFI-startbara enheter, inklusive UEFI-startbar NTFS","สร้างไดรฟ์บูตสำหรับระบบ BIOS หรือ UEFI และ UEFI bootable NTFS","UEFI önyüklenebilir NTFS dahil BIOS ya da UEFI önyüklenebilir sürücüler oluşturun","Створення завантажувальних пристроїв BIOS чи UEFI, включаючи завантажувальний UEFI NTFS","Tạo ổ đĩa có thể khởi động với hệ thống BIOS hoặc UEFI, bao gồm cả NTFS có thể khởi động với UEFI"
|
||||
"Feature6","705","Text","","Create 'Windows To Go' drives","إنشاء محركات أقراص ""Windows To Go\","Създаване на 'Windows To Go' устройства","创建 'Windows To Go' 驱动器","建立 'Windows To Go' 隨身碟","Stvaranje pogona ""Windows To Go\","Vytvoření jednotek ""Windows To Go","Lav 'Windows To Go' drev","'Windows To Go'-schijven aanmaken","Luo 'Windows To Go' -asemia","Créez des disques 'Windows To Go'","Erstellen von ""Windows To Go""-Laufwerken","Δημιουργήστε μονάδες δίσκου ""Windows To Go\","יצירת כונני Windows To Go","'Windows To Go' meghajtók készítése","Buat perangkat Windows To Go","Crea unità 'Windows To Go'","Windows To Goドライブを作成します。","'Windows To Go' 드라이브 만들기","Izveido 'Windows To Go' ierīces","Sukurkite ""Windows To Go"" diskus","Buat pemacu 'Windows To Go'","Lag 'Windows To Go' disker","درایوهای ""Windows To Go"" را ایجاد کنید","Stwórz dysk 'Windows To Go'","Criar discos 'Windows To Go'","Criar discos 'Windows To Go'","Crează discuri 'Windows To Go'","Создание дисков Windows To Go","Kreiranje disk jedinica ""Windows to Go\","Vytvorte jednotky „Windows To Go\","Ustvarjanje pogonov »Windows To Go'","Cree unidades 'Windows To Go'","Skapa ""Windows To Go""-enheter","สร้างไดรฟ์ของ 'Windows To Go'","'Windows To Go' sürücüleri oluşturun","Створення пристроїв 'Windows To Go'","Tạo ổ đĩa 'Windows To Go'"
|
||||
"Feature6","705","Text","","Create 'Windows To Go' drives","إنشاء محركات أقراص ""Windows To Go\","Създаване на 'Windows To Go' устройства","创建 'Windows To Go' 驱动器","建立 'Windows To Go' 隨身碟","Stvaranje pogona ""Windows To Go\","Vytvoření jednotek ""Windows To Go","Lav 'Windows To Go' drev","'Windows To Go'-schijven aanmaken","Luo 'Windows To Go' -asemia","Créez des disques 'Windows To Go'","Erstellen von 'Windows To Go'-Laufwerken","Δημιουργήστε μονάδες δίσκου ""Windows To Go\","יצירת כונני Windows To Go","'Windows To Go' meghajtók készítése","Buat perangkat Windows To Go","Crea unità 'Windows To Go'","Windows To Goドライブを作成します。","'Windows To Go' 드라이브 만들기","Izveido 'Windows To Go' ierīces","Sukurkite ""Windows To Go"" diskus","Buat pemacu 'Windows To Go'","Lag 'Windows To Go' disker","درایوهای ""Windows To Go"" را ایجاد کنید","Stwórz dysk 'Windows To Go'","Criar discos 'Windows To Go'","Criar discos 'Windows To Go'","Crează discuri 'Windows To Go'","Создание дисков Windows To Go","Kreiranje disk jedinica ""Windows to Go\","Vytvorte jednotky „Windows To Go\","Ustvarjanje pogonov »Windows To Go'","Cree unidades 'Windows To Go'","Skapa ""Windows To Go""-enheter","สร้างไดรฟ์ของ 'Windows To Go'","'Windows To Go' sürücüleri oluşturun","Створення пристроїв 'Windows To Go'","Tạo ổ đĩa 'Windows To Go'"
|
||||
"Feature7","706","Text","","Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot","قم بإنشاء محركات تثبيت ويندوز 11 لأجهزة الكمبيوتر التي لا تحتوي على TPM أو الإقلاع الآمن (Secure Boot)","Създаване на Windows 11 инсталационно устройство за компютри, които нямат TPM или Secure Boot","为没有 TPM 或安全启动功能的电脑创建 Windows 11 安装驱动器","為沒有 TPM 或安全開機功能的電腦建立 Windows 11 安裝隨身碟","Stvaranje instalacijskih pogona sustava Windows 11 za PC-jeve koji nemaju TPM ili Sigurno pokretanje","Vytvoření instalačních jednotek systému Windows 11 pro počítače bez čipu TPM nebo Secure Boot","Lav Windows 11 installations drev for PCer der ikker har TPM eller Secure Boot","Windows 11 installatieschijven aanmaken voor pc's die geen TPM of Secure Boot hebben","Luo Windows 11 -asennusasemia tietokoneille, jotka eivät tue TPM- tai Secure Boot -ominaisuuksia","Créez des disques d'installation Windows 11 pour des PCs qui ne disposent pas de TPM ou Secure Boot","Erstellen von Windows 11-Installationslaufwerken für PCs ohne TPM oder Secure Boot","Δημιουργήστε μονάδες εγκατάστασης των Windows 11 για υπολογιστές που δεν διαθέτουν TPM ή Ασφαλή Εκκίνηση","יצירת כונני התקנה של Windows 11 עבור מחשבים שאין להם TPM או Secure Boot","Windows 11 telepítési meghajtók készítése olyan PC-k számára, amelyek nem rendelkeznek TPM vagy Secure Boot funkciókkal","Buat perangkat pemasang Windows 11 untuk PC yang tidak mempunyai TPM atau Secure Boot","Crea unità di installazione di Windows 11 per PC che non dispongono di TPM o avvio protetto","TPM及びセキュアブート非対応のPC向けのWindows 11インストールドライブを作成します","TPM 또는 보안 부팅이 없는 PC용 Windows 11 설치 드라이브 만들기","Izveido Windows 11 instalācijas ierīces datoriem, kam nav TPM vai Secure Boot","Sukurkite Windows 11 diegimo diskus kompiuteriams, kuriuose nėra TPM arba saugaus įkrovimo","Buat pemacu pemasangan Windows 11 untuk PC yang tidak mempunyai TPM atau But Selamat","Lag oppstartsmedia for Windows 11 som ikke krever TPM eller Secure Boot","درایوهای نصب ویندوز 11 را برای رایانه هایی که TPM یا Secure Boot ندارند ایجاد کنید","Twórz dyski instalacyjne systemu Windows 11 dla komputerów, które nie posiadają modułu TPM ani Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Secure Boot","Criar discos de instalação do Windows 11 para PCs que não possuem TPM ou Arranque Seguro","Crează drive de instalare Windows 11 pe computere care nu au TPM sau Bootare Securizată","Создание установочных дисков Windows 11 для компьютеров без TPM или безопасной загрузки","Kreiranje windows 11 instalacionih disk jedinica za računare koji nemaju TPM ili bezbedno pokretanje sistema","Vytvorte inštalačné jednotky Windows 11 pre počítače, ktoré nemajú modul TPM, ani Secure Boot","Ustvarjanje namestitvenih pogonov za Windows 11 za računalnike, ki nimate TPM ali Varnega zagona","Cree unidades de instalación de Windows 11 para PC que no tienen TPM o Arranque seguro","Skapa installationsenheter till Windows 11 för datorer som inte har TPM eller säker start","สร้างไดรฟ์ติดตั้ง Windows 11 สำหรับคอมพิวเตอร์ที่ไม่มี TPM หรือ Secure Boot","TPM ya da Güvenli Önyüklemeye sahip olmayan bilgisayarlar için Windows 11 kurulum sürücüleri oluşturun","Створення інсталяційних дисків Windows 11 для ПК, які не мають TPM чи Secure Boot","Tạo ổ đĩa cài đặt Windows 11 cho các máy tính không có TPM hoặc Secure Boot"
|
||||
"Feature8","707","Text","","Create persistent Linux partitions","إنشاء Persistent Linux partitions","Създаване на устойчиви Linux дялове","创建持久 Linux 分区","建立持續性 Linux 磁區","Stvaranje trajnih Linux particija","Vytvoření trvalých oddílů systému Linux","Lav vedvarende Linux adskillelser","Persistent Linux partities aanmaken","Luo pysyviä Linux-osioita","Créez des partitions persistentes pour Linux","Persistente Linux-Partitionen erstellen","Δημιουργήστε μόνιμα διαμερίσματα Linux","יצירת מחיצות Linux קבועות","Tartós Linux partíciók készítése","Buat partisi Linux yang tetap/persistent","Crea partizioni persistenti Linux","記録用Linuxパーティションを作成します。","영구 리눅스 파티션 만들기","Izveido pastāvīgas Linux partīcijas","Sukurkite nuolatinius Linux skaidinius","Buat partition Linux berterusan","Lag persistente Linux partisjoner","ایجاد پارتیشن های لینوکس دائمی","Utwórz trwałe partycje Linux","Criar partições persistentes para Linux","Crie partições persistentes para Linux","Crează partiție de Linux persistentă","Создание постоянных разделов Linux","Kreiranje upornih Linux particija","Vytvorte trvalé oblasti systému Linux","Ustvarjanje trajnih Linux particij","Crear particiones persistentes de Linux","Skapa beständiga Linux-partitioner","สร้าง Linux partition แบบ persistent","Kalıcı Linux bölümleri oluşturun","Створення розділу збереження Linux","Tạo phân vùng Linux liên tục"
|
||||
"Feature9","708","Text","","Create VHD/DD images of the selected drive","إنشاء صور VHD / DD لمحرك الأقراص المحدد","Създаване на VHD/DD образи на избраното устройство","为选择的驱动器创建 VHD/DD 镜像","為選取的磁碟機建立 VHD/DD 映像檔","Stvaranje VHD/DD slika odabranog pogona","Vytvoření obrazů VHD/DD z vybrané jednotky","Lav VHD/DD billeder af det valgte drev","VHD/DD-images van de geselecteerde schijf aanmaken","Luo VHD/DD-kuvia valitusta asemasta","Créez des images VHD/DD du périphérique sélectionné","VHD/DD-Images des ausgewählten Laufwerks erstellen","Δημιουργήστε εικόνες VHD/DD της επιλεγμένης μονάδας δίσκου","יצירת קובצי תמונה מסוג VHD/DD של הכונן שנבחר","VHD/DD képfájl készítése a kiválasztott meghajtóról","Buat image VHD/DD dari penyimpanan yang dipilih","Crea immagini VHD/DD dell'unità selezionata","選択されたドライブのVHD/DDイメージを作成します。","선택한 드라이브의 VHD/DD 이미지 만들기","Izveido izvēlētā diska VHD/DD virtuālos attēlus","Sukurkite pasirinkto disko VHD / DD vaizdus","Buat imej VHD/DD bagi pemacu yang dipilih","Lag VHD/DD speilinger av valgt disk","تصاویر VHD/DD از درایو انتخاب شده ایجاد کنید","Stwórz obraz VHD/DD z wybranego dysku","Criar imagens VHD/DD do dispositivo selecionado","Criar imagens VHD/DD do dispositivo selecionado","Crează imagini VHD/DD de pe drive-ul selectat","Создание образов VHD/DD выбранного диска","Kreiranje VHD/DD slika izabrane disk jedinice","Vytvorte obrazy VHD/DD z vybratej jednotky","Ustvarjanje VHD/DD slik izbranega pogona","Cree imágenes VHD/DD de la unidad seleccionada","Skapa VHD/DD-avbilder av den valda enheten","สร้างอิมเมจไฟล์แบบ VHD/DD จากไดรฟ์ที่เลือก","Seçilen sürücünün VHD/DD yansılarını oluşturun","Створення образів VHD/DD з вибраних дисків","Tạo tệp VHD/DD từ ổ đĩa đã chọn"
|
||||
"Feature10","709","Text","","Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image","حساب المجاميع الإختبارية MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة","Изчисляване на MD5, SHA-1, SHA-256 и SHA-512 чексуми на избраният образ","计算被选择镜像的 MD5、SHA-1、SHA-256 和 SHA-512 校验码","計算被選取映像的 MD5、SHA-1、SHA-256 和 SHA-512 檢查碼","Izračunajte kontrolne zbrojeve odabrane slike MD5, SHA-1, SHA-256 i SHA-512","Výpočet kontrolních součtů MD5, SHA-1, SHA-256 a SHA-512 vybraného obrazu","Beregn MD5, SHA-1, SHA-256 og SHA-512 checksums af det valgte billede","MD5, SHA-1, SHA-256 en SHA-512 controlesommen berekenen van de geselecteerde image","Laske MD5, SHA-1, SHA-256 ja SHA-512 tarkistussummia valitusta levykuvasta","Calculez les sommes de contrôle MD5, SHA-1, SHA-256 et SHA-512 de l'image sélectionnée","Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Bild","Υπολογίστε τα αθροίσματα ελέγχου MD5, SHA-1, SHA-256 και SHA-512 της επιλεγμένης εικόνας","חישוב סיכומי ביקורת מסוג MD5, SHA-1, SHA-256 ו־SHA-512 של קובץ התמונה שנבחרה","A kiválasztott képfájl MD5, SHA-1, SHA-256 és SHA-512 ellenőrző összegének kiszámítása","Hitung checksum MD5, SHA-1, SHA-256 dan SHA-512 dari image yang dipilih","Calcola i checksum MD5, SHA-1, SHA-256 e SHA-512 dell'immagine selezionata","選択されたイメージのMD5、SHA-1、SHA-256及びSHA-512チェックサムを計算します。","선택한 이미지의 MD5, SHA-1, SHA-256 및 SHA-512 체크섬 계산","Izskaitļo izvēlētā virtuālā attēla MD5, SHA-1, SHA-256 un SHA-512 kontrolsummas","Apskaičiuokite pasirinkto vaizdo MD5, SHA-1, SHA-256 ir SHA-512 kontrolines sumas","Kira MD5, SHA-1, SHA-256 dan SHA-512 checksum imej yang dipilih","Kalkuler MD5, SHA-1, SHA-256 og SHA-512 sjekksummer fra valgt speiling","MD5، SHA-1، SHA-256 و SHA-512 را برای تصویر انتخابی محاسبه کنید","Oblicz sumy kontrolne MD5, SHA-1, SHA-256 i SHA-512 dla wybranego obrazu","Calcular somas de verificação MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Calcular checksums MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Compută MD5, SHA-1, SHA-256 și SHA-512 suma de control ale imaginilor selectate","Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа","Izračunajte MD5, SHA-1, SHA-256 i SHA-512 kontrolne preglede izabrane slike","Vypočítajte kontrolné súčty vybratého obrazu (MD5, SHA-1, SHA-256 a SHA-512)","Račun MD5, SHA-1, SHA-256 in SHA-512 kontrolni vsoti izbrane slike","Calcule las sumas de comprobación MD5, SHA-1, SHA-256 y SHA-512 de la imagen seleccionada","Beräkna kontrollsummor MD5, SHA-1, SHA-256 och SHA-512 för den valda avbilden","คำนวณรหัส MD5, SHA-1, SHA-256, SHA-512 ของไฟล์อิมเมจที่เลือก","Seçilen yansının MD5, SHA-1, SHA-256 ve SHA-512 sağlama toplamlarını hesaplayın","Обчислення контрольних сум MD5, SHA-1, SHA-256 та SHA-512 для вибраних образів","Tính tổng kiểm MD5, SHA-1, SHA-256 và SHA-512 của tệp đã chọn"
|
||||
"Feature10","709","Text","","Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image","حساب المجاميع الإختبارية MD5 و SHA-1 و SHA-256 و SHA-512 للصورة المحددة","Изчисляване на MD5, SHA-1, SHA-256 и SHA-512 чексуми на избраният образ","计算被选择镜像的 MD5、SHA-1、SHA-256 和 SHA-512 校验码","計算被選取映像的 MD5、SHA-1、SHA-256 和 SHA-512 檢查碼","Izračunajte kontrolne zbrojeve odabrane slike MD5, SHA-1, SHA-256 i SHA-512","Výpočet kontrolních součtů MD5, SHA-1, SHA-256 a SHA-512 vybraného obrazu","Beregn MD5, SHA-1, SHA-256 og SHA-512 checksums af det valgte billede","MD5, SHA-1, SHA-256 en SHA-512 controlesommen berekenen van de geselecteerde image","Laske MD5, SHA-1, SHA-256 ja SHA-512 tarkistussummia valitusta levykuvasta","Calculez les sommes de contrôle MD5, SHA-1, SHA-256 et SHA-512 de l'image sélectionnée","Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Image","Υπολογίστε τα αθροίσματα ελέγχου MD5, SHA-1, SHA-256 και SHA-512 της επιλεγμένης εικόνας","חישוב סיכומי ביקורת מסוג MD5, SHA-1, SHA-256 ו־SHA-512 של קובץ התמונה שנבחרה","A kiválasztott képfájl MD5, SHA-1, SHA-256 és SHA-512 ellenőrző összegének kiszámítása","Hitung checksum MD5, SHA-1, SHA-256 dan SHA-512 dari image yang dipilih","Calcola i checksum MD5, SHA-1, SHA-256 e SHA-512 dell'immagine selezionata","選択されたイメージのMD5、SHA-1、SHA-256及びSHA-512チェックサムを計算します。","선택한 이미지의 MD5, SHA-1, SHA-256 및 SHA-512 체크섬 계산","Izskaitļo izvēlētā virtuālā attēla MD5, SHA-1, SHA-256 un SHA-512 kontrolsummas","Apskaičiuokite pasirinkto vaizdo MD5, SHA-1, SHA-256 ir SHA-512 kontrolines sumas","Kira MD5, SHA-1, SHA-256 dan SHA-512 checksum imej yang dipilih","Kalkuler MD5, SHA-1, SHA-256 og SHA-512 sjekksummer fra valgt speiling","MD5، SHA-1، SHA-256 و SHA-512 را برای تصویر انتخابی محاسبه کنید","Oblicz sumy kontrolne MD5, SHA-1, SHA-256 i SHA-512 dla wybranego obrazu","Calcular somas de verificação MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Calcular checksums MD5, SHA-1, SHA-256 e SHA-512 da imagem selecionada","Compută MD5, SHA-1, SHA-256 și SHA-512 suma de control ale imaginilor selectate","Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа","Izračunajte MD5, SHA-1, SHA-256 i SHA-512 kontrolne preglede izabrane slike","Vypočítajte kontrolné súčty vybratého obrazu (MD5, SHA-1, SHA-256 a SHA-512)","Račun MD5, SHA-1, SHA-256 in SHA-512 kontrolni vsoti izbrane slike","Calcule las sumas de comprobación MD5, SHA-1, SHA-256 y SHA-512 de la imagen seleccionada","Beräkna kontrollsummor MD5, SHA-1, SHA-256 och SHA-512 för den valda avbilden","คำนวณรหัส MD5, SHA-1, SHA-256, SHA-512 ของไฟล์อิมเมจที่เลือก","Seçilen yansının MD5, SHA-1, SHA-256 ve SHA-512 sağlama toplamlarını hesaplayın","Обчислення контрольних сум MD5, SHA-1, SHA-256 та SHA-512 для вибраних образів","Tính tổng kiểm MD5, SHA-1, SHA-256 và SHA-512 của tệp đã chọn"
|
||||
"Feature11","710","Text","","Perform bad blocks checks, including detection of ""fake"" flash drives","إجراء فحوصات كتل تالفة ، بما في ذلك الكشف عن محركات أقراص فلاش ""زائفة\","Проверяване за лоши блокове, включително засичане на ""фалшиви"" устройства","执行坏块检查,包括对”假“U盘的检测","執行壞軌檢查,包括對”假“USB 快閃磁碟
|
||||
的偵測","Izvršite provjere loših blokova, uključujući otkrivanje ""lažnih"" flash pogona","Provést kontrolu vadných bloků, včetně detekce ""falešných"" bloků. flash disky","Udøv dårlige blokke tjeks, inklusiv opdagelse af ""falske"" flashdrev","Controles uitvoeren op slechte blokken, inclusief detectie van ""valse"" flashdrives","Suorita viallisten lohkojen tarkistuksia, sisältäen ""valheellisten"" muistitikkujen tunnistamisen","Executez un test de mauvais secteurs avec detection des ""fake drives\","Durchführung von Prüfungen auf fehlerhafte Blöcke, einschließlich der Erkennung von ""gefälschten"" Flash-Laufwerken","Εκτελέστε ελέγχους εσφαλμένων block, συμπεριλαμβανομένου του εντοπισμού ""ψευδών"" μονάδων flash","ביצוע בדיקות אחר בלוקים (אזורים) פגומים, כולל זיהוי של כונני הבזק ""מזוייפים\","Hibás blokkok ellenőrzése, beleértve a ""hamis"" flash meghajtók detektálását","Lakukan cek Blok yang buruk, termasuk deteksi USB Flash Disk ""PALSU\","Esegui controlli dei blocchi danneggiati, incluso il rilevamento di unità flash ""false\","不良ブロックチェック及び容量詐欺ドライブの検知を行います。","""위조"" 플래시 드라이브 감지를 포함하여 불량 블록 검사 수행","Izpilda bojāto bloku pārbaudi ieskaitot ""falsificēto"" nesēju noteikšanu","Atlikite blogų blokų patikrinimus, įskaitant ""netikrų"" flash diskų aptikimą","Melakukan pemeriksaan blok buruk, termasuk pengesanan pemacu kilat ""palsu\","Utfør sjekk for dårlige sektorer, inkludert sjekk for forfalskede flash disker","بررسی بلوک های بد، از جمله تشخیص درایوهای فلش ""جعلی"" را انجام دهید","Sprawdź dysk pod względem spójności danych lub wykryj ""nieoryginalny"" pendrive","Executar verificações de blocos defeituosos, incluindo detecção de unidades flash ""falsificadas\","Executar verificações de blocos inválidos, incluindo a deteção de unidades flash ""falsas\","Verifică blocuri rele, incluzând detectarea de drive-uri flash ""false\","Проверка на плохие блоки, обнаружение ""поддельных"" флешек","Izvršite provere loših blokova, uključujući otkrivanje ""lažnih"" fleš diskova","Vykonajte kontroly zlých blokov vrátane detekcie „falošných"" prenosných diskov","Izvajanje preverjanj slabih blokov, vključno z odkrivanjem »lažnih« bliskavic","Realice comprobaciones de bloques defectuosos, incluida la detección de unidades flash ""falsas\","Utför kontroll av trasiga block, inklusive upptäckt av ""falska"" USB-minnen","ตรวจสอบจุดบกพร่อง รวมไปถึงการทดสอบแฟลชไดรฟ์ว่าเป็น ""ของปลอม"" หรือไม่","""Sahte"" flash sürücülerin tespiti de dahil olmak üzere hatalı blok kontrolleri gerçekleştirin","Перевірка дисків (включаючи фальшиві диски)","Thực hiện kiểm tra điểm lỗi, bao gồm phát hiện ổ đĩa ""giả\"
|
||||
"Feature12","711","Text","","Download official Microsoft Windows retail ISOs","قم بتنزيل ملفات ISO الرسمية الخاصة بـ Microsoft Windows","Изтегляне на официални Microsoft Windows ISO образи","下载微软官方 Windows 镜像","下載微軟官方 Windows 映像檔","Preuzimanje službenih ISO-ova za maloprodaju sustava Microsoft Windows","Stažení oficiálních souborů ISO systému Microsoft Windows","Hent officielle Microsoft Windows detail ISOer","Officiële Microsoft Windows retail ISO's downloaden","Lataa virallisia Microsoft Windowsin jälleenmyyntiversion ISO-levykuvia","Téléchargez des images ISOs commerciales officielles de Microsoft Windows","Offizielle Microsoft Windows-ISOs herunterladen","Κατεβάστε τα επίσημα retail ISO των Microsoft Windows","הורדת קובצי ה־ISO הקמעונאיים הרשמיים של Microsoft Windows","Hivatalos Microsoft Windows kiskereskedelmi ISO képfájlok letöltése","Unduh ISO Microsoft Windows resmi","Scarica le ISO ufficiali di Microsoft Windows","マイクロソフト公式のWindows ISOをダウンロードします。","공식 Microsoft Windows 리테일 ISO 다운로드","Lejupielādē oficiālos Microsoft ISO failus","Atsisiųskite oficialius Microsoft Windows mažmeninės prekybos ISO","Muat turun rasmi ISO runcit Microsoft Windows","Last ned offisielle Windows ISOer","ISO های رسمی ماکروسافت را دریافت کنید","Pobierz oficjalny obraz ISO systemu Microsoft Windows","Baixar ISOs oficiais do Microsoft Windows","Transferir ISOs oficiais do Microsoft Windows Retail","Descarcă un Microsoft Windows ISO oficial de vânzare","Загрузка официальных ISO-образов Windows","Preuzmite zvanične Microsoft Windows maloprodajne ISO-ove","Stiahnite si oficiálne ISO pre Microsoft Windows","Prenos uradnih Microsoft Windows maloprodaja ISOs","Descargue los ISO oficiales de Microsoft Windows","Ladda ner officiella Microsoft Windows ISO-filer","ดาวน์โหลดไฟล์ ISO ของ Microsoft Windows จากเว็บไซต์ทางการของ Microsoft","Resmi Microsoft Windows Retail ISO'larını indirin","Завантаження офіційних образів Microsoft Windows","Tải xuống các tệp Microsoft Windows ISO bán lẻ chính thức"
|
||||
|
||||
|
@ -29,7 +29,7 @@ set WDK_PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64
|
||||
set ZIP_PATH=C:\Program Files\7-Zip
|
||||
set SIGNATURE_SHA1=fc4686753937a93fdcd48c2bb4375e239af92dcb
|
||||
set MANIFEST=AppxManifest.xml
|
||||
set ARCHS=x86 x64 arm arm64
|
||||
set ARCHS=x86 x64 arm64
|
||||
set DEFAULT_SCALE=200
|
||||
set OTHER_SCALES=100 125 150 400
|
||||
set SCALED_IMAGES=LargeTile SmallTile Square44x44Logo Square150x150Logo StoreLogo Wide310x150Logo
|
||||
@ -69,25 +69,25 @@ for %%a in (%ARCHS%) do (
|
||||
)
|
||||
)
|
||||
|
||||
rem exiftool.exe can't be installed in the Windows system directories...
|
||||
if not exist exiftool.exe (
|
||||
echo exiftool.exe must exist in this directory
|
||||
rem Use our own get_pe_info executable - source is in this directory
|
||||
if not exist ..\get_pe_info.exe (
|
||||
echo ..\get_pe_info.exe must exist in the parent directory. Compile it with MinGW.
|
||||
goto out
|
||||
)
|
||||
|
||||
rem Make sure we're not trying to create a package from an ALPHA or BETA version!
|
||||
exiftool -s3 -*InternalName* rufus_x64.exe | findstr /C:"ALPHA" 1>nul && (
|
||||
..\get_pe_info.exe -i rufus_x64.exe | findstr /C:"ALPHA" 1>nul && (
|
||||
echo Alpha version detected - ABORTED
|
||||
goto out
|
||||
)
|
||||
exiftool -s3 -*InternalName* rufus_x64.exe | findstr /C:"BETA" 1>nul && (
|
||||
..\get_pe_info.exe -i rufus_x64.exe | findstr /C:"BETA" 1>nul && (
|
||||
echo Beta version detected - ABORTED
|
||||
goto out
|
||||
)
|
||||
|
||||
rem Populate the version from the executable
|
||||
if "%VERSION_OVERRIDE%"=="" (
|
||||
exiftool -s3 -*FileVersionNumber* rufus_x64.exe > version.txt
|
||||
..\get_pe_info.exe -v rufus_x64.exe > version.txt
|
||||
set /p VERSION=<version.txt
|
||||
del version.txt
|
||||
) else (
|
||||
|
||||
BIN
res/dbx/amd64_DBXUpdate.bin
Normal file
BIN
res/dbx/amd64_DBXUpdate.bin
Normal file
Binary file not shown.
BIN
res/dbx/arm64_DBXUpdate.bin
Normal file
BIN
res/dbx/arm64_DBXUpdate.bin
Normal file
Binary file not shown.
BIN
res/dbx/arm_DBXUpdate.bin
Normal file
BIN
res/dbx/arm_DBXUpdate.bin
Normal file
Binary file not shown.
17
res/dbx/dbx_info.h
Normal file
17
res/dbx/dbx_info.h
Normal file
@ -0,0 +1,17 @@
|
||||
// Autogenerated - DO NOT EDIT
|
||||
|
||||
#include <stdint.h>
|
||||
#pragma once
|
||||
|
||||
struct {
|
||||
char* url;
|
||||
uint64_t timestamp;
|
||||
} dbx_info[] = {
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/x86/DBXUpdate.bin", 1760555920 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/amd64/DBXUpdate.bin", 1760555920 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/arm/DBXUpdate.bin", 1740428422 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/arm64/DBXUpdate.bin", 1740428422 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/ia64/DBXUpdate.bin", 0 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/riscv64/DBXUpdate.bin", 0 },
|
||||
{ "https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/loongarch64/DBXUpdate.bin", 0 },
|
||||
};
|
||||
50
res/dbx/dbx_update.sh
Executable file
50
res/dbx/dbx_update.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/env bash
|
||||
# This script downloads the latest UEFI DBXs and creates the dbx_info.h header
|
||||
|
||||
github_url="https://api.github.com/"
|
||||
|
||||
# Retrieve the commit epoch from a GitHub URL or 0 if not available
|
||||
get_commit_date() {
|
||||
url=$1
|
||||
if [[ "${url}" =~ ^"${github_url}" ]]; then
|
||||
parts=($(awk -F'contents/' '{ for(i=1;i<=NF;i++) print $i }' <<< ${url}))
|
||||
date_url="${parts[0]}commits?path=${parts[1]//\//%2F}&page=1&per_page=1"
|
||||
epoch="$(curl -s -L ${date_url} | python -m json.tool | grep -m1 \"date\": | sed -e 's/^.*\"date\":.*\"\(.*\)\".*/\1/' | date -u -f - +%s)"
|
||||
fi
|
||||
echo ${epoch:-0}
|
||||
}
|
||||
|
||||
# Should be in the same order as the ArchType enum in Rufus with the first entry (ARCH_UNKNOWN = 0) skipped
|
||||
# Note that are GUESSING the RISC-V 64 and LoongArch 64 URLS since there are no DBX revocations for those archs yet.
|
||||
# Also use api.github.com (which is rate limited) so we don't get the stupid 404 GitHub page on error, which is 10
|
||||
# times larger than our largest DBX update binary...
|
||||
declare -a dbx_urls=(
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/x86/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/amd64/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/arm/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/arm64/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/ia64/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/riscv64/DBXUpdate.bin'
|
||||
'https://api.github.com/repos/microsoft/secureboot_objects/contents/PostSignedObjects/DBX/loongarch64/DBXUpdate.bin'
|
||||
)
|
||||
|
||||
cat << EOF > dbx_info.h
|
||||
// Autogenerated - DO NOT EDIT
|
||||
|
||||
#include <stdint.h>
|
||||
#pragma once
|
||||
|
||||
struct {
|
||||
char* url;
|
||||
uint64_t timestamp;
|
||||
} dbx_info[] = {
|
||||
EOF
|
||||
for url in "${dbx_urls[@]}"; do
|
||||
if [[ ! -z "${url}" ]]; then
|
||||
dst=$(echo ${url} | cut -f10,11 -d'/' | tr '/' '_')
|
||||
curl -L -H "Accept: application/vnd.github.v3.raw" "${url}" -o "${dst}"
|
||||
fgrep -q "Not Found" "${dst}" && :> "${dst}"
|
||||
fi
|
||||
echo " { \"${url}\", $(get_commit_date ${url}) }," >> dbx_info.h
|
||||
done
|
||||
echo "};" >> dbx_info.h
|
||||
0
res/dbx/ia64_DBXUpdate.bin
Normal file
0
res/dbx/ia64_DBXUpdate.bin
Normal file
0
res/dbx/loongarch64_DBXUpdate.bin
Normal file
0
res/dbx/loongarch64_DBXUpdate.bin
Normal file
4
res/dbx/readme.txt
Normal file
4
res/dbx/readme.txt
Normal file
@ -0,0 +1,4 @@
|
||||
This directory contains the official UEFI revocation databases, as provided by
|
||||
https://github.com/microsoft/secureboot_objects/tree/main/PostSignedObjects.
|
||||
|
||||
These are used by Rufus to warn the user if a UEFI bootloader has been revoked.
|
||||
0
res/dbx/riscv64_DBXUpdate.bin
Normal file
0
res/dbx/riscv64_DBXUpdate.bin
Normal file
BIN
res/dbx/x86_DBXUpdate.bin
Normal file
BIN
res/dbx/x86_DBXUpdate.bin
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +1,5 @@
|
||||
All of the executables found in this repository where extracted from:
|
||||
https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.3/official/FD13-FullUSB.zip
|
||||
All of the executables found in this repository where extracted from FreeDOS v1.4:
|
||||
https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.4/FD14-FullUSB.zip
|
||||
|
||||
o COMMAND.COM was extracted from packages\base\freecom.zip
|
||||
o DISPLAY.EXE was extracted from packages\base\display.zip
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
This directory contains the Grub4DOS boot records that are used by Rufus
|
||||
|
||||
* grldr.mbr was taken from the official 2023-03-06 release from
|
||||
* grldr.mbr was taken from the official 2024-02-26 release from
|
||||
https://github.com/chenall/grub4dos/releases/tag/0.4.6a
|
||||
|
||||
* Note that, for convenience reasons, the first 512 bytes from this grldr.mbr are
|
||||
|
||||
@ -6,10 +6,16 @@ https://github.com/pbatard/rufus/wiki/Localization#Editing_an_existing_translati
|
||||
Or simply download https://files.akeo.ie/pollock/pollock-1.5.exe and follow its directions.
|
||||
|
||||
o v4.? (????.??.??) ** NOT FINAL!!! PLEASE DO NOT SEND UNSOLICITED TRANSLATIONS! **
|
||||
- *UPDATED* MSG_337 "An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:" -> "An additional file ('%s') must be downloaded from Microsoft to use this feature:"
|
||||
// NB: I used Google translate to update existing messages, so please check for accuracy!
|
||||
- *NEW* MSG_350 "Use 'Windows UEFI CA 2023' signed bootloaders [EXPERIMENTAL]"
|
||||
- *NEW* MSG_351 "Checking for UEFI bootloader revocation..."
|
||||
- *NEW* MSG_352 "Checking for UEFI DBX updates..."
|
||||
- *NEW* MSG_353 "DBX update available"
|
||||
- *NEW* MSG_354 "Rufus has found an updated version of the DBX files used to perform UEFI Secure Boot revocation checks..."
|
||||
- *NEW* MSG_355 "ISO Image"
|
||||
|
||||
o v4.5 (2024.05.??)
|
||||
o v4.5 (2024.05.22)
|
||||
- *UPDATED* IDC_RUFUS_MBR -> IDC_UEFI_MEDIA_VALIDATION "Enable runtime UEFI media validation"
|
||||
- *UPDATED* MSG_167 "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
|
||||
- *NEW* MSG_337 "An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS (...)"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
@echo off
|
||||
if not exist pollock.exe curl https://files.akeo.ie/pollock/pollock-1.5.exe --output pollock.exe
|
||||
if not exist pollock.exe curl https://files.akeo.ie/pollock/pollock-1.6.exe --output pollock.exe
|
||||
cls
|
||||
:menu
|
||||
echo 1 - Import .po into .loc
|
||||
|
||||
@ -1557,7 +1557,7 @@ msgid ""
|
||||
"Please select the mode that you want to use to write this image:"
|
||||
msgstr ""
|
||||
"Obráz, který jste si vybrali, je obraz 'ISO Hybrid'. To znamená, že může být zapsán buď v %s (kopírování souborů) v režimu %s (obraz disku) režim.\n"
|
||||
"Rufus doporučuje použití %s režim, pokud je plný přístu k jednotce pro zápis.\n"
|
||||
"Rufus doporučuje použití %s režim, pokud je plný přístup k jednotce pro zápis.\n"
|
||||
"Pokud narazíte na problémy při startu, můžete zkusit zapsat tento obraz znovu %s režim.\n"
|
||||
"\n"
|
||||
"Vyberte režim, který chcete použít k zapsání tohoto obrázu:"
|
||||
|
||||
@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-26 11:11+0200\n"
|
||||
"PO-Revision-Date: 2024-04-26 11:48+0200\n"
|
||||
"POT-Creation-Date: 2025-11-12 17:32+0000\n"
|
||||
"PO-Revision-Date: 2025-11-12 17:32+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
@ -13,7 +13,7 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: German (Deutsch)\n"
|
||||
"X-Rufus-LCID: 0x0407, 0x0807, 0x0c07, 0x1007, 0x1407\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.8\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
@ -308,7 +308,7 @@ msgstr ""
|
||||
|
||||
#. • MSG_025
|
||||
#.
|
||||
#. *Short* version of the pentabyte size suffix
|
||||
#. *Short* version of the petabyte size suffix
|
||||
msgid "PB"
|
||||
msgstr ""
|
||||
|
||||
@ -846,7 +846,7 @@ msgstr "Keine Persistenz"
|
||||
|
||||
#. • MSG_125
|
||||
#.
|
||||
#. Tooltips used for the peristence size slider and edit control
|
||||
#. Tooltips used for the persistence size slider and edit control
|
||||
msgid "Set the size of the persistent partition for live USB media. Setting the size to 0 disables the persistent partition."
|
||||
msgstr "Größe der persistenten Partition des Live-USB-Systems. Eine Größe von 0 deaktiviert die Persistenz."
|
||||
|
||||
@ -867,7 +867,7 @@ msgid ""
|
||||
"You have just created a media that uses the UEFI:NTFS bootloader. Please remember that, to boot this media, YOU MUST DISABLE SECURE BOOT.\n"
|
||||
"For details on why this is necessary, see the 'More Information' button below."
|
||||
msgstr ""
|
||||
"Sie haben gerade ein Medium erstellt, das den UEFI:NTFS-Bootloader verwendet. Bitte denken Sie daran, dass Sie zum Starten dieses Mediums SECURE BOOT DEAKTIVIEREN müssen.\n"
|
||||
"Sie haben gerade ein Medium erstellt, welches das UEFI:NTFS-Startprogramm verwendet. Bitte denken Sie daran, dass Sie zum Starten dieses Mediums SECURE BOOT DEAKTIVIEREN müssen.\n"
|
||||
"Nach dem Abschluss des Vorgangs sollten Sie SECURE BOOT wieder aktivieren.\n"
|
||||
"Weitere Informationen, warum dies notwendig ist, finden Sie über die Schaltfläche \"Weitere Informationen\"."
|
||||
|
||||
@ -1039,11 +1039,11 @@ msgstr "Image-Datei oder Download auswählen..."
|
||||
|
||||
#. • MSG_166
|
||||
msgid "Check this box to allow the display of international labels and set a device icon (creates an autorun.inf)"
|
||||
msgstr "Wählen Sie diese Option, um die Anzeige internationaler Bezeichnungen zu ermöglichen und ein Gerätesymbol zu erzeugen (autorun.inf)"
|
||||
msgstr "Wählen Sie diese Option, um die Anzeige internationaler Bezeichnungen zu ermöglichen und ein Gerätesymbol zu erzeugen (autorun.inf)."
|
||||
|
||||
#. • MSG_167
|
||||
msgid "Install a UEFI bootloader, that will perform MD5Sum file validation of the media"
|
||||
msgstr "Ein UEFI Startprogramm installieren, das eine MD5Sum Dateiüberprüfung auf dem Datenträger durchführt"
|
||||
msgstr "Ein UEFI-Startprogramm installieren, das eine MD5Sum-Dateiüberprüfung auf dem Datenträger durchführt"
|
||||
|
||||
#. • MSG_169
|
||||
msgid ""
|
||||
@ -1181,7 +1181,7 @@ msgid ""
|
||||
"Conventional drives use a 512-byte sector size but this drive uses a %d-byte one. In many cases, this means that you will NOT be able to boot from this drive.\n"
|
||||
"Rufus can try to create a bootable drive, but there is NO WARRANTY that it will work."
|
||||
msgstr ""
|
||||
"WICHTIG: DIESES LAUFWERK HAT EINE NICHT STANDARDISIERTE SEKTORGRÖSSE!\n"
|
||||
"WICHTIG: DIESES LAUFWERK HAT EINE NICHT STANDARDISIERTE SEKTORGRÖẞE!\n"
|
||||
"\n"
|
||||
"Herkömmliche Laufwerke nutzen eine Sektorgröße von 512 Byte, aber dieses Laufwerk nutzt %d Byte. Höchstwahrscheinlich können Sie von diesem Laufwerk NICHT starten.\n"
|
||||
"Rufus kann versuchen, ein startfähiges Laufwerk zu erstellen, aber es gibt KEINE GARANTIE, dass es funktionieren wird."
|
||||
@ -1431,7 +1431,7 @@ msgstr "Es wurde keine neue Version von Rufus gefunden"
|
||||
|
||||
#. • MSG_248
|
||||
msgid "Application registry keys successfully deleted"
|
||||
msgstr "Anwendungeinstellungen in der Registrierdatenbank erfolgreich gelöscht"
|
||||
msgstr "Anwendungseinstellungen in der Registrierdatenbank erfolgreich gelöscht"
|
||||
|
||||
#. • MSG_249
|
||||
msgid "Failed to delete application registry keys"
|
||||
@ -1740,13 +1740,13 @@ msgid ""
|
||||
"\n"
|
||||
"Please select the mode that you want to use to write this image:"
|
||||
msgstr ""
|
||||
"Das ausgewählte ISO-Image verwendet UEFI und ist klein genug, um auf eine EFI System-Partition (ESP) geschrieben zu werden. Es auf eine ESP- anstelle einer normalen Partition zu schrieben, kann für bestimmte Installationsarten vorteilhaft sein.\n"
|
||||
"Das ausgewählte ISO-Image verwendet UEFI und ist klein genug, um auf eine EFI-Systempartition (ESP) geschrieben zu werden. Es auf eine ESP anstelle einer normalen Partition zu schreiben, die die gesamte Festplatte belegt, kann für bestimmte Installationsarten vorteilhaft sein.\n"
|
||||
"\n"
|
||||
"Bitte wählen Sie einen Modus aus:"
|
||||
|
||||
#. • MSG_311
|
||||
msgid "Use %s (in the main application window) to enable."
|
||||
msgstr "Verwende %s (Hauptfenster der Anwendung) zum aktivieren."
|
||||
msgstr "Verwende %s (Hauptfenster der Anwendung) zum Aktivieren."
|
||||
|
||||
#. • MSG_312
|
||||
msgid "Extra hashes (SHA512)"
|
||||
@ -1789,7 +1789,7 @@ msgid ""
|
||||
"The image you have selected is an ISOHybrid, but its creators have not made it compatible with ISO/File copy mode.\n"
|
||||
"As a result, DD image writing mode will be enforced."
|
||||
msgstr ""
|
||||
"Das ausgewählte Image ist vom Typ ISOHybrid, aber der Ersteller hat es nicht mit dem ISO/Datei Kopier-Modus kompatibel gemacht.\n"
|
||||
"Das ausgewählte Image ist vom Typ ISOHybrid, aber der Ersteller hat es nicht mit dem ISO/Dateikopiermodus kompatibel gemacht.\n"
|
||||
"Deswegen wird der DD-Schreibmodus verwendet."
|
||||
|
||||
#. • MSG_322
|
||||
@ -1798,7 +1798,7 @@ msgstr "'%' kann nicht geöffnet/gelesen werden"
|
||||
|
||||
#. • MSG_325
|
||||
msgid "Applying Windows customization: %s"
|
||||
msgstr "Windows Anpassungen anwenden: %s"
|
||||
msgstr "Windows-Anpassungen anwenden: %s"
|
||||
|
||||
#. • MSG_326
|
||||
msgid "Applying user options..."
|
||||
@ -1806,7 +1806,7 @@ msgstr "Benutzereinstellungen anwenden..."
|
||||
|
||||
#. • MSG_327
|
||||
msgid "Windows User Experience"
|
||||
msgstr "Windows Benutzererfahrung"
|
||||
msgstr "Windows-Benutzererfahrung"
|
||||
|
||||
#. • MSG_328
|
||||
msgid "Customize Windows installation?"
|
||||
@ -1818,7 +1818,7 @@ msgstr "Anforderung für 4GB+ RAM, Secure Boot und TPM 2.0 entfernen"
|
||||
|
||||
#. • MSG_330
|
||||
msgid "Remove requirement for an online Microsoft account"
|
||||
msgstr "Anforderung für Online Microsoft Konto entfernen"
|
||||
msgstr "Anforderung für Online-Microsoft-Konto entfernen"
|
||||
|
||||
#. • MSG_331
|
||||
msgid "Disable data collection (Skip privacy questions)"
|
||||
@ -1846,21 +1846,21 @@ msgstr "Dauerhaftes Protokoll"
|
||||
|
||||
#. • MSG_337
|
||||
msgid ""
|
||||
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
|
||||
"An additional file ('%s') must be downloaded from Microsoft to use this feature:\n"
|
||||
"- Select 'Yes' to connect to the Internet and download it\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"Eine zusätzliche Datei ('diskcopy.dll') muss von Microsoft heruntergeladen werden um MS-DOS zu installieren:\n"
|
||||
"- 'Ja' um eine Verbindung mit dem Internet herzustellen und die Datei herunterzuladen\n"
|
||||
"- 'Nein' um den Vorgang abzubrechen\n"
|
||||
"Eine zusätzliche Datei ('%s') muss von Microsoft heruntergeladen werden, um diese Funktion zu nutzen:\n"
|
||||
"- Wählen Sie 'Ja', um eine Verbindung mit dem Internet herzustellen und die Datei herunterzuladen\n"
|
||||
"- Wählen Sie 'Nein', um den Vorgang abzubrechen\n"
|
||||
"\n"
|
||||
"Hinweis: Die Datei wird ins Programmverzeichnis heruntergeladen und bei Bedarf wiederverwendet."
|
||||
|
||||
#. • MSG_338
|
||||
msgid "Revoked UEFI bootloader detected"
|
||||
msgstr "Zurückgezogenes UEFI Startprogramm erkannt"
|
||||
msgstr "Zurückgezogenes UEFI-Startprogramm erkannt"
|
||||
|
||||
#. • MSG_339
|
||||
msgid ""
|
||||
@ -1869,10 +1869,10 @@ msgid ""
|
||||
"- If you obtained this ISO image from a non reputable source, you should consider the possibility that it might contain UEFI malware and avoid booting from it.\n"
|
||||
"- If you obtained it from a trusted source, you should try to locate a more up to date version, that will not produce this warning."
|
||||
msgstr ""
|
||||
"Rufus hat erkannt, dass das gewählte ISO-Image ein UEFI-Startprogramm enthält, dass zurückgezogen wurde und das führt zu %s, wenn das UEFI-System aktuell ist und Secure Boot aktiv ist.\n"
|
||||
"Rufus hat erkannt, dass das gewählte ISO-Image ein UEFI-Startprogramm enthält, das zurückgezogen wurde. Das führt zu %s, wenn das UEFI-System aktuell ist und Secure Boot aktiv ist.\n"
|
||||
"\n"
|
||||
"- Wenn Sie das ISO-Image aus einer unzuverlässigen Quelle haben, sollten Sie in Betracht ziehen, dass es UEFI-Schadcode enthält und es deshalb nicht verwenden.\n"
|
||||
"- Wenn Sie es aus einer vertrauenswürdigen Quelle haben, sollten Sie versuchen eine aktuellere Version zu bekommen, die dieses problem nicht hat."
|
||||
"- Wenn Sie es aus einer vertrauenswürdigen Quelle haben, sollten Sie versuchen, eine aktuellere Version zu bekommen, die dieses Problem nicht hat."
|
||||
|
||||
#. • MSG_340
|
||||
msgid "a \"Security Violation\" screen"
|
||||
@ -1880,19 +1880,19 @@ msgstr "ein Bildschirm \"Sicherheitsverletzung\""
|
||||
|
||||
#. • MSG_341
|
||||
msgid "a Windows Recovery Screen (BSOD) with '%s'"
|
||||
msgstr "ein Windows Wiederherstellung-Bildschirm (BSOD) mit '%s'"
|
||||
msgstr "ein Windows-Wiederherstellungsbildschirm (BSOD) mit '%s'"
|
||||
|
||||
#. • MSG_342
|
||||
msgid "Compressed VHDX Image"
|
||||
msgstr "Komprimiertes VHDX Image"
|
||||
msgstr "Komprimiertes VHDX-Image"
|
||||
|
||||
#. • MSG_343
|
||||
msgid "Uncompressed VHD Image"
|
||||
msgstr "Unkomprimiertes VHD Image"
|
||||
msgstr "Unkomprimiertes VHD-Image"
|
||||
|
||||
#. • MSG_344
|
||||
msgid "Full Flash Update Image"
|
||||
msgstr "Full Flash Update Image"
|
||||
msgstr "Vollständiges Flash-Update-Image"
|
||||
|
||||
#. • MSG_345
|
||||
msgid ""
|
||||
@ -1901,8 +1901,8 @@ msgid ""
|
||||
"- Select 'No' to cancel the operation"
|
||||
msgstr ""
|
||||
"Einige weitere Daten müssen von Microsoft heruntergeladen werden, um diese Funktion zu verwenden:\n"
|
||||
"- 'Ja' um eine Verbindung mit dem Internet herzustellen und diese herunterzuladen\n"
|
||||
"- 'Nein' um den Vorgang abzubrechen"
|
||||
"- Wählen Sie 'Ja', um eine Verbindung mit dem Internet herzustellen und diese herunterzuladen\n"
|
||||
"- Wählen Sie 'Nein', um den Vorgang abzubrechen"
|
||||
|
||||
#. • MSG_346
|
||||
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
|
||||
@ -1910,11 +1910,11 @@ msgstr "Windows im S-Modus (nicht kompatibel mit Online Konto-Umgehung)"
|
||||
|
||||
#. • MSG_347
|
||||
msgid "Expert Mode"
|
||||
msgstr "Experten-Modus"
|
||||
msgstr "Expertenmodus"
|
||||
|
||||
#. • MSG_348
|
||||
msgid "Extracting archive files: %s"
|
||||
msgstr "Archiv-Datei extrahieren: %s"
|
||||
msgstr "Archivdatei extrahieren: %s"
|
||||
|
||||
#. • MSG_349
|
||||
msgid "Use Rufus MBR"
|
||||
@ -1924,7 +1924,7 @@ msgstr "Rufus MBR verwenden"
|
||||
#.
|
||||
#. The following messages are for the Windows Store listing only and are not used by the application
|
||||
msgid "Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc."
|
||||
msgstr "Rufus ist ein Werkzeug, welches dabei hilft, bootfähige USB-Laufwerke zu erstellen, wie beispielweise USB-Keys, Speichersticks usw."
|
||||
msgstr "Rufus ist ein Werkzeug, das beim Formatieren und Erstellen bootfähiger USB-Flash-Laufwerke wie USB-Sticks, Speichersticks usw. hilft."
|
||||
|
||||
#. • MSG_901
|
||||
msgid "Official site: %s"
|
||||
@ -1967,7 +1967,7 @@ msgstr "FreeDOS-bootfähige USB-Laufwerke erstellen"
|
||||
|
||||
#. • MSG_912
|
||||
msgid "Create bootable drives from bootable ISOs (Windows, Linux, etc.)"
|
||||
msgstr "Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux, etc.)"
|
||||
msgstr "Erstellen bootfähiger Laufwerke aus bootfähigen ISOs (Windows, Linux etc.)"
|
||||
|
||||
#. • MSG_913
|
||||
msgid "Create bootable drives from bootable disk images, including compressed ones"
|
||||
@ -1979,7 +1979,7 @@ msgstr "Erstellen von BIOS- oder UEFI-bootfähigen Laufwerken, einschließlich U
|
||||
|
||||
#. • MSG_915
|
||||
msgid "Create 'Windows To Go' drives"
|
||||
msgstr "Erstellen von \"Windows To Go\"-Laufwerken"
|
||||
msgstr "Erstellen von 'Windows To Go'-Laufwerken"
|
||||
|
||||
#. • MSG_916
|
||||
msgid "Create Windows 11 installation drives for PCs that don't have TPM or Secure Boot"
|
||||
@ -1995,7 +1995,7 @@ msgstr "VHD/DD-Images des ausgewählten Laufwerks erstellen"
|
||||
|
||||
#. • MSG_919
|
||||
msgid "Compute MD5, SHA-1, SHA-256 and SHA-512 checksums of the selected image"
|
||||
msgstr "Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Bild"
|
||||
msgstr "Berechnung von MD5-, SHA-1-, SHA-256- und SHA-512-Prüfsummen für das ausgewählte Image"
|
||||
|
||||
#. • MSG_920
|
||||
msgid "Perform bad blocks checks, including detection of \"fake\" flash drives"
|
||||
|
||||
@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-29 19:24+0300\n"
|
||||
"PO-Revision-Date: 2024-04-29 20:25+0330\n"
|
||||
"PO-Revision-Date: 2025-02-13 12:00+0000\n"
|
||||
"Last-Translator: MasterVito <mv@mvaop.ir>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fa_IR\n"
|
||||
@ -13,7 +13,7 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: Persian (پارسی)\n"
|
||||
"X-Rufus-LCID: 0x0429\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.5\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
@ -1094,7 +1094,7 @@ msgstr "نسخه %d.%d (Build %d)"
|
||||
|
||||
#. • MSG_176
|
||||
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
|
||||
msgstr "ترجمه فارسی:\\line •سید عرفان <mailto:aa3245540@gmail.com>\\line •ضیاءالدین عظیمی <mailto:s.zia.azimi@gmail.com>"
|
||||
msgstr "ترجمه فارسی:\\line •مستر ویتو <mailto:mv@mvaop.ir>\\line •ضیاءالدین عظیمی <mailto:s.zia.azimi@gmail.com>"
|
||||
|
||||
#. • MSG_177
|
||||
msgid "Report bugs or request enhancements at:"
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.22\n"
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-25 12:25+0100\n"
|
||||
"PO-Revision-Date: 2024-04-25 12:46+0100\n"
|
||||
"POT-Creation-Date: 2025-10-01 18:52+0100\n"
|
||||
"PO-Revision-Date: 2025-10-01 18:53+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: fr_FR\n"
|
||||
@ -13,7 +13,7 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: French (Français)\n"
|
||||
"X-Rufus-LCID: 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.7\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
@ -161,7 +161,7 @@ msgstr "Recherche mises à jour"
|
||||
|
||||
#. • IDD_UPDATE_POLICY → IDS_INCLUDE_BETAS_TXT
|
||||
msgid "Include beta versions"
|
||||
msgstr "Inclure les bétas"
|
||||
msgstr "Inclure les versions bêta"
|
||||
|
||||
#. • IDD_UPDATE_POLICY → IDC_CHECK_NOW
|
||||
msgid "Check Now"
|
||||
@ -460,7 +460,7 @@ msgstr "Veuillez insérer un média dans le lecteur."
|
||||
|
||||
#. • MSG_062
|
||||
msgid "An unsupported command was received."
|
||||
msgstr "Commande non supportée."
|
||||
msgstr "Une commande non prise en charge a été reçue."
|
||||
|
||||
#. • MSG_063
|
||||
msgid "Memory allocation error."
|
||||
@ -484,7 +484,7 @@ msgstr "Impossible d'accéder au média. Il peut être en cours d'utilisation pa
|
||||
|
||||
#. • MSG_068
|
||||
msgid "Could not partition drive."
|
||||
msgstr "Echec de partitionnement."
|
||||
msgstr "Échec de partitionnement."
|
||||
|
||||
#. • MSG_069
|
||||
msgid "Could not copy files to target drive."
|
||||
@ -506,23 +506,23 @@ msgstr "La vérification de blocs défectueux a été interrompue."
|
||||
|
||||
#. • MSG_073
|
||||
msgid "ISO image scan failure."
|
||||
msgstr "Echec d'analyse de l'image ISO."
|
||||
msgstr "Échec d'analyse de l'image ISO."
|
||||
|
||||
#. • MSG_074
|
||||
msgid "ISO image extraction failure."
|
||||
msgstr "Echec d'extraction de l'image ISO."
|
||||
msgstr "Échec d'extraction de l'image ISO."
|
||||
|
||||
#. • MSG_075
|
||||
msgid "Unable to remount volume."
|
||||
msgstr "Echec lors du remontage du volume."
|
||||
msgstr "Échec lors du remontage du volume."
|
||||
|
||||
#. • MSG_076
|
||||
msgid "Unable to patch/setup files for boot."
|
||||
msgstr "Echec de modification des fichiers de démarrage."
|
||||
msgstr "Échec de modification des fichiers de démarrage."
|
||||
|
||||
#. • MSG_077
|
||||
msgid "Unable to assign a drive letter."
|
||||
msgstr "Echec d'assignation d'une lettre de volume."
|
||||
msgstr "Échec d'assignation d'une lettre de volume."
|
||||
|
||||
#. • MSG_078
|
||||
msgid "Can't mount GUID volume."
|
||||
@ -548,7 +548,7 @@ msgstr ""
|
||||
|
||||
#. • MSG_081
|
||||
msgid "Unsupported image"
|
||||
msgstr "Image non supportée"
|
||||
msgstr "Image non prise en charge"
|
||||
|
||||
#. • MSG_082
|
||||
msgid "This image is either non-bootable, or it uses a boot or compression method that is not supported by Rufus..."
|
||||
@ -609,7 +609,7 @@ msgstr "L'image est trop large pour être copiée sur le périphérique sélecti
|
||||
|
||||
#. • MSG_090
|
||||
msgid "Unsupported ISO"
|
||||
msgstr "Image ISO non supportée"
|
||||
msgstr "Image ISO non prise en charge"
|
||||
|
||||
#. • MSG_091
|
||||
msgid "When using UEFI Target Type, only EFI bootable ISO images are supported. Please select an EFI bootable ISO or set the Target Type to BIOS."
|
||||
@ -617,7 +617,7 @@ msgstr "Quand UEFI est sélectionné, seules les images ISO basées sur EFI sont
|
||||
|
||||
#. • MSG_092
|
||||
msgid "Unsupported filesystem"
|
||||
msgstr "Système de fichiers non supporté"
|
||||
msgstr "Système de fichiers non pris en charge"
|
||||
|
||||
#. • MSG_093
|
||||
msgid ""
|
||||
@ -669,7 +669,7 @@ msgstr "Cette image ISO contient un fichier de plus de 4 Go, soit plus que la ta
|
||||
|
||||
#. • MSG_101
|
||||
msgid "Missing WIM support"
|
||||
msgstr "Support pour archives WIM non disponible"
|
||||
msgstr "Prise en charge des archives WIM non disponible"
|
||||
|
||||
#. • MSG_102
|
||||
msgid ""
|
||||
@ -906,7 +906,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Parce que MBR a été sélectionné pour le schéma de partition, Rufus peut seulement créer une partition sur ce média occupant jusqu’à 2 To, ce qui laissera %s d’espace disque non-disponible.\n"
|
||||
"\n"
|
||||
"Etes-vous sûr de vouloir continuer ?"
|
||||
"Êtes-vous sûr de vouloir continuer ?"
|
||||
|
||||
#. • MSG_135
|
||||
msgid "Version"
|
||||
@ -1080,7 +1080,7 @@ msgid "Version %d.%d (Build %d)"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_176
|
||||
msgid "mailto:support@akeo.ie"
|
||||
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
|
||||
msgstr "Traduction Française : Pete Batard <mailto:pete@akeo.ie>"
|
||||
|
||||
#. • MSG_177
|
||||
@ -1203,7 +1203,7 @@ msgstr "Analyse de l'image..."
|
||||
|
||||
#. • MSG_203
|
||||
msgid "Failed to scan image"
|
||||
msgstr "Echec d'analyse de l'image"
|
||||
msgstr "Échec de l'analyse de l'image"
|
||||
|
||||
#. • MSG_204
|
||||
#.
|
||||
@ -1252,7 +1252,7 @@ msgstr "Opération annulée"
|
||||
|
||||
#. • MSG_212
|
||||
msgid "Failed"
|
||||
msgstr "ECHEC"
|
||||
msgstr "Échec"
|
||||
|
||||
#. • MSG_213
|
||||
#.
|
||||
@ -1262,7 +1262,7 @@ msgstr "Lancement de la nouvelle application..."
|
||||
|
||||
#. • MSG_214
|
||||
msgid "Failed to launch new application"
|
||||
msgstr "Echec de lancement de l'application"
|
||||
msgstr "Échec de lancement de l'application"
|
||||
|
||||
#. • MSG_215
|
||||
#.
|
||||
@ -1284,11 +1284,11 @@ msgstr "Formatage : %s"
|
||||
|
||||
#. • MSG_218
|
||||
msgid "Creating file system: Task %d/%d completed"
|
||||
msgstr "Système de fichiers : Tâche %d/%d complétée"
|
||||
msgstr "Système de fichiers : Tâche %d/%d terminée"
|
||||
|
||||
#. • MSG_219
|
||||
msgid "NTFS Fixup: %d%% completed"
|
||||
msgstr "Finalisation NTFS : %d%% complété"
|
||||
msgstr "Finalisation NTFS : %d%% terminé"
|
||||
|
||||
#. • MSG_220
|
||||
#.
|
||||
@ -1300,7 +1300,7 @@ msgstr "Formatage (%s) - durée estimée %d :%02d..."
|
||||
|
||||
#. • MSG_221
|
||||
msgid "Setting label (%s)..."
|
||||
msgstr "Ecriture du label (%s)..."
|
||||
msgstr "Écriture du label (%s)..."
|
||||
|
||||
#. • MSG_222
|
||||
#.
|
||||
@ -1330,11 +1330,11 @@ msgstr "Fermeture des volumes existants..."
|
||||
|
||||
#. • MSG_228
|
||||
msgid "Writing Master Boot Record..."
|
||||
msgstr "Ecriture du MBR..."
|
||||
msgstr "Écriture du MBR..."
|
||||
|
||||
#. • MSG_229
|
||||
msgid "Writing Partition Boot Record..."
|
||||
msgstr "Ecriture du PBR..."
|
||||
msgstr "Écriture du PBR..."
|
||||
|
||||
#. • MSG_230
|
||||
msgid "Copying DOS files..."
|
||||
@ -1346,7 +1346,7 @@ msgstr "Copie des fichiers ISO : %s"
|
||||
|
||||
#. • MSG_232
|
||||
msgid "Win7 EFI boot setup (%s)..."
|
||||
msgstr "Ecriture boot Win7 EFI (%s)..."
|
||||
msgstr "Écriture boot Win7 EFI (%s)..."
|
||||
|
||||
#. • MSG_233
|
||||
msgid "Finalizing, please wait..."
|
||||
@ -1392,7 +1392,7 @@ msgid ""
|
||||
"\n"
|
||||
"The download will be deleted. Please check the log for more details."
|
||||
msgstr ""
|
||||
"La signature de la mise à jour qui vient d’être téléchargée ne peut pas être validée. Cela peut indiquer que votre système n’est pas configuré correctement pour la validation de signatures digitales, ou que le téléchargement contient un fichier malicieux.\n"
|
||||
"La signature de la mise à jour qui vient d’être téléchargée ne peut pas être validée. Cela peut indiquer que votre système n’est pas configuré correctement pour la validation de signatures numériques, ou que le téléchargement contient un fichier malicieux.\n"
|
||||
"\n"
|
||||
"Le téléchargement va être supprimé. Veuillez consulter le log pour plus de détails."
|
||||
|
||||
@ -1402,7 +1402,7 @@ msgstr "Téléchargement : %s"
|
||||
|
||||
#. • MSG_242
|
||||
msgid "Failed to download file."
|
||||
msgstr "Echec de téléchargement du fichier."
|
||||
msgstr "Échec de téléchargement du fichier."
|
||||
|
||||
#. • MSG_243
|
||||
msgid "Checking for Rufus updates..."
|
||||
@ -1430,7 +1430,7 @@ msgstr "Clés de registre supprimées"
|
||||
|
||||
#. • MSG_249
|
||||
msgid "Failed to delete application registry keys"
|
||||
msgstr "Echec de suppression des clés registres"
|
||||
msgstr "Échec de suppression des clés registres"
|
||||
|
||||
#. • MSG_250
|
||||
#.
|
||||
@ -1480,7 +1480,7 @@ msgstr "Compression NTFS"
|
||||
|
||||
#. • MSG_261
|
||||
msgid "Writing image: %s"
|
||||
msgstr "Ecriture d'image : %s"
|
||||
msgstr "Écriture d'image : %s"
|
||||
|
||||
#. • MSG_262
|
||||
#.
|
||||
@ -1524,7 +1524,7 @@ msgstr "Debug USB"
|
||||
|
||||
#. • MSG_271
|
||||
msgid "Computing image checksums: %s"
|
||||
msgstr "Calculation des checksums de l'image : %s"
|
||||
msgstr "Calcul des checksums de l'image : %s"
|
||||
|
||||
#. • MSG_272
|
||||
msgid "Compute the MD5, SHA1 and SHA256 checksums for the selected image"
|
||||
@ -1558,13 +1558,13 @@ msgstr ""
|
||||
#.
|
||||
#. '%s' will be replaced with your translation for MSG_036 ("ISO Image")
|
||||
msgid "Write in %s mode (Recommended)"
|
||||
msgstr "Ecrire en mode %s (Recommandé)"
|
||||
msgstr "Écrire en mode %s (Recommandé)"
|
||||
|
||||
#. • MSG_277
|
||||
#.
|
||||
#. '%s' will be replaced with your translation for MSG_095 ("DD Image")
|
||||
msgid "Write in %s mode"
|
||||
msgstr "Ecrire en mode %s"
|
||||
msgstr "Écrire en mode %s"
|
||||
|
||||
#. • MSG_278
|
||||
msgid "Checking for conflicting processes..."
|
||||
@ -1592,7 +1592,7 @@ msgstr "Signature invalide"
|
||||
|
||||
#. • MSG_284
|
||||
msgid "The downloaded executable is missing a digital signature."
|
||||
msgstr "L'exécutable téléchargé ne possède pas de signature digitale."
|
||||
msgstr "L'exécutable téléchargé ne possède pas de signature numérique."
|
||||
|
||||
#. • MSG_285
|
||||
msgid ""
|
||||
@ -1610,7 +1610,7 @@ msgstr "Effacement à zéro : %s"
|
||||
|
||||
#. • MSG_287
|
||||
msgid "Detection of non-USB removable drives"
|
||||
msgstr "Détection disques non-USB détachables"
|
||||
msgstr "Détection des disques détachables non-USB"
|
||||
|
||||
#. • MSG_288
|
||||
msgid "Missing elevated privileges"
|
||||
@ -1618,15 +1618,15 @@ msgstr "Privilèges élevés manquants"
|
||||
|
||||
#. • MSG_289
|
||||
msgid "This application can only run with elevated privileges"
|
||||
msgstr "Cette application peut seulement être exécutée avec privilèges administratifs"
|
||||
msgstr "Cette application peut seulement être exécutée avec les privilèges administrateur"
|
||||
|
||||
#. • MSG_290
|
||||
msgid "File Indexing"
|
||||
msgstr "Indexation de fichiers"
|
||||
msgstr "Indexation des fichiers"
|
||||
|
||||
#. • MSG_291
|
||||
msgid "Version selection"
|
||||
msgstr "Sélection de version"
|
||||
msgstr "Sélection de la version"
|
||||
|
||||
#. • MSG_292
|
||||
msgid "Please select the version of Windows you want to install:"
|
||||
@ -1634,7 +1634,7 @@ msgstr "Sélectionnez la version de Windows que vous souhaitez installer :"
|
||||
|
||||
#. • MSG_293
|
||||
msgid "Unsupported Windows version"
|
||||
msgstr "Version de Windows non supportée"
|
||||
msgstr "Version de Windows non prise en charge"
|
||||
|
||||
#. • MSG_294
|
||||
msgid ""
|
||||
@ -1656,7 +1656,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Cette version de Rufus n'a pas produite par ses développeurs officiels.\n"
|
||||
"\n"
|
||||
"Etes-vous sur de vouloir la lancer ?"
|
||||
"Êtes-vous sûr de vouloir la lancer ?"
|
||||
|
||||
#. • MSG_297
|
||||
msgid "Truncated ISO detected"
|
||||
@ -1688,7 +1688,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Rufus n'a pas pu valider que le timestamp du fichier de mise à jour téléchargé est plus récent que celui de l'exécutable en cours.\n"
|
||||
"\n"
|
||||
"Afin de mitiger des scenarios d'attaque potentiels, le processus de mise à jour a été interrompu et le téléchargement va être supprimé. Pour plus de détails, veuillez consulter le log."
|
||||
"Afin d'éviter des scenarios d'attaque potentiels, le processus de mise à jour a été interrompu et le téléchargement va être supprimé. Pour plus de détails, veuillez consulter le log."
|
||||
|
||||
#. • MSG_301
|
||||
msgid "Show application settings"
|
||||
@ -1744,7 +1744,7 @@ msgstr "Utilisez %s (dans la fenêtre d’application principale) pour active."
|
||||
|
||||
#. • MSG_312
|
||||
msgid "Extra hashes (SHA512)"
|
||||
msgstr "Checksum hash supplémentaire (SHA512)"
|
||||
msgstr "Checksum supplémentaire (SHA512)"
|
||||
|
||||
#. • MSG_313
|
||||
msgid "Save to VHD"
|
||||
@ -1752,7 +1752,7 @@ msgstr "Sauver en image VHD"
|
||||
|
||||
#. • MSG_314
|
||||
msgid "Compute image checksums"
|
||||
msgstr "Calculer les checksums the l’image sélectionnée"
|
||||
msgstr "Calculer les checksums de l’image sélectionnée"
|
||||
|
||||
#. • MSG_315
|
||||
msgid "Multiple buttons"
|
||||
@ -1768,7 +1768,7 @@ msgstr "ID disque"
|
||||
|
||||
#. • MSG_318
|
||||
msgid "Default thread priority: %d"
|
||||
msgstr "Priorité de thread part default : %d"
|
||||
msgstr "Priorité de thread par défaut : %d"
|
||||
|
||||
#. • MSG_319
|
||||
msgid "Ignore Boot Marker"
|
||||
@ -1776,7 +1776,7 @@ msgstr "Ignorer le marqueur de démarrage"
|
||||
|
||||
#. • MSG_320
|
||||
msgid "Refreshing partition layout (%s)..."
|
||||
msgstr "Rafraichissement du schéma de partition (%s)..."
|
||||
msgstr "Rafraîchissement du schéma de partition (%s)..."
|
||||
|
||||
#. • MSG_321
|
||||
msgid ""
|
||||
@ -1784,7 +1784,7 @@ msgid ""
|
||||
"As a result, DD image writing mode will be enforced."
|
||||
msgstr ""
|
||||
"L’image que vous avez sélectionnée est de type ISOHybrid, mais ses créateurs ne l’ont pas rendue compatible avec le mode ISO (i.e. copie de fichier).\n"
|
||||
"A cause de cela, seule l’écriture en mode DD est applicable."
|
||||
"À cause de cela, seule l’écriture en mode DD est applicable."
|
||||
|
||||
#. • MSG_322
|
||||
msgid "Unable to open or read '%s'"
|
||||
@ -1832,7 +1832,7 @@ msgstr "Définir les options régionales avec les mêmes valeurs que celles de c
|
||||
|
||||
#. • MSG_335
|
||||
msgid "Disable BitLocker automatic device encryption"
|
||||
msgstr "Désactiver l'encryption automatique BitLocker"
|
||||
msgstr "Désactiver le chiffrement automatique BitLocker"
|
||||
|
||||
#. • MSG_336
|
||||
msgid "Persistent log"
|
||||
@ -1840,13 +1840,13 @@ msgstr "Log persistent"
|
||||
|
||||
#. • MSG_337
|
||||
msgid ""
|
||||
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
|
||||
"An additional file ('%s') must be downloaded from Microsoft to use this feature:\n"
|
||||
"- Select 'Yes' to connect to the Internet and download it\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"Un fichier supplémentaire ('diskcopy.dll') doit être téléchargé depuis Microsoft pour installer MS-DOS :\n"
|
||||
"Un fichier supplémentaire ('%s') doit être téléchargé depuis Microsoft pour utiliser cette fonctionalité :\n"
|
||||
"- Sélectionnez 'Oui' pour vous connecter à Internet et le télécharger\n"
|
||||
"- Sélectionnez 'Non' pour annuler l’opération\n"
|
||||
"\n"
|
||||
@ -1914,6 +1914,36 @@ msgstr "Extraction d'archive : %s"
|
||||
msgid "Use Rufus MBR"
|
||||
msgstr "Utilisation du MBR Rufus"
|
||||
|
||||
#. • MSG_350
|
||||
msgid "Use 'Windows CA 2023' signed bootloaders (requires a compatible target PC)"
|
||||
msgstr "Utiliser les bootloaders signés par 'Windows CA 2023' (nécessite un PC cible compatible)"
|
||||
|
||||
#. • MSG_351
|
||||
msgid "Checking for UEFI bootloader revocation..."
|
||||
msgstr "Vérification de la revocation des bootloaders UEFI..."
|
||||
|
||||
#. • MSG_352
|
||||
msgid "Checking for UEFI DBX updates..."
|
||||
msgstr "Vérification des mises à jour de DBX UEFI..."
|
||||
|
||||
#. • MSG_353
|
||||
msgid "DBX update available"
|
||||
msgstr "Mise à jour DBX disponible"
|
||||
|
||||
#. • MSG_354
|
||||
msgid ""
|
||||
"Rufus has found an updated version of the DBX files used to perform UEFI Secure Boot revocation checks. Do you want to download this update?\n"
|
||||
"- Select 'Yes' to connect to the Internet and download this content\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The files will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"Rufus a trouvé une mise à jour des fichiers DBX utilisés pour effectuer la validation des revocations Secure Boot sous UEFI. Voulez-vous télécharger cette mise à jour ?\n"
|
||||
"- Sélectionnez 'Oui' pour vous connecter à Internet et le télécharger ce contenu\n"
|
||||
"- Sélectionnez 'Non' pour annuler l’opération\n"
|
||||
"\n"
|
||||
"Note : Ces fichiers seront téléchargés dans le répertoire de l'application et réutilisés automatiquement si ils sont présent."
|
||||
|
||||
#. • MSG_900
|
||||
#.
|
||||
#. The following messages are for the Windows Store listing only and are not used by the application
|
||||
|
||||
@ -1875,7 +1875,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Rufus ha rilevato che l'ISO selezionata contiene un bootloader UEFI che è stato revocato e che quando Secure Boot è abilitato su un sistema UEFI completamente aggiornato produrrà %s. \n"
|
||||
"\n"
|
||||
"- Se hai ottenuto questa immagine ISO da una so0egente non affidabile, dovresti considerare la possibilità che possa contenere malware UEFI ed evitare di eseguire l'avvio da esso.\n"
|
||||
"- Se hai ottenuto questa immagine ISO da una sorgente non affidabile, dovresti considerare la possibilità che possa contenere malware UEFI ed evitare di eseguire l'avvio da esso.\n"
|
||||
"- Se l'hai ottenuto da una sorgente attendibile, dovresti provare a cercare una versione più aggiornata, che non genererà questo avviso."
|
||||
|
||||
#. • MSG_340
|
||||
|
||||
@ -2,10 +2,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-29 04:19+0900\n"
|
||||
"PO-Revision-Date: 2024-04-29 05:50+0900\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"POT-Creation-Date: 2025-08-26 05:39+0900\n"
|
||||
"PO-Revision-Date: 2026-01-28 21:33+0000\n"
|
||||
"Last-Translator: VenusGirl <venusgirl@outlook.com>\n"
|
||||
"Language-Team: 비너스걸 <https://venusgirls.tistory.com/>\n"
|
||||
"Language: ko_KR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -13,7 +13,7 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: Korean (한국어)\n"
|
||||
"X-Rufus-LCID: 0x0412\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.8\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
@ -133,7 +133,7 @@ msgstr "예"
|
||||
#. • IDD_NOTIFICATION → IDNO
|
||||
#. • MSG_009
|
||||
msgid "No"
|
||||
msgstr "아니오"
|
||||
msgstr "아니요"
|
||||
|
||||
#. • IDD_LOG → IDD_LOG
|
||||
msgid "Log"
|
||||
@ -574,7 +574,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Rufus는 이 문제를 해결하기 위해 최신 버전을 다운로드할 수 있습니다:\n"
|
||||
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- 기존 ISO 파일을 수정하지 않은 상태로 두려면 '아니오'를 선택합니다\n"
|
||||
"- 기존 ISO 파일을 수정하지 않은 상태로 두려면 '아니요'를 선택합니다\n"
|
||||
"무엇을 해야 할지 모르면 '예'를 선택해야 합니다.\n"
|
||||
"\n"
|
||||
"참고: 새 파일이 현재 디렉터리에 다운로드되고 '%s'가 있으면 자동으로 재사용됩니다."
|
||||
@ -701,7 +701,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Rufus가 누락된 파일을 다운로드할 수 있습니다:\n"
|
||||
"- 인터넷에 연결하고 파일을 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- 나중에 드라이브에 이 파일을 수동으로 복사하려면 '아니오'를 선택합니다\n"
|
||||
"- 나중에 드라이브에 이 파일을 수동으로 복사하려면 '아니요'를 선택합니다\n"
|
||||
"\n"
|
||||
"참고: 파일이 현재 디렉터리에 다운로드되고 '%s'가 있으면 자동으로 재사용됩니다."
|
||||
|
||||
@ -711,7 +711,7 @@ msgid ""
|
||||
"If you are sure you want to cancel, click YES. Otherwise, click NO."
|
||||
msgstr ""
|
||||
"취소하면 장치를 사용할 수 없는 상태가 될 수 있습니다.\n"
|
||||
"취소하려면 예를 클릭합니다. 그렇지 않으면 아니오를 클릭합니다."
|
||||
"취소하려면 예를 클릭합니다. 그렇지 않으면 아니요를 클릭합니다."
|
||||
|
||||
#. • MSG_106
|
||||
msgid "Please select folder"
|
||||
@ -748,7 +748,7 @@ msgstr "호환되지 않는 클러스터 크기"
|
||||
#.
|
||||
#. "%d:%02d" is a duration (mins:secs)
|
||||
msgid "Formatting a large UDF volumes can take a lot of time. At USB 2.0 speeds, the estimated formatting duration is %d:%02d, during which the progress bar will appear frozen. Please be patient!"
|
||||
msgstr "대용량 UDF 볼륨을 포맷하는 데 많은 시간이 걸릴 수 있습니다. USB 2.0 속도에서 예상 포맷 지속 시간은 %d:%02d이며, 이 기간 동안 진행률 표시줄이 고정된 것처럼 보입니다. 기다려주십시오!"
|
||||
msgstr "대용량 UDF 볼륨을 포맷하는 데 많은 시간이 걸릴 수 있습니다. USB 2.0 속도에서 예상 포맷 지속 시간은 %d:%02d이며, 이 기간 동안 진행률 표시줄이 고정된 것처럼 보입니다. 기다려주세요!"
|
||||
|
||||
#. • MSG_113
|
||||
msgid "Large UDF volume"
|
||||
@ -768,7 +768,7 @@ msgstr ""
|
||||
"\n"
|
||||
"새 버전의 Syslinux는 서로 호환되지 않으므로 Rufus가 모두 포함할 수 없으므로 인터넷에서 두 개의 추가 파일 ('ldlinux.sys' 및 'ldlinux.bss')을 다운로드해야 합니다:\n"
|
||||
"- 인터넷에 연결하고 이러한 파일을 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- 작업을 취소하려면 '아니오'를 선택합니다\n"
|
||||
"- 작업을 취소하려면 '아니요'를 선택합니다\n"
|
||||
"\n"
|
||||
"참고: 파일은 현재 응용 프로그램 디렉터리에 다운로드되며 있는 경우 자동으로 재사용됩니다."
|
||||
|
||||
@ -794,7 +794,7 @@ msgstr ""
|
||||
"\n"
|
||||
"다른 버전의 Grub은 서로 호환되지 않을 수 있으며, 모두 포함할 수 없기 때문에 Rufus는 이미지에서 일치하는 Grub 설치 파일 ('core.img')의 버전을 찾으려고 시도합니다:\n"
|
||||
"- 인터넷에 연결하고 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- Rufus의 기본 버전을 사용하려면 '아니오'를 선택합니다\n"
|
||||
"- Rufus의 기본 버전을 사용하려면 '아니요'를 선택합니다\n"
|
||||
"- 작업을 중단하려면 '취소'를 선택합니다\n"
|
||||
"\n"
|
||||
"참고: 파일은 현재 응용 프로그램 디렉터리에 다운로드되며 있는 경우 자동으로 재사용됩니다. 일치하는 항목을 온라인으로 찾을 수 없는 경우 기본 버전이 사용됩니다."
|
||||
@ -940,7 +940,7 @@ msgstr "뒤로"
|
||||
|
||||
#. • MSG_142
|
||||
msgid "Please wait..."
|
||||
msgstr "기다려주십시오..."
|
||||
msgstr "기다려주세요..."
|
||||
|
||||
#. • MSG_143
|
||||
msgid "Download using a browser"
|
||||
@ -1085,7 +1085,7 @@ msgstr "버전 %d.%d (빌드 %d)"
|
||||
|
||||
#. • MSG_176
|
||||
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
|
||||
msgstr "한국어 번역:\\line• 비너스걸 (VᴇɴᴜsGɪʀʟ♥) <mailto:venusgirl@outlook.com>"
|
||||
msgstr "한국어 번역:\\line• 세상사는이야기-나두 <mailto:ho82.kr@gmail.com>\\line• Uk-Jin Jang <mailto:doublestat@gmail.com>\\line• 비너스걸 (VᴇɴᴜsGɪʀʟ♥) <mailto:venusgirl@outlook.com>"
|
||||
|
||||
#. • MSG_177
|
||||
msgid "Report bugs or request enhancements at:"
|
||||
@ -1199,7 +1199,7 @@ msgstr "이 플랫폼에서는 이 기능을 사용할 수 없습니다."
|
||||
|
||||
#. • MSG_201
|
||||
msgid "Cancelling - Please wait..."
|
||||
msgstr "취소 중 - 잠시 기다려 주십시오..."
|
||||
msgstr "취소 중 - 잠시 기다려 주세요..."
|
||||
|
||||
#. • MSG_202
|
||||
msgid "Scanning image..."
|
||||
@ -1354,7 +1354,7 @@ msgstr "Win7 EFI 부팅 설정 (%s)..."
|
||||
|
||||
#. • MSG_233
|
||||
msgid "Finalizing, please wait..."
|
||||
msgstr "마무리 중, 기다려 주십시오..."
|
||||
msgstr "마무리 중, 기다려 주세요..."
|
||||
|
||||
#. • MSG_234
|
||||
#.
|
||||
@ -1845,15 +1845,15 @@ msgstr "영구 로그"
|
||||
|
||||
#. • MSG_337
|
||||
msgid ""
|
||||
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
|
||||
"An additional file ('%s') must be downloaded from Microsoft to use this feature:\n"
|
||||
"- Select 'Yes' to connect to the Internet and download it\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"MS-DOS를 설치하려면 Microsoft에서 추가 파일 ('diskcopy.dll')을 다운로드해야 합니다:\n"
|
||||
"이 기능을 사용하려면 Microsoft에서 추가 파일('%s')을 다운로드해야 합니다:\n"
|
||||
"- 인터넷에 연결하여 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- 작업을 취소하려면 '아니오'를 선택합니다\n"
|
||||
"- 작업을 취소하려면 '아니요'를 선택합니다\n"
|
||||
"\n"
|
||||
"참고: 해당 파일은 응용 프로그램의 디렉터리에 다운로드되며 존재하는 경우 자동으로 재사용됩니다."
|
||||
|
||||
@ -1901,7 +1901,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"이 기능을 사용하려면 Microsoft에서 몇 가지 추가 데이터를 다운로드해야 합니다:\n"
|
||||
"- 인터넷에 연결하여 다운로드하려면 '예'를 선택합니다\n"
|
||||
"- 작업을 취소하려면 '아니오'를 선택합니다"
|
||||
"- 작업을 취소하려면 '아니요'를 선택합니다"
|
||||
|
||||
#. • MSG_346
|
||||
msgid "Restrict Windows to S-Mode (INCOMPATIBLE with online account bypass)"
|
||||
@ -1946,7 +1946,7 @@ msgid ""
|
||||
"See https://www.gnu.org/licenses/gpl-3.0.en.html for details."
|
||||
msgstr ""
|
||||
"이 응용 프로그램은 GNU Public License (GPL) 버전 3의 조건에 따라 라이선스가 부여됩니다.\n"
|
||||
"자세한 내용은 https://www.gnu.org/licenses/gpl-3.0.html 을 참조하십시오."
|
||||
"자세한 내용은 https://www.gnu.org/licenses/gpl-3.0.html 을 참조하세요."
|
||||
|
||||
#. • MSG_905
|
||||
#.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -2,10 +2,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-26 00:51+0200\n"
|
||||
"PO-Revision-Date: 2024-04-26 14:23+0100\n"
|
||||
"POT-Creation-Date: 2025-09-23 20:25+0100\n"
|
||||
"PO-Revision-Date: 2025-09-23 20:25+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Sopor <sopor@users.noreply.github.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: sv_SE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -13,7 +13,7 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: Swedish (Svenska)\n"
|
||||
"X-Rufus-LCID: 0x041d, 0x081d\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.7\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
@ -62,7 +62,7 @@ msgstr "Aktivera runtime UEFI-mediavalidering"
|
||||
|
||||
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
|
||||
msgid "Format Options"
|
||||
msgstr "Formateringsinställningar"
|
||||
msgstr "Formatalternativ"
|
||||
|
||||
#. • IDD_DIALOG → IDS_FILE_SYSTEM_TXT
|
||||
msgid "File system"
|
||||
@ -1134,7 +1134,7 @@ msgstr ""
|
||||
|
||||
#. • MSG_187
|
||||
msgid "Invalid image for selected boot option"
|
||||
msgstr "Ogiltig avbild för vald startinställning"
|
||||
msgstr "Ogiltig avbild för valt startalternativ"
|
||||
|
||||
#. • MSG_188
|
||||
msgid "The current image doesn't match the boot option selected. Please use a different image or choose a different boot option."
|
||||
@ -1846,13 +1846,13 @@ msgstr "Bestående logg"
|
||||
|
||||
#. • MSG_337
|
||||
msgid ""
|
||||
"An additional file ('diskcopy.dll') must be downloaded from Microsoft to install MS-DOS:\n"
|
||||
"An additional file ('%s') must be downloaded from Microsoft to use this feature:\n"
|
||||
"- Select 'Yes' to connect to the Internet and download it\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The file will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"En fil (diskcopy.dll) måste laddas ner från Microsoft för att installera MS-DOS:\n"
|
||||
"En fil (%s) måste laddas ner från Microsoft för att använda den här funktionen:\n"
|
||||
"- Välj \"Ja\" för att ansluta till Internet och ladda ner den\n"
|
||||
"- Välj \"Nej\" för att avbryta operationen\n"
|
||||
"\n"
|
||||
|
||||
@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 4.5\n"
|
||||
"Report-Msgid-Bugs-To: pete@akeo.ie\n"
|
||||
"POT-Creation-Date: 2024-04-26 02:45+0900\n"
|
||||
"PO-Revision-Date: 2024-04-26 03:13+0900\n"
|
||||
"POT-Creation-Date: 2025-06-21 21:57+0700\n"
|
||||
"PO-Revision-Date: 2025-06-21 22:47+0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: vi_VN\n"
|
||||
@ -13,19 +13,19 @@ msgstr ""
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Rufus-LanguageName: Vietnamese (Tiếng Việt)\n"
|
||||
"X-Rufus-LCID: 0x042A\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
"X-Generator: Poedit 3.6\n"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DRIVE_PROPERTIES_TXT
|
||||
msgid "Drive Properties"
|
||||
msgstr "Thuộc tính ổ đĩa"
|
||||
msgstr "Thuộc tính thiết bị lưu"
|
||||
|
||||
#. • IDD_DIALOG → IDS_DEVICE_TXT
|
||||
msgid "Device"
|
||||
msgstr "Thiết bị"
|
||||
msgstr "Thiết bị lưu"
|
||||
|
||||
#. • IDD_DIALOG → IDS_BOOT_SELECTION_TXT
|
||||
msgid "Boot selection"
|
||||
msgstr "Phương thức khởi động"
|
||||
msgstr "Tùy chọn khởi động"
|
||||
|
||||
#. • IDD_DIALOG → IDC_SELECT
|
||||
msgid "Select"
|
||||
@ -37,28 +37,28 @@ msgstr "Tùy chọn tệp tin"
|
||||
|
||||
#. • IDD_DIALOG → IDS_PARTITION_TYPE_TXT
|
||||
msgid "Partition scheme"
|
||||
msgstr "Định dạng phân vùng"
|
||||
msgstr "Sơ đồ phân vùng"
|
||||
|
||||
#. • IDD_DIALOG → IDS_TARGET_SYSTEM_TXT
|
||||
msgid "Target system"
|
||||
msgstr "Hệ thống áp dụng"
|
||||
msgstr "Hệ thống khởi động"
|
||||
|
||||
#. • IDD_DIALOG → IDC_LIST_USB_HDD
|
||||
msgid "List USB Hard Drives"
|
||||
msgstr "Danh sách ổ cứng USB"
|
||||
msgstr "Liệt kê danh sách ổ USB"
|
||||
|
||||
#. • IDD_DIALOG → IDC_OLD_BIOS_FIXES
|
||||
#.
|
||||
#. It is acceptable to drop the parenthesis () if you are running out of space
|
||||
#. as there is a tooltip (MSG_169) providing these details.
|
||||
msgid "Add fixes for old BIOSes (extra partition, align, etc.)"
|
||||
msgstr "Thêm khắc phục cho BIOS cũ (phân vùng, sắp xếp...khác)"
|
||||
msgstr "Thêm các bản sửa lỗi cho BIOS cũ (phân vùng phụ, căn lề phân vùng, v.v...)"
|
||||
|
||||
#. • IDD_DIALOG → IDC_UEFI_MEDIA_VALIDATION
|
||||
#.
|
||||
#. It is acceptable to drop the "runtime" if you are running out of space
|
||||
msgid "Enable runtime UEFI media validation"
|
||||
msgstr "Bật xác thực phương tiện UEFI tại thời điểm chạy"
|
||||
msgstr "Bật xác minh thiết bị UEFI trong thời gian chạy"
|
||||
|
||||
#. • IDD_DIALOG → IDS_FORMAT_OPTIONS_TXT
|
||||
msgid "Format Options"
|
||||
@ -70,11 +70,11 @@ msgstr "Hệ thống tập tin"
|
||||
|
||||
#. • IDD_DIALOG → IDS_CLUSTER_SIZE_TXT
|
||||
msgid "Cluster size"
|
||||
msgstr "Kích thước liên cung"
|
||||
msgstr "Kích thước cụm"
|
||||
|
||||
#. • IDD_DIALOG → IDS_LABEL_TXT
|
||||
msgid "Volume label"
|
||||
msgstr "Nhãn ổ đĩa"
|
||||
msgstr "Nhãn thiết bị lưu"
|
||||
|
||||
#. • IDD_DIALOG → IDC_QUICK_FORMAT
|
||||
msgid "Quick format"
|
||||
@ -82,11 +82,11 @@ msgstr "Định dạng nhanh"
|
||||
|
||||
#. • IDD_DIALOG → IDC_BAD_BLOCKS
|
||||
msgid "Check device for bad blocks"
|
||||
msgstr "Kiểm tra khối hỏng trong thiết bị"
|
||||
msgstr "Kiểm tra lỗi khối trên thiết bị lưu trữ"
|
||||
|
||||
#. • IDD_DIALOG → IDC_EXTENDED_LABEL
|
||||
msgid "Create extended label and icon files"
|
||||
msgstr "Tạo tên mở rộng và tập tin biểu tượng"
|
||||
msgstr "Tạo nhãn mở rộng và tệp tin biểu tượng"
|
||||
|
||||
#. • IDD_DIALOG → IDS_STATUS_TXT
|
||||
msgid "Status"
|
||||
@ -115,7 +115,7 @@ msgstr "Giấy phép"
|
||||
|
||||
#. • IDD_ABOUTBOX → IDOK
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
msgstr ""
|
||||
|
||||
#. • IDD_LICENSE → IDD_LICENSE
|
||||
msgid "Rufus License"
|
||||
@ -161,7 +161,7 @@ msgstr "Kiểm tra cập nhật"
|
||||
|
||||
#. • IDD_UPDATE_POLICY → IDS_INCLUDE_BETAS_TXT
|
||||
msgid "Include beta versions"
|
||||
msgstr "Gồm bản thử nghiệm"
|
||||
msgstr "Bao gồm bản thử nghiệm"
|
||||
|
||||
#. • IDD_UPDATE_POLICY → IDC_CHECK_NOW
|
||||
msgid "Check Now"
|
||||
@ -173,7 +173,7 @@ msgstr "Kiểm tra cập nhật - Rufus"
|
||||
|
||||
#. • IDD_NEW_VERSION → IDS_NEW_VERSION_AVAIL_TXT
|
||||
msgid "A newer version is available. Please download the latest version!"
|
||||
msgstr "Đã có phiên bản mới. Vui lòng tải phiên bản mới nhất!"
|
||||
msgstr "Đã có phiên bản mới hơn. Vui lòng tải phiên bản mới nhất!"
|
||||
|
||||
#. • IDD_NEW_VERSION → IDC_WEBSITE
|
||||
msgid "Click here to go to the website"
|
||||
@ -191,7 +191,7 @@ msgstr "Tải xuống"
|
||||
|
||||
#. • MSG_001
|
||||
msgid "Other instance detected"
|
||||
msgstr "Phát hiện tiến trình chạy đồng thời"
|
||||
msgstr "Đã phát hiện tiến trình chạy đồng thời"
|
||||
|
||||
#. • MSG_002
|
||||
msgid ""
|
||||
@ -199,14 +199,14 @@ msgid ""
|
||||
"Please close the first application before running another one."
|
||||
msgstr ""
|
||||
"Ứng dụng Rufus khác đang chạy.\n"
|
||||
"Vui lòng đóng ứng dụng đầu tiên trước khi chạy tiếp."
|
||||
"Vui lòng đóng ứng dụng đầu tiên trước khi chạy một ứng dụng mới."
|
||||
|
||||
#. • MSG_003
|
||||
msgid ""
|
||||
"WARNING: ALL DATA ON DEVICE '%s' WILL BE DESTROYED.\n"
|
||||
"To continue with this operation, click OK. To quit click CANCEL."
|
||||
msgstr ""
|
||||
"CẢNH BÁO: TẤT CẢ DỮ LIỆU TRÊN THIẾT BỊ '%s' SẼ BỊ HUỶ.\n"
|
||||
"CẢNH BÁO: TẤT CẢ DỮ LIỆU TRÊN THIẾT BỊ '%s' SẼ BỊ XOÁ.\n"
|
||||
"Để tiếp tục tiến trình này, nhấn OK. Để thoát nhấn HUỶ."
|
||||
|
||||
#. • MSG_004
|
||||
@ -215,7 +215,7 @@ msgstr "Chính sách cập nhật Rufus"
|
||||
|
||||
#. • MSG_005
|
||||
msgid "Do you want to allow Rufus to check for application updates online?"
|
||||
msgstr "Bạn có muốn cho phép Rufus kiểm tra cập nhật ứng dụng trực tuyến?"
|
||||
msgstr "Bạn có muốn cho phép Rufus kiểm tra các bản cập nhật ứng dụng trực tuyến?"
|
||||
|
||||
#. • MSG_007
|
||||
msgid "Cancel"
|
||||
@ -280,45 +280,45 @@ msgstr "Phiên bản mới nhất: %d.%d (Bản dựng %d)"
|
||||
#. • MSG_020
|
||||
#. • MSG_026
|
||||
msgid "bytes"
|
||||
msgstr "bytes"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_021
|
||||
#.
|
||||
#. *Short* version of the kilobyte size suffix
|
||||
msgid "KB"
|
||||
msgstr "KB"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_022
|
||||
#.
|
||||
#. *Short* version of the megabyte size suffix
|
||||
msgid "MB"
|
||||
msgstr "MB"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_023
|
||||
#.
|
||||
#. *Short* version of the gigabyte size suffix
|
||||
msgid "GB"
|
||||
msgstr "GB"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_024
|
||||
#.
|
||||
#. *Short* version of the terabyte size suffix
|
||||
msgid "TB"
|
||||
msgstr "TB"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_025
|
||||
#.
|
||||
#. *Short* version of the pentabyte size suffix
|
||||
msgid "PB"
|
||||
msgstr "PB"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_027
|
||||
msgid "kilobytes"
|
||||
msgstr "kilobytes"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_028
|
||||
msgid "megabytes"
|
||||
msgstr "megabytes"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_029
|
||||
msgid "Default"
|
||||
@ -346,14 +346,14 @@ msgstr "BIOS hoặc UEFI"
|
||||
#.
|
||||
#. Number of bad block check passes (singular for 1 pass)
|
||||
msgid "%d pass"
|
||||
msgstr "Qua %d lần"
|
||||
msgstr "Đạt %d lần"
|
||||
|
||||
#. • MSG_035
|
||||
#.
|
||||
#. Number of bad block check passes (plural for 2 or more passes).
|
||||
#. See MSG_087 for the message that %s gets replaced with.
|
||||
msgid "%d passes %s"
|
||||
msgstr "Qua %d lần %s"
|
||||
msgstr "Đã đạt %d lần %s"
|
||||
|
||||
#. • MSG_036
|
||||
msgid "ISO Image"
|
||||
@ -373,7 +373,7 @@ msgstr "Khởi chạy"
|
||||
|
||||
#. • MSG_041
|
||||
msgid "Operation cancelled by the user"
|
||||
msgstr "Tiến trình bị huỷ bởi người dùng"
|
||||
msgstr "Tiến trình đã bị huỷ bởi người dùng"
|
||||
|
||||
#. • MSG_042
|
||||
msgid "Error"
|
||||
@ -403,11 +403,11 @@ msgstr "Đa phân vùng"
|
||||
|
||||
#. • MSG_048
|
||||
msgid "Rufus - Flushing buffers"
|
||||
msgstr "Rufus - Xoá bộ đệm"
|
||||
msgstr "Rufus - Đang xả bộ đệm"
|
||||
|
||||
#. • MSG_049
|
||||
msgid "Rufus - Cancellation"
|
||||
msgstr "Rufus - Huỷ"
|
||||
msgstr "Rufus - Hủy bỏ"
|
||||
|
||||
#. • MSG_050
|
||||
msgid "Success."
|
||||
@ -423,15 +423,15 @@ msgstr "Không thể dùng hệ thống tập tin đã chọn cho thiết bị n
|
||||
|
||||
#. • MSG_053
|
||||
msgid "Access to the device is denied."
|
||||
msgstr "Thiết bị từ chối truy cập."
|
||||
msgstr "Truy cập tới thiết bị đã bị từ chối."
|
||||
|
||||
#. • MSG_054
|
||||
msgid "Media is write protected."
|
||||
msgstr "Thiết bị được bảo vệ ghi."
|
||||
msgstr "Thiết bị đang được bảo vệ ghi."
|
||||
|
||||
#. • MSG_055
|
||||
msgid "The device is in use by another process. Please close any other process that may be accessing the device."
|
||||
msgstr "Thiết bị đang được dùng bởi tiến trình khác. Vui lòng đóng mọi tiến trình có thể truy cập thiết bị."
|
||||
msgstr "Thiết bị đang được dùng bởi tiến trình khác. Vui lòng đóng mọi tiến trình có thể đang truy cập thiết bị."
|
||||
|
||||
#. • MSG_056
|
||||
msgid "Quick format is not available for this device."
|
||||
@ -439,23 +439,23 @@ msgstr "Định dạng nhanh không khả dụng với thiết bị này."
|
||||
|
||||
#. • MSG_057
|
||||
msgid "The volume label is invalid."
|
||||
msgstr "Tên ổ đĩa không hợp lệ."
|
||||
msgstr "Nhãn ổ đĩa không hợp lệ."
|
||||
|
||||
#. • MSG_058
|
||||
msgid "The device handle is invalid."
|
||||
msgstr "Xử lý thiết bị không hợp lệ."
|
||||
msgstr "Tham chiếu thiết bị không hợp lệ."
|
||||
|
||||
#. • MSG_059
|
||||
msgid "The selected cluster size is not valid for this device."
|
||||
msgstr "Kích cỡ liên cung đã chọn không thích hợp với thiết bị này."
|
||||
msgstr "Kích thước cụm đã chọn không hợp lệ với thiết bị này."
|
||||
|
||||
#. • MSG_060
|
||||
msgid "The volume size is invalid."
|
||||
msgstr "Kích cỡ ổ đĩa không hợp lệ."
|
||||
msgstr "Kích cỡ thiết bị không hợp lệ."
|
||||
|
||||
#. • MSG_061
|
||||
msgid "Please insert a removable media in drive."
|
||||
msgstr "Vui lòng kết nối ổ gắn ngoài vào."
|
||||
msgstr "Vui lòng cắm thiết bị lưu trữ di động vào ổ."
|
||||
|
||||
#. • MSG_062
|
||||
msgid "An unsupported command was received."
|
||||
@ -483,11 +483,11 @@ msgstr "Không thể mở thiết bị. Có thể nó đang được tiến trì
|
||||
|
||||
#. • MSG_068
|
||||
msgid "Could not partition drive."
|
||||
msgstr "Không thể phân vùng ổ đĩa."
|
||||
msgstr "Không thể phân vùng thiết bị."
|
||||
|
||||
#. • MSG_069
|
||||
msgid "Could not copy files to target drive."
|
||||
msgstr "Không thể chép tập tin vào đĩa."
|
||||
msgstr "Không thể sao chép tệp vào thiết bị đích."
|
||||
|
||||
#. • MSG_070
|
||||
msgid "Cancelled by user."
|
||||
@ -521,11 +521,11 @@ msgstr "Không thể vá/cài đặt tập tin cho việc khởi động."
|
||||
|
||||
#. • MSG_077
|
||||
msgid "Unable to assign a drive letter."
|
||||
msgstr "Không thể định ký tự ổ đĩa."
|
||||
msgstr "Không thể gán ký tự ổ đĩa."
|
||||
|
||||
#. • MSG_078
|
||||
msgid "Can't mount GUID volume."
|
||||
msgstr "Không thể gắn kết ổ GUID."
|
||||
msgstr "Không thể gắn kết phân vùng GUID."
|
||||
|
||||
#. • MSG_079
|
||||
msgid "The device is not ready."
|
||||
@ -539,11 +539,11 @@ msgid ""
|
||||
"\n"
|
||||
"We recommend that you let Windows finish, to avoid corruption. But if you grow tired of waiting, you can just unplug the device..."
|
||||
msgstr ""
|
||||
"Rufus đã phát hiện Windows vẫn đang làm sạch bộ đệm bên trong thiết bị USB.\n"
|
||||
"Rufus đã phát hiện Windows vẫn đang xả bộ đệm bên trong thiết bị USB.\n"
|
||||
"\n"
|
||||
"Tuỳ thuộc vào tốc độ của thiết bị USB, hoạt động này có thể mất một thời gian dài để hoàn tất, đặc biệt với những tập tin lớn.\n"
|
||||
"Tuỳ thuộc vào tốc độ thiết bị USB của bạn, hoạt động này có thể mất một thời gian dài để hoàn tất, đặc biệt với những tập tin lớn.\n"
|
||||
"\n"
|
||||
"Chúng tôi khuyên bạn nên để Windows kết thúc để phòng hỏng dữ liệu. Nhưng nếu bạn cảm thấy quá lâu, hãy cứ tháo thiết bị ra..."
|
||||
"Chúng tôi khuyên rằng bạn nên để Windows kết thúc để phòng hỏng dữ liệu. Nhưng nếu bạn cảm thấy quá lâu, hãy cứ tháo thiết bị ra..."
|
||||
|
||||
#. • MSG_081
|
||||
msgid "Unsupported image"
|
||||
@ -551,7 +551,7 @@ msgstr "Tệp tin không được hỗ trợ"
|
||||
|
||||
#. • MSG_082
|
||||
msgid "This image is either non-bootable, or it uses a boot or compression method that is not supported by Rufus..."
|
||||
msgstr "Tệp này không có khả năng khởi động hoặc sử dụng một phương thức khởi động hoặc nén không được Rufus hỗ trợ..."
|
||||
msgstr "Tệp này không có khả năng khởi động hoặc sử dụng một tuỳ chọn khởi động hoặc nén không được Rufus hỗ trợ..."
|
||||
|
||||
#. • MSG_083
|
||||
msgid "Replace %s?"
|
||||
@ -585,7 +585,7 @@ msgstr "Đang tải xuống %s"
|
||||
|
||||
#. • MSG_086
|
||||
msgid "No image selected"
|
||||
msgstr "Chưa chọn tệp tin"
|
||||
msgstr "Chưa tệp tin nào được chọn"
|
||||
|
||||
#. • MSG_087
|
||||
#.
|
||||
@ -604,7 +604,7 @@ msgstr "Tệp tin quá lớn"
|
||||
|
||||
#. • MSG_089
|
||||
msgid "The image is too big for the selected target."
|
||||
msgstr "Tệp tin quá lớn cho đĩa đã chọn."
|
||||
msgstr "Tệp tin quá lớn cho thiết bị đích đã chọn."
|
||||
|
||||
#. • MSG_090
|
||||
msgid "Unsupported ISO"
|
||||
@ -612,7 +612,7 @@ msgstr "ISO không được hỗ trợ"
|
||||
|
||||
#. • MSG_091
|
||||
msgid "When using UEFI Target Type, only EFI bootable ISO images are supported. Please select an EFI bootable ISO or set the Target Type to BIOS."
|
||||
msgstr "Khi dùng loại hệ thống là UEFI, chỉ có tệp ISO có thể khởi động với EFI được hỗ trợ. Vui lòng chọn tệp phù hợp hoặc chọn loại hệ thống là BIOS."
|
||||
msgstr "Khi sử dụng kiểu hệ thống khởi động UEFI, chỉ hỗ trợ các tệp ISO có khả năng khởi động bằng EFI. Vui lòng chọn một tệp ISO có hỗ trợ EFI hoặc chuyển kiểu hệ thống khởi động sang BIOS."
|
||||
|
||||
#. • MSG_092
|
||||
msgid "Unsupported filesystem"
|
||||
@ -638,7 +638,7 @@ msgstr "Tệp tin DD"
|
||||
|
||||
#. • MSG_096
|
||||
msgid "The file system currently selected can not be used with this type of ISO. Please select a different file system or use a different ISO."
|
||||
msgstr "Không thể dùng loại ISO này với hệ thống tập tin đã chọn. Vui lòng chọn một hệ thống tập tin hoặc ISO khác."
|
||||
msgstr "Không thể dùng loại ISO này với hệ thống tập tin đã chọn. Vui lòng chọn một hệ thống tập tin hoặc chọn tệp ISO khác."
|
||||
|
||||
#. • MSG_097
|
||||
msgid "'%s' can only be applied if the file system is NTFS."
|
||||
@ -652,11 +652,11 @@ msgid ""
|
||||
"\n"
|
||||
"Note: The 'FIXED/REMOVABLE' attribute is a hardware property that can only be changed using custom tools from the drive manufacturer. However those tools are ALMOST NEVER provided to the public..."
|
||||
msgstr ""
|
||||
"QUAN TRỌNG: Bạn đang cố cài đặt 'Windows To Go', nhưng ổ đĩa không có thuộc tính 'CỐ ĐỊNH'. Vì vậy, Windows có thể sẽ đóng băng tại điểm khởi động, do Microsoft không thiết kế nó để chạy với ổ đĩa có thuộc tính 'CÓ THỂ THÁO ĐƯỢC'. \n"
|
||||
"QUAN TRỌNG: Bạn đang cố cài đặt Windows To Go, nhưng ổ đĩa đích của bạn không có thuộc tính “CỐ ĐỊNH” (FIXED). Do đó, Windows có thể bị treo khi khởi động, vì Microsoft không thiết kế Windows To Go để hoạt động với ổ đĩa có thuộc tính “THÁO RỜI” (REMOVABLE).\n"
|
||||
"\n"
|
||||
"Bạn vẫn muốn tiến hành?\n"
|
||||
"Bạn có chắc chắn muốn tiếp tục không?\n"
|
||||
"\n"
|
||||
"Ghi chú: Thuộc tính 'CỐ ĐỊNH/CÓ THỂ THÁO ĐƯỢC' là một thuộc tính phần cứng chỉ có thể thay đổi bằng các công cụ tuỳ chỉnh từ nhà sản xuất ổ đĩa. Tuy nhiên những công cụ này HẦU NHƯ KHÔNG BAO GIỜ được cung cấp công khai..."
|
||||
"Lưu ý: Thuộc tính “CỐ ĐỊNH/THÁO RỜI” là một đặc điểm phần cứng và chỉ có thể thay đổi bằng công cụ đặc biệt từ nhà sản xuất ổ đĩa. Tuy nhiên, những công cụ này HẦU NHƯ KHÔNG bao giờ được cung cấp cho người dùng phổ thông..."
|
||||
|
||||
#. • MSG_099
|
||||
msgid "Filesystem limitation"
|
||||
@ -697,7 +697,7 @@ msgid ""
|
||||
"Note: The file will be downloaded in the current directory and once a '%s' exists there, it will be reused automatically."
|
||||
msgstr ""
|
||||
"%s hoặc mới hơn yêu cầu tập tin '%s' được cài đặt.\n"
|
||||
"Vì tập tin này lớn hơn 100 KB, và luôn có trong ảnh ISO %s, nó không được kèm theo trong Rufus.\n"
|
||||
"Vì tập tin này lớn hơn 100 KB, và luôn có trong các tệp ISO %s, nó không được kèm theo trong Rufus.\n"
|
||||
"\n"
|
||||
"Rufus có thể tải xuống tập tin còn thiếu cho bạn:\n"
|
||||
"- Chọn 'Có' để kết nối với Internet và tải tập tin\n"
|
||||
@ -737,12 +737,12 @@ msgid ""
|
||||
"MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size.\n"
|
||||
"Please change the Cluster size or use FreeDOS."
|
||||
msgstr ""
|
||||
"MS-DOS không thể khởi động từ ổ đĩa dùng kích thước liên cung 64 kilobytes.\n"
|
||||
"Vui lòng thay đổi kích thước liên cung hoặc dùng FreeDOS."
|
||||
"MS-DOS không thể khởi động từ ổ đĩa có kích thước cụm là 64 kilobyte.\n"
|
||||
"Vui lòng thay đổi kích thước cụm hoặc sử dụng FreeDOS thay thế."
|
||||
|
||||
#. • MSG_111
|
||||
msgid "Incompatible Cluster size"
|
||||
msgstr "Kích thước liên cung không tương thích"
|
||||
msgstr "Kích thước cụm không tương thích"
|
||||
|
||||
#. • MSG_112
|
||||
#.
|
||||
@ -809,7 +809,7 @@ msgstr "Cài đặt Windows tiêu chuẩn"
|
||||
#. http://en.wikipedia.org/wiki/Windows_To_Go in your language.
|
||||
#. Otherwise, you may add a parenthesis eg. "Windows To Go (<hint at what it does>)"
|
||||
msgid "Windows To Go"
|
||||
msgstr "Windows To Go"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_119
|
||||
msgid "advanced drive properties"
|
||||
@ -884,7 +884,7 @@ msgstr ""
|
||||
|
||||
#. • MSG_132
|
||||
msgid "Another program or process is accessing this drive. Do you want to format it anyway?"
|
||||
msgstr "Có một chương trình hoặc tiến trình nào đó đang truy cập ổ. Bạn vẫn muốn định dạng ổ đĩa?"
|
||||
msgstr "Có một chương trình hoặc tiến trình khác đang truy cập ổ. Bạn vẫn muốn định dạng ổ đĩa?"
|
||||
|
||||
#. • MSG_133
|
||||
msgid ""
|
||||
@ -1014,11 +1014,11 @@ msgstr ""
|
||||
|
||||
#. • MSG_160
|
||||
msgid "Toggle advanced options"
|
||||
msgstr "Bật/tắt tuỳ chọn nâng cao"
|
||||
msgstr "Bật/tắt các tuỳ chọn nâng cao"
|
||||
|
||||
#. • MSG_161
|
||||
msgid "Check the device for bad blocks using a test pattern"
|
||||
msgstr "Kiểm tra khối hỏng bằng mẫu thử"
|
||||
msgstr "Kiểm tra thiết bị tìm khối lỗi bằng mẫu kiểm tra"
|
||||
|
||||
#. • MSG_162
|
||||
msgid "Uncheck this box to use the \"slow\" format method"
|
||||
@ -1054,7 +1054,7 @@ msgstr ""
|
||||
|
||||
#. • MSG_170
|
||||
msgid "Enable the listing of USB Hard Drive enclosures. USE AT YOUR OWN RISKS!!!"
|
||||
msgstr "Kích hoạt liệt kê ổ cứng USB trong máy. DÙNG CẨN TRỌNG!!!"
|
||||
msgstr "Bật hiển thị các ổ cứng gắn ngoài qua USB. TỰ CHỊU RỦI RO KHI SỬ DỤNG!!!"
|
||||
|
||||
#. • MSG_171
|
||||
msgid ""
|
||||
@ -1085,7 +1085,7 @@ msgstr "Phiên bản %d.%d (Bản dựng %d)"
|
||||
|
||||
#. • MSG_176
|
||||
msgid "English translation: Pete Batard <mailto:pete@akeo.ie>"
|
||||
msgstr "Bản dịch tiếng Việt:\\line• thanhtai2009 <mailto:thanhtai2009@outlook.com>\\line• caobach <mailto:caobach@gmail.com>\\line• VNSpringRice <mailto:admin@quangminh.name.vn>"
|
||||
msgstr "Bản dịch Tiếng Việt:\\line• thanhtai2009 <mailto:thanhtai2009@outlook.com>\\line• caobach <mailto:caobach@gmail.com>\\line• Nguyễn Quang Minh (MinhNQ101) <mailto:admin@quangminh.name.vn>"
|
||||
|
||||
#. • MSG_177
|
||||
msgid "Report bugs or request enhancements at:"
|
||||
@ -1580,7 +1580,7 @@ msgstr "Không có khả năng khởi động"
|
||||
|
||||
#. • MSG_280
|
||||
msgid "Disk or ISO image"
|
||||
msgstr "Đĩa hoặc tệp tin"
|
||||
msgstr "Đĩa hoặc tệp tin ISO"
|
||||
|
||||
#. • MSG_281
|
||||
msgid "%s (Please select)"
|
||||
@ -1588,7 +1588,7 @@ msgstr "%s (Vui lòng chọn)"
|
||||
|
||||
#. • MSG_282
|
||||
msgid "Exclusive USB drive locking"
|
||||
msgstr "Khoá ổ USB đặc biệt"
|
||||
msgstr "Chặn truy cập ổ USB từ chương trình khác"
|
||||
|
||||
#. • MSG_283
|
||||
msgid "Invalid signature"
|
||||
@ -1618,7 +1618,7 @@ msgstr "Phát hiện ổ đĩa tháo được không phải USB"
|
||||
|
||||
#. • MSG_288
|
||||
msgid "Missing elevated privileges"
|
||||
msgstr "Thiếu đặc quyền"
|
||||
msgstr "Thiếu quyền quản trị"
|
||||
|
||||
#. • MSG_289
|
||||
msgid "This application can only run with elevated privileges"
|
||||
@ -1805,7 +1805,7 @@ msgstr "Đang áp dụng các cài đặt người dùng..."
|
||||
|
||||
#. • MSG_327
|
||||
msgid "Windows User Experience"
|
||||
msgstr "Trải nghiệm người dùng Windows"
|
||||
msgstr ""
|
||||
|
||||
#. • MSG_328
|
||||
msgid "Customize Windows installation?"
|
||||
@ -1829,7 +1829,7 @@ msgstr "Ngăn cản Windows To Go truy cập ổ đĩa trong"
|
||||
|
||||
#. • MSG_333
|
||||
msgid "Create a local account with username:"
|
||||
msgstr "Tạo tài khoản nội bộ với tên:"
|
||||
msgstr "Tạo tài khoản nội bộ với tên người dùng:"
|
||||
|
||||
#. • MSG_334
|
||||
msgid "Set regional options to the same values as this user's"
|
||||
@ -1841,7 +1841,7 @@ msgstr "Vô hiệu tự động mã hoá thiết bị BitLocker"
|
||||
|
||||
#. • MSG_336
|
||||
msgid "Persistent log"
|
||||
msgstr "Nhật ký"
|
||||
msgstr "Nhật ký lưu vĩnh viễn"
|
||||
|
||||
#. • MSG_337
|
||||
msgid ""
|
||||
@ -1899,7 +1899,7 @@ msgid ""
|
||||
"- Select 'Yes' to connect to the Internet and download it\n"
|
||||
"- Select 'No' to cancel the operation"
|
||||
msgstr ""
|
||||
"Một vài dữ lieu phải được tải xuống từ Microsoft để sử dụng tính năng này:\n"
|
||||
"Một vài dữ liệu phải được tải xuống từ Microsoft để sử dụng tính năng này:\n"
|
||||
"- Chọn 'Có' để kết nối tới Internet và tải xuống nó\n"
|
||||
"- Chọn 'Không' để huỷ tiến trình"
|
||||
|
||||
@ -1919,11 +1919,41 @@ msgstr "Đang giải nén tệp lưu trữ: %s"
|
||||
msgid "Use Rufus MBR"
|
||||
msgstr "Sử dụng Rufus MBR"
|
||||
|
||||
#. • MSG_350
|
||||
msgid "Use 'Windows UEFI CA 2023' signed bootloaders [EXPERIMENTAL]"
|
||||
msgstr "Sử dụng bootloader đã được ký bởi chứng chỉ “Windows UEFI CA 2023” (TÍNH NĂNG THỬ NGHIỆM)"
|
||||
|
||||
#. • MSG_351
|
||||
msgid "Checking for UEFI bootloader revocation..."
|
||||
msgstr "Đang kiểm tra trạng thái thu hồi của bootloader UEFI..."
|
||||
|
||||
#. • MSG_352
|
||||
msgid "Checking for UEFI DBX updates..."
|
||||
msgstr "Đang kiểm tra cập nhật cơ sở dữ liệu chặn (DBX) của UEFI…"
|
||||
|
||||
#. • MSG_353
|
||||
msgid "DBX update available"
|
||||
msgstr "Đã phát hiện bản cập nhật DBX của UEFI"
|
||||
|
||||
#. • MSG_354
|
||||
msgid ""
|
||||
"Rufus has found an updated version of the DBX files used to perform UEFI Secure Boot revocation checks. Do you want to download this update?\n"
|
||||
"- Select 'Yes' to connect to the Internet and download this content\n"
|
||||
"- Select 'No' to cancel the operation\n"
|
||||
"\n"
|
||||
"Note: The files will be downloaded in the application's directory and will be reused automatically if present."
|
||||
msgstr ""
|
||||
"Rufus đã phát hiện phiên bản cập nhật của các tệp DBX, được dùng để kiểm tra thu hồi Secure Boot trong UEFI. Bạn có muốn tải bản cập nhật này không?\n"
|
||||
"- Chọn “Có” để kết nối Internet và tải nội dung này.\n"
|
||||
"- Chọn “Không” để hủy thao tác.\n"
|
||||
"\n"
|
||||
"Lưu ý: Các tệp sẽ được tải về thư mục của ứng dụng và sẽ tự động được sử dụng lại nếu đã có sẵn."
|
||||
|
||||
#. • MSG_900
|
||||
#.
|
||||
#. The following messages are for the Windows Store listing only and are not used by the application
|
||||
msgid "Rufus is a utility that helps format and create bootable USB flash drives, such as USB keys/pendrives, memory sticks, etc."
|
||||
msgstr "Rufus là một tiện ích giúp định dạng và tạo khả năng khởi động cho USB, chẳng hạn như thẻ USB/đĩa di động, thẻ nhớ, vv."
|
||||
msgstr "Rufus là một tiện ích giúp định dạng và tạo khả năng khởi động cho các thiết bị USB, ví dụ như thẻ USB/đĩa di động, thẻ nhớ, v.v..."
|
||||
|
||||
#. • MSG_901
|
||||
msgid "Official site: %s"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
BIN
res/md5/bootloongarch64.efi
Normal file
BIN
res/md5/bootloongarch64.efi
Normal file
Binary file not shown.
63
res/scripts/loadcfg.py
Normal file
63
res/scripts/loadcfg.py
Normal file
@ -0,0 +1,63 @@
|
||||
#!/bin/env python3
|
||||
|
||||
# PE Load Configuration section enabler for MinGW/gcc executables.
|
||||
# The PE executable should have a IMAGE_LOAD_CONFIG_DIRECTORY## section
|
||||
# in .rdata with a 16-byte IMAGE_DIRECTORY_ENTRY_MARKER marker.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import pefile
|
||||
|
||||
IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10
|
||||
IMAGE_DIRECTORY_ENTRY_MARKER = b"_RUFUS_LOAD_CFG"
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
raise RuntimeError("No executable path supplied")
|
||||
|
||||
# Create a temp file as our source
|
||||
pe_dst = sys.argv[1]
|
||||
pe_src = sys.argv[1] + ".tmp"
|
||||
os.replace(pe_dst, pe_src)
|
||||
|
||||
# Open and parse PE
|
||||
pe = pefile.PE(pe_src)
|
||||
|
||||
# Find .rdata section
|
||||
rdata_section = next(
|
||||
(s for s in pe.sections if s.Name.rstrip(b'\x00') == b'.rdata'),
|
||||
None
|
||||
)
|
||||
if not rdata_section:
|
||||
raise RuntimeError(".rdata section not found")
|
||||
|
||||
# Read the section's raw data to search for the target string
|
||||
raw_data = rdata_section.get_data()
|
||||
|
||||
# Look for the target data in the raw section data
|
||||
offset = raw_data.find(IMAGE_DIRECTORY_ENTRY_MARKER)
|
||||
if offset == -1:
|
||||
raise RuntimeError("Load Config marker not found")
|
||||
|
||||
# Move past our 16 bytes marker
|
||||
offset += 0x10
|
||||
# Calculate the RVA and size of the Load Config section
|
||||
load_config_rva = rdata_section.VirtualAddress + offset
|
||||
print(f"RVA of Load Config: 0x{load_config_rva:X}")
|
||||
load_config_size = pe.get_dword_at_rva(load_config_rva)
|
||||
if (load_config_size < 0x20):
|
||||
raise RuntimeError("Size of Load Config section is too small")
|
||||
print(f"Size of Load Config: 0x{load_config_size:X}")
|
||||
|
||||
# Update Load Config directory entry
|
||||
pe.OPTIONAL_HEADER.DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress = load_config_rva
|
||||
pe.OPTIONAL_HEADER.DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].Size = load_config_size
|
||||
|
||||
# Update the checksum
|
||||
pe.OPTIONAL_HEADER.CheckSum = pe.generate_checksum()
|
||||
|
||||
# Write the updated PE file and remove temp
|
||||
pe.write(pe_dst)
|
||||
os.remove(pe_src)
|
||||
|
||||
# Can be validated with `DUMPBIN /LOADCONFIG <.exe>` or `objdump -x <.exe> | grep "Load Configuration"`
|
||||
print(f"Successfully enabled Load Config section in '{pe_dst}'")
|
||||
@ -33,11 +33,11 @@ and can be validated to not have been tampered through SHA-256 validation (Since
|
||||
produce SHA-256 hashes during the build process per:
|
||||
https://github.com/pbatard/rufus/blob/master/.github/workflows/setup.yml).
|
||||
|
||||
Per the https://github.com/pbatard/rufus/actions/runs/11195726475 GitHub Actions
|
||||
Per the https://github.com/pbatard/rufus/actions/runs/16191913388 GitHub Actions
|
||||
workflow run, the SHA-256 for the executables (before signature was applied) were:
|
||||
* 4e99f49b456781c92d2010a626706557df69334c6fc71ac129625f41fa311dd8 *./setup_x64.exe
|
||||
* a0d7dea2228415eb5afe34419a31eeda90f9b51338f47bc8a5ef591054277f4b *./setup_arm64.exe
|
||||
* f8e1c7c5f1297be7a76d73567d4d82f61bb20c2e5c86d2a2f8d2e5961751d658 *./setup_x64.exe
|
||||
* e6ff77b859231cc58c872c7b14ce9def73244641e487bbb074d3a759bdfcbc8d *./setup_arm64.exe
|
||||
|
||||
You will also find the VirusTotal reports for the current signed executable at:
|
||||
* https://www.virustotal.com/gui/file/a74dbfc0e2a5b2e3fd4ad3f9fdaea0060c5d29a16151b9a570a9bd653db966a7/detection
|
||||
* https://www.virustotal.com/gui/file/629fdda27e200ec98703a7606ca4e2d0e44c578341779e4d5c447d45fc860c69/detection
|
||||
* https://www.virustotal.com/gui/file/11df838dc69378187e1e1aaf32d34384157642d07096c6e49c1d0e7375634544/detection
|
||||
* https://www.virustotal.com/gui/file/14bd07f559513890a0f6565df3927392b4fe6b8e6fc3f5e832e9d69c8b7bb7eb/detection
|
||||
|
||||
@ -98,6 +98,13 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||
STARTUPINFOA si = { 0 };
|
||||
PROCESS_INFORMATION pi = { 0 };
|
||||
SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
|
||||
WCHAR *wc, wPath[MAX_PATH] = { 0 };
|
||||
|
||||
// If invoked from a different directory, cd to where this executable resides
|
||||
if (GetModuleFileName(NULL, wPath, ARRAYSIZE(wPath)) != 0 && (wc = wcsrchr(wPath, L'\\')) != NULL) {
|
||||
*wc = L'\0';
|
||||
SetCurrentDirectory(wPath);
|
||||
}
|
||||
|
||||
// Make sure we have 'setup.dll' in the same directory
|
||||
dwAttrib = GetFileAttributesA("setup.dll");
|
||||
@ -118,7 +125,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||
si.wShowWindow = SW_SHOWNORMAL;
|
||||
CreateProcessA("setup.dll", NULL, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
|
||||
CreateProcessA("setup.dll", lpCmdLine, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
|
||||
CloseHandle(pi.hProcess);
|
||||
CloseHandle(pi.hThread);
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -13,11 +13,11 @@ o Secure Boot signed NTFS UEFI drivers, derived from ntfs-3g [1].
|
||||
ARM driver (ntfs_arm.efi) is not Secure Boot signed.
|
||||
|
||||
o Non Secure Boot signed exFAT UEFI drivers from EfiFs [2].
|
||||
These drivers are the exact same as the binaries from EfiFs release 1.9 but,
|
||||
These drivers are the exact same as the binaries from EfiFs release 1.11 but,
|
||||
because they are licensed under GPLv3, cannot be Secure Boot signed.
|
||||
|
||||
o Secure Boot signed UEFI:NTFS bootloader binaries [3].
|
||||
These drivers are the exact same as the binaries from release 2.3, except for
|
||||
These drivers are the exact same as the binaries from release 2.6, except for
|
||||
the addition of Microsoft's Secure Boot signature.
|
||||
Note that, per Microsoft's current Secure Boot signing policies, the 32-bit
|
||||
ARM bootloader (bootarm.efi) is not Secure Boot signed.
|
||||
|
||||
Binary file not shown.
27
rufus.sln
27
rufus.sln
@ -1,8 +1,11 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29215.179
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.8.34330.188
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rufus", ".vs\rufus.vcxproj", "{731858A7-0303-4988-877B-9C0DD6471864}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332} = {633CFC82-E01B-4777-BDE4-DC0739804332}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ms-sys", ".vs\ms-sys.vcxproj", "{2B1D078D-8EB4-4398-9CA4-23457265A7F6}"
|
||||
EndProject
|
||||
@ -24,8 +27,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bled", ".vs\bled.vcxproj",
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ext2fs", ".vs\ext2fs.vcxproj", "{B01F5886-2B39-4B66-B65C-6427135B6A02}"
|
||||
EndProject
|
||||
|
||||
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wimlib", ".vs\wimlib.vcxproj", "{633CFC82-E01B-4777-BDE4-DC0739804332}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|arm = Debug|arm
|
||||
@ -214,6 +217,22 @@ Global
|
||||
{B01F5886-2B39-4B66-B65C-6427135B6A02}.Release|x64.Build.0 = Release|x64
|
||||
{B01F5886-2B39-4B66-B65C-6427135B6A02}.Release|x86.ActiveCfg = Release|Win32
|
||||
{B01F5886-2B39-4B66-B65C-6427135B6A02}.Release|x86.Build.0 = Release|Win32
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|arm.ActiveCfg = Debug|ARM
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|arm.Build.0 = Debug|ARM
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|arm64.ActiveCfg = Debug|ARM64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|arm64.Build.0 = Debug|ARM64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|x64.Build.0 = Debug|x64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Debug|x86.Build.0 = Debug|Win32
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|arm.ActiveCfg = Release|ARM
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|arm.Build.0 = Release|ARM
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|arm64.ActiveCfg = Release|ARM64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|arm64.Build.0 = Release|ARM64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|x64.ActiveCfg = Release|x64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|x64.Build.0 = Release|x64
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|x86.ActiveCfg = Release|Win32
|
||||
{633CFC82-E01B-4777-BDE4-DC0739804332}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver ../res/loc
|
||||
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver wimlib ../res/loc
|
||||
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
||||
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomctl32 -luuid
|
||||
NONVULNERABLE_LIBS = -lole32 -lgdi32 -lshlwapi -lcomctl32 -luuid -lntdll
|
||||
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
||||
# Ideally there would also be virtdisk and wininet as delaylib's below, but the MinGW folks haven't quite sorted out delay-loading
|
||||
# for x86_32 so as soon as you try to call APIs from these, the application will crash!
|
||||
# See https://github.com/pbatard/rufus/issues/2272
|
||||
VULNERABLE_LIBS = -ldwmapi-delaylib -lversion-delaylib -lvirtdisk-delaylib -lwininet-delaylib -lwintrust-delaylib
|
||||
VULNERABLE_LIBS = -lcrypt32-delaylib -ldwmapi-delaylib -lsetupapi-delaylib -luxtheme-delaylib -lversion-delaylib -lvirtdisk-delaylib -lwininet-delaylib -lwintrust-delaylib
|
||||
|
||||
noinst_PROGRAMS = rufus
|
||||
|
||||
@ -17,10 +15,10 @@ AM_V_WINDRES = $(AM_V_WINDRES_$(V))
|
||||
%_rc.o: %.rc ../res/loc/embedded.loc
|
||||
$(AM_V_WINDRES) $(AM_RCFLAGS) -i $< -o $@
|
||||
|
||||
rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
|
||||
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
|
||||
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
|
||||
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus
|
||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows -L ../.mingw
|
||||
rufus_SOURCES = badblocks.c darkmode.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c localization.c \
|
||||
net.c parser.c pki.c process.c cregex_compile.c cregex_parse.c cregex_vm.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c xml.c
|
||||
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio -I$(srcdir)/wimlib -I$(srcdir)/../res $(AM_CFLAGS) \
|
||||
-DEXT2_FLAT_INCLUDES=0 -D_RUFUS -DSOLUTION=rufus
|
||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows -L../.mingw
|
||||
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a $(NONVULNERABLE_LIBS) $(VULNERABLE_LIBS)
|
||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a wimlib/libwim.a $(NONVULNERABLE_LIBS) $(VULNERABLE_LIBS)
|
||||
|
||||
@ -87,7 +87,7 @@ mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
PROGRAMS = $(noinst_PROGRAMS)
|
||||
am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-cpu.$(OBJEXT) \
|
||||
am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-darkmode.$(OBJEXT) \
|
||||
rufus-dev.$(OBJEXT) rufus-dos.$(OBJEXT) \
|
||||
rufus-dos_locale.$(OBJEXT) rufus-drive.$(OBJEXT) \
|
||||
rufus-format.$(OBJEXT) rufus-format_ext.$(OBJEXT) \
|
||||
@ -95,19 +95,21 @@ am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-cpu.$(OBJEXT) \
|
||||
rufus-icon.$(OBJEXT) rufus-iso.$(OBJEXT) \
|
||||
rufus-localization.$(OBJEXT) rufus-net.$(OBJEXT) \
|
||||
rufus-parser.$(OBJEXT) rufus-pki.$(OBJEXT) \
|
||||
rufus-process.$(OBJEXT) rufus-re.$(OBJEXT) \
|
||||
rufus-process.$(OBJEXT) rufus-cregex_compile.$(OBJEXT) \
|
||||
rufus-cregex_parse.$(OBJEXT) rufus-cregex_vm.$(OBJEXT) \
|
||||
rufus-rufus.$(OBJEXT) rufus-smart.$(OBJEXT) \
|
||||
rufus-stdfn.$(OBJEXT) rufus-stdio.$(OBJEXT) \
|
||||
rufus-stdlg.$(OBJEXT) rufus-syslinux.$(OBJEXT) \
|
||||
rufus-ui.$(OBJEXT) rufus-vhd.$(OBJEXT) rufus-wue.$(OBJEXT)
|
||||
rufus-ui.$(OBJEXT) rufus-vhd.$(OBJEXT) rufus-wue.$(OBJEXT) \
|
||||
rufus-xml.$(OBJEXT)
|
||||
rufus_OBJECTS = $(am_rufus_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
rufus_DEPENDENCIES = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a \
|
||||
ms-sys/libmssys.a syslinux/libfat/libfat.a \
|
||||
syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a \
|
||||
libcdio/driver/libdriver.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1)
|
||||
libcdio/driver/libdriver.a wimlib/libwim.a \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
rufus_LINK = $(CCLD) $(rufus_CFLAGS) $(CFLAGS) $(rufus_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
@ -273,27 +275,25 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver ../res/loc
|
||||
SUBDIRS = ../.mingw bled ext2fs ms-sys syslinux/libfat syslinux/libinstaller syslinux/win libcdio/iso9660 libcdio/udf libcdio/driver wimlib ../res/loc
|
||||
# As far as I can tell, the following libraries are *not* vulnerable to side-loading, so we link using their regular version:
|
||||
NONVULNERABLE_LIBS = -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomctl32 -luuid
|
||||
NONVULNERABLE_LIBS = -lole32 -lgdi32 -lshlwapi -lcomctl32 -luuid -lntdll
|
||||
# The following libraries are vulnerable (or have an unknown vulnerability status), so we link using our delay-loaded replacement:
|
||||
# Ideally there would also be virtdisk and wininet as delaylib's below, but the MinGW folks haven't quite sorted out delay-loading
|
||||
# for x86_32 so as soon as you try to call APIs from these, the application will crash!
|
||||
# See https://github.com/pbatard/rufus/issues/2272
|
||||
VULNERABLE_LIBS = -ldwmapi-delaylib -lversion-delaylib -lvirtdisk-delaylib -lwininet-delaylib -lwintrust-delaylib
|
||||
VULNERABLE_LIBS = -lcrypt32-delaylib -ldwmapi-delaylib -lsetupapi-delaylib -luxtheme-delaylib -lversion-delaylib -lvirtdisk-delaylib -lwininet-delaylib -lwintrust-delaylib
|
||||
AM_V_WINDRES_0 = @echo " RC $@";$(WINDRES)
|
||||
AM_V_WINDRES_1 = $(WINDRES)
|
||||
AM_V_WINDRES_ = $(AM_V_WINDRES_$(AM_DEFAULT_VERBOSITY))
|
||||
AM_V_WINDRES = $(AM_V_WINDRES_$(V))
|
||||
rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
|
||||
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
|
||||
rufus_SOURCES = badblocks.c darkmode.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c localization.c \
|
||||
net.c parser.c pki.c process.c cregex_compile.c cregex_parse.c cregex_vm.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c xml.c
|
||||
|
||||
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
|
||||
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus
|
||||
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio -I$(srcdir)/wimlib -I$(srcdir)/../res $(AM_CFLAGS) \
|
||||
-DEXT2_FLAT_INCLUDES=0 -D_RUFUS -DSOLUTION=rufus
|
||||
|
||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows -L ../.mingw
|
||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows -L../.mingw
|
||||
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a $(NONVULNERABLE_LIBS) $(VULNERABLE_LIBS)
|
||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a wimlib/libwim.a $(NONVULNERABLE_LIBS) $(VULNERABLE_LIBS)
|
||||
|
||||
all: all-recursive
|
||||
|
||||
@ -355,11 +355,11 @@ rufus-badblocks.o: badblocks.c
|
||||
rufus-badblocks.obj: badblocks.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-badblocks.obj `if test -f 'badblocks.c'; then $(CYGPATH_W) 'badblocks.c'; else $(CYGPATH_W) '$(srcdir)/badblocks.c'; fi`
|
||||
|
||||
rufus-cpu.o: cpu.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cpu.o `test -f 'cpu.c' || echo '$(srcdir)/'`cpu.c
|
||||
rufus-darkmode.o: darkmode.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-darkmode.o `test -f 'darkmode.c' || echo '$(srcdir)/'`darkmode.c
|
||||
|
||||
rufus-cpu.obj: cpu.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cpu.obj `if test -f 'cpu.c'; then $(CYGPATH_W) 'cpu.c'; else $(CYGPATH_W) '$(srcdir)/cpu.c'; fi`
|
||||
rufus-darkmode.obj: darkmode.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-darkmode.obj `if test -f 'darkmode.c'; then $(CYGPATH_W) 'darkmode.c'; else $(CYGPATH_W) '$(srcdir)/darkmode.c'; fi`
|
||||
|
||||
rufus-dev.o: dev.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-dev.o `test -f 'dev.c' || echo '$(srcdir)/'`dev.c
|
||||
@ -451,11 +451,23 @@ rufus-process.o: process.c
|
||||
rufus-process.obj: process.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-process.obj `if test -f 'process.c'; then $(CYGPATH_W) 'process.c'; else $(CYGPATH_W) '$(srcdir)/process.c'; fi`
|
||||
|
||||
rufus-re.o: re.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-re.o `test -f 're.c' || echo '$(srcdir)/'`re.c
|
||||
rufus-cregex_compile.o: cregex_compile.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_compile.o `test -f 'cregex_compile.c' || echo '$(srcdir)/'`cregex_compile.c
|
||||
|
||||
rufus-re.obj: re.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-re.obj `if test -f 're.c'; then $(CYGPATH_W) 're.c'; else $(CYGPATH_W) '$(srcdir)/re.c'; fi`
|
||||
rufus-cregex_compile.obj: cregex_compile.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_compile.obj `if test -f 'cregex_compile.c'; then $(CYGPATH_W) 'cregex_compile.c'; else $(CYGPATH_W) '$(srcdir)/cregex_compile.c'; fi`
|
||||
|
||||
rufus-cregex_parse.o: cregex_parse.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_parse.o `test -f 'cregex_parse.c' || echo '$(srcdir)/'`cregex_parse.c
|
||||
|
||||
rufus-cregex_parse.obj: cregex_parse.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_parse.obj `if test -f 'cregex_parse.c'; then $(CYGPATH_W) 'cregex_parse.c'; else $(CYGPATH_W) '$(srcdir)/cregex_parse.c'; fi`
|
||||
|
||||
rufus-cregex_vm.o: cregex_vm.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_vm.o `test -f 'cregex_vm.c' || echo '$(srcdir)/'`cregex_vm.c
|
||||
|
||||
rufus-cregex_vm.obj: cregex_vm.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cregex_vm.obj `if test -f 'cregex_vm.c'; then $(CYGPATH_W) 'cregex_vm.c'; else $(CYGPATH_W) '$(srcdir)/cregex_vm.c'; fi`
|
||||
|
||||
rufus-rufus.o: rufus.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-rufus.o `test -f 'rufus.c' || echo '$(srcdir)/'`rufus.c
|
||||
@ -511,6 +523,12 @@ rufus-wue.o: wue.c
|
||||
rufus-wue.obj: wue.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-wue.obj `if test -f 'wue.c'; then $(CYGPATH_W) 'wue.c'; else $(CYGPATH_W) '$(srcdir)/wue.c'; fi`
|
||||
|
||||
rufus-xml.o: xml.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-xml.o `test -f 'xml.c' || echo '$(srcdir)/'`xml.c
|
||||
|
||||
rufus-xml.obj: xml.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-xml.obj `if test -f 'xml.c'; then $(CYGPATH_W) 'xml.c'; else $(CYGPATH_W) '$(srcdir)/xml.c'; fi`
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
# To change the values of 'make' variables: instead of editing Makefiles,
|
||||
|
||||
@ -549,7 +549,7 @@ static unsigned int test_rw(HANDLE hDrive, blk64_t last_block, size_t block_size
|
||||
if (memcmp(read_buffer + i * block_size,
|
||||
buffer + i * block_size,
|
||||
block_size)) {
|
||||
if_not_assert(currently_testing * block_size < 1 * PB)
|
||||
if_assert_fails(currently_testing * block_size < 1 * PB)
|
||||
goto out;
|
||||
// coverity[overflow_const]
|
||||
bb_count += bb_output(currently_testing+i-got, CORRUPTION_ERROR);
|
||||
|
||||
@ -2,7 +2,9 @@ noinst_LIBRARIES = libbled.a
|
||||
|
||||
libbled_a_SOURCES = bled.c crc32.c data_align.c data_extract_all.c data_skip.c decompress_bunzip2.c \
|
||||
decompress_gunzip.c decompress_uncompress.c decompress_unlzma.c decompress_unxz.c decompress_unzip.c \
|
||||
decompress_vtsi.c filter_accept_all.c filter_accept_list.c filter_accept_reject_list.c find_list_entry.c \
|
||||
header_list.c header_skip.c header_verbose_list.c init_handle.c open_transformer.c \
|
||||
seek_by_jump.c seek_by_read.c xz_dec_bcj.c xz_dec_lzma2.c xz_dec_stream.c
|
||||
decompress_unzstd.c decompress_vtsi.c filter_accept_all.c filter_accept_list.c filter_accept_reject_list.c \
|
||||
find_list_entry.c fse_decompress.c header_list.c header_skip.c header_verbose_list.c huf_decompress.c \
|
||||
init_handle.c open_transformer.c seek_by_jump.c seek_by_read.c xz_dec_bcj.c xz_dec_lzma2.c xz_dec_stream.c \
|
||||
xxhash.c zstd_common.c zstd_decompress.c zstd_decompress_block.c zstd_ddict.c zstd_entropy_common.c \
|
||||
zstd_error_private.c
|
||||
libbled_a_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/.. -Wno-undef -Wno-strict-aliasing
|
||||
|
||||
@ -103,21 +103,30 @@ am_libbled_a_OBJECTS = libbled_a-bled.$(OBJEXT) \
|
||||
libbled_a-decompress_unlzma.$(OBJEXT) \
|
||||
libbled_a-decompress_unxz.$(OBJEXT) \
|
||||
libbled_a-decompress_unzip.$(OBJEXT) \
|
||||
libbled_a-decompress_unzstd.$(OBJEXT) \
|
||||
libbled_a-decompress_vtsi.$(OBJEXT) \
|
||||
libbled_a-filter_accept_all.$(OBJEXT) \
|
||||
libbled_a-filter_accept_list.$(OBJEXT) \
|
||||
libbled_a-filter_accept_reject_list.$(OBJEXT) \
|
||||
libbled_a-find_list_entry.$(OBJEXT) \
|
||||
libbled_a-fse_decompress.$(OBJEXT) \
|
||||
libbled_a-header_list.$(OBJEXT) \
|
||||
libbled_a-header_skip.$(OBJEXT) \
|
||||
libbled_a-header_verbose_list.$(OBJEXT) \
|
||||
libbled_a-huf_decompress.$(OBJEXT) \
|
||||
libbled_a-init_handle.$(OBJEXT) \
|
||||
libbled_a-open_transformer.$(OBJEXT) \
|
||||
libbled_a-seek_by_jump.$(OBJEXT) \
|
||||
libbled_a-seek_by_read.$(OBJEXT) \
|
||||
libbled_a-xz_dec_bcj.$(OBJEXT) \
|
||||
libbled_a-xz_dec_lzma2.$(OBJEXT) \
|
||||
libbled_a-xz_dec_stream.$(OBJEXT)
|
||||
libbled_a-xz_dec_stream.$(OBJEXT) libbled_a-xxhash.$(OBJEXT) \
|
||||
libbled_a-zstd_common.$(OBJEXT) \
|
||||
libbled_a-zstd_decompress.$(OBJEXT) \
|
||||
libbled_a-zstd_decompress_block.$(OBJEXT) \
|
||||
libbled_a-zstd_ddict.$(OBJEXT) \
|
||||
libbled_a-zstd_entropy_common.$(OBJEXT) \
|
||||
libbled_a-zstd_error_private.$(OBJEXT)
|
||||
libbled_a_OBJECTS = $(am_libbled_a_OBJECTS)
|
||||
AM_V_P = $(am__v_P_@AM_V@)
|
||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
@ -269,9 +278,11 @@ top_srcdir = @top_srcdir@
|
||||
noinst_LIBRARIES = libbled.a
|
||||
libbled_a_SOURCES = bled.c crc32.c data_align.c data_extract_all.c data_skip.c decompress_bunzip2.c \
|
||||
decompress_gunzip.c decompress_uncompress.c decompress_unlzma.c decompress_unxz.c decompress_unzip.c \
|
||||
decompress_vtsi.c filter_accept_all.c filter_accept_list.c filter_accept_reject_list.c find_list_entry.c \
|
||||
header_list.c header_skip.c header_verbose_list.c init_handle.c open_transformer.c \
|
||||
seek_by_jump.c seek_by_read.c xz_dec_bcj.c xz_dec_lzma2.c xz_dec_stream.c
|
||||
decompress_unzstd.c decompress_vtsi.c filter_accept_all.c filter_accept_list.c filter_accept_reject_list.c \
|
||||
find_list_entry.c fse_decompress.c header_list.c header_skip.c header_verbose_list.c huf_decompress.c \
|
||||
init_handle.c open_transformer.c seek_by_jump.c seek_by_read.c xz_dec_bcj.c xz_dec_lzma2.c xz_dec_stream.c \
|
||||
xxhash.c zstd_common.c zstd_decompress.c zstd_decompress_block.c zstd_ddict.c zstd_entropy_common.c \
|
||||
zstd_error_private.c
|
||||
|
||||
libbled_a_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/.. -Wno-undef -Wno-strict-aliasing
|
||||
all: all-am
|
||||
@ -395,6 +406,12 @@ libbled_a-decompress_unzip.o: decompress_unzip.c
|
||||
libbled_a-decompress_unzip.obj: decompress_unzip.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-decompress_unzip.obj `if test -f 'decompress_unzip.c'; then $(CYGPATH_W) 'decompress_unzip.c'; else $(CYGPATH_W) '$(srcdir)/decompress_unzip.c'; fi`
|
||||
|
||||
libbled_a-decompress_unzstd.o: decompress_unzstd.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-decompress_unzstd.o `test -f 'decompress_unzstd.c' || echo '$(srcdir)/'`decompress_unzstd.c
|
||||
|
||||
libbled_a-decompress_unzstd.obj: decompress_unzstd.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-decompress_unzstd.obj `if test -f 'decompress_unzstd.c'; then $(CYGPATH_W) 'decompress_unzstd.c'; else $(CYGPATH_W) '$(srcdir)/decompress_unzstd.c'; fi`
|
||||
|
||||
libbled_a-decompress_vtsi.o: decompress_vtsi.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-decompress_vtsi.o `test -f 'decompress_vtsi.c' || echo '$(srcdir)/'`decompress_vtsi.c
|
||||
|
||||
@ -425,6 +442,12 @@ libbled_a-find_list_entry.o: find_list_entry.c
|
||||
libbled_a-find_list_entry.obj: find_list_entry.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-find_list_entry.obj `if test -f 'find_list_entry.c'; then $(CYGPATH_W) 'find_list_entry.c'; else $(CYGPATH_W) '$(srcdir)/find_list_entry.c'; fi`
|
||||
|
||||
libbled_a-fse_decompress.o: fse_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-fse_decompress.o `test -f 'fse_decompress.c' || echo '$(srcdir)/'`fse_decompress.c
|
||||
|
||||
libbled_a-fse_decompress.obj: fse_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-fse_decompress.obj `if test -f 'fse_decompress.c'; then $(CYGPATH_W) 'fse_decompress.c'; else $(CYGPATH_W) '$(srcdir)/fse_decompress.c'; fi`
|
||||
|
||||
libbled_a-header_list.o: header_list.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-header_list.o `test -f 'header_list.c' || echo '$(srcdir)/'`header_list.c
|
||||
|
||||
@ -443,6 +466,12 @@ libbled_a-header_verbose_list.o: header_verbose_list.c
|
||||
libbled_a-header_verbose_list.obj: header_verbose_list.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-header_verbose_list.obj `if test -f 'header_verbose_list.c'; then $(CYGPATH_W) 'header_verbose_list.c'; else $(CYGPATH_W) '$(srcdir)/header_verbose_list.c'; fi`
|
||||
|
||||
libbled_a-huf_decompress.o: huf_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-huf_decompress.o `test -f 'huf_decompress.c' || echo '$(srcdir)/'`huf_decompress.c
|
||||
|
||||
libbled_a-huf_decompress.obj: huf_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-huf_decompress.obj `if test -f 'huf_decompress.c'; then $(CYGPATH_W) 'huf_decompress.c'; else $(CYGPATH_W) '$(srcdir)/huf_decompress.c'; fi`
|
||||
|
||||
libbled_a-init_handle.o: init_handle.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-init_handle.o `test -f 'init_handle.c' || echo '$(srcdir)/'`init_handle.c
|
||||
|
||||
@ -485,6 +514,48 @@ libbled_a-xz_dec_stream.o: xz_dec_stream.c
|
||||
libbled_a-xz_dec_stream.obj: xz_dec_stream.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-xz_dec_stream.obj `if test -f 'xz_dec_stream.c'; then $(CYGPATH_W) 'xz_dec_stream.c'; else $(CYGPATH_W) '$(srcdir)/xz_dec_stream.c'; fi`
|
||||
|
||||
libbled_a-xxhash.o: xxhash.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-xxhash.o `test -f 'xxhash.c' || echo '$(srcdir)/'`xxhash.c
|
||||
|
||||
libbled_a-xxhash.obj: xxhash.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-xxhash.obj `if test -f 'xxhash.c'; then $(CYGPATH_W) 'xxhash.c'; else $(CYGPATH_W) '$(srcdir)/xxhash.c'; fi`
|
||||
|
||||
libbled_a-zstd_common.o: zstd_common.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_common.o `test -f 'zstd_common.c' || echo '$(srcdir)/'`zstd_common.c
|
||||
|
||||
libbled_a-zstd_common.obj: zstd_common.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_common.obj `if test -f 'zstd_common.c'; then $(CYGPATH_W) 'zstd_common.c'; else $(CYGPATH_W) '$(srcdir)/zstd_common.c'; fi`
|
||||
|
||||
libbled_a-zstd_decompress.o: zstd_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_decompress.o `test -f 'zstd_decompress.c' || echo '$(srcdir)/'`zstd_decompress.c
|
||||
|
||||
libbled_a-zstd_decompress.obj: zstd_decompress.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_decompress.obj `if test -f 'zstd_decompress.c'; then $(CYGPATH_W) 'zstd_decompress.c'; else $(CYGPATH_W) '$(srcdir)/zstd_decompress.c'; fi`
|
||||
|
||||
libbled_a-zstd_decompress_block.o: zstd_decompress_block.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_decompress_block.o `test -f 'zstd_decompress_block.c' || echo '$(srcdir)/'`zstd_decompress_block.c
|
||||
|
||||
libbled_a-zstd_decompress_block.obj: zstd_decompress_block.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_decompress_block.obj `if test -f 'zstd_decompress_block.c'; then $(CYGPATH_W) 'zstd_decompress_block.c'; else $(CYGPATH_W) '$(srcdir)/zstd_decompress_block.c'; fi`
|
||||
|
||||
libbled_a-zstd_ddict.o: zstd_ddict.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_ddict.o `test -f 'zstd_ddict.c' || echo '$(srcdir)/'`zstd_ddict.c
|
||||
|
||||
libbled_a-zstd_ddict.obj: zstd_ddict.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_ddict.obj `if test -f 'zstd_ddict.c'; then $(CYGPATH_W) 'zstd_ddict.c'; else $(CYGPATH_W) '$(srcdir)/zstd_ddict.c'; fi`
|
||||
|
||||
libbled_a-zstd_entropy_common.o: zstd_entropy_common.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_entropy_common.o `test -f 'zstd_entropy_common.c' || echo '$(srcdir)/'`zstd_entropy_common.c
|
||||
|
||||
libbled_a-zstd_entropy_common.obj: zstd_entropy_common.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_entropy_common.obj `if test -f 'zstd_entropy_common.c'; then $(CYGPATH_W) 'zstd_entropy_common.c'; else $(CYGPATH_W) '$(srcdir)/zstd_entropy_common.c'; fi`
|
||||
|
||||
libbled_a-zstd_error_private.o: zstd_error_private.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_error_private.o `test -f 'zstd_error_private.c' || echo '$(srcdir)/'`zstd_error_private.c
|
||||
|
||||
libbled_a-zstd_error_private.obj: zstd_error_private.c
|
||||
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libbled_a_CFLAGS) $(CFLAGS) -c -o libbled_a-zstd_error_private.obj `if test -f 'zstd_error_private.c'; then $(CYGPATH_W) 'zstd_error_private.c'; else $(CYGPATH_W) '$(srcdir)/zstd_error_private.c'; fi`
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-am
|
||||
|
||||
@ -17,6 +17,9 @@ enum {
|
||||
/* (unsigned) cast suppresses "integer overflow in expression" warning */
|
||||
XZ_MAGIC1a = 256 * (unsigned)(256 * (256 * 0xfd + '7') + 'z') + 'X',
|
||||
XZ_MAGIC2a = 256 * 'Z' + 0,
|
||||
ZSTD_MAGIC1 = 0x28B5,
|
||||
ZSTD_MAGIC2 = 0x2FFD,
|
||||
ZSTD_MAGIC = 0x28B52FFD,
|
||||
#else
|
||||
COMPRESS_MAGIC = 0x9d1f,
|
||||
GZIP_MAGIC = 0x8b1f,
|
||||
@ -25,6 +28,9 @@ enum {
|
||||
XZ_MAGIC2 = 'z' + ('X' + ('Z' + 0 * 256) * 256) * 256,
|
||||
XZ_MAGIC1a = 0xfd + ('7' + ('z' + 'X' * 256) * 256) * 256,
|
||||
XZ_MAGIC2a = 'Z' + 0 * 256,
|
||||
ZSTD_MAGIC1 = 0xB528,
|
||||
ZSTD_MAGIC2 = 0xFD2F,
|
||||
ZSTD_MAGIC = 0xFD2FB528,
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -290,6 +296,7 @@ IF_DESKTOP(long long) int unpack_bz2_stream(transformer_state_t *xstate) FAST_FU
|
||||
IF_DESKTOP(long long) int unpack_lzma_stream(transformer_state_t *xstate) FAST_FUNC;
|
||||
IF_DESKTOP(long long) int unpack_xz_stream(transformer_state_t *xstate) FAST_FUNC;
|
||||
IF_DESKTOP(long long) int unpack_vtsi_stream(transformer_state_t *xstate) FAST_FUNC;
|
||||
IF_DESKTOP(long long) int unpack_zstd_stream(transformer_state_t *xstate) FAST_FUNC;
|
||||
|
||||
char* append_ext(char *filename, const char *expected_ext) FAST_FUNC;
|
||||
int bbunpack(char **argv,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Bled (Base Library for Easy Decompression)
|
||||
*
|
||||
* Copyright © 2014-2023 Pete Batard <pete@akeo.ie>
|
||||
* Copyright © 2014-2024 Pete Batard <pete@akeo.ie>
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
@ -31,7 +31,9 @@ jmp_buf bb_error_jmp;
|
||||
char* bb_virtual_buf = NULL;
|
||||
size_t bb_virtual_len = 0, bb_virtual_pos = 0;
|
||||
int bb_virtual_fd = -1;
|
||||
uint32_t BB_BUFSIZE = 0x10000;
|
||||
// ZSTD has a minimal buffer size of (1 << ZSTD_BLOCKSIZELOG_MAX) + ZSTD_blockHeaderSize = 128 KB + 3
|
||||
// So we set our bufsize to 256 KB
|
||||
uint32_t BB_BUFSIZE = 0x40000;
|
||||
|
||||
static long long int unpack_none(transformer_state_t *xstate)
|
||||
{
|
||||
@ -49,6 +51,7 @@ unpacker_t unpacker[BLED_COMPRESSION_MAX] = {
|
||||
unpack_xz_stream,
|
||||
unpack_none,
|
||||
unpack_vtsi_stream,
|
||||
unpack_zstd_stream,
|
||||
};
|
||||
|
||||
/* Uncompress file 'src', compressed using 'type', to file 'dst' */
|
||||
@ -267,7 +270,7 @@ int64_t bled_uncompress_from_buffer_to_buffer(const char* src, const size_t src_
|
||||
|
||||
/* Initialize the library.
|
||||
* When the parameters are not NULL or zero you can:
|
||||
* - specify the buffer size to use (must be larger than 64KB and a power of two)
|
||||
* - specify the buffer size to use (must be larger than 256KB and a power of two)
|
||||
* - specify the printf-like function you want to use to output message
|
||||
* void print_function(const char* format, ...);
|
||||
* - specify the read/write functions you want to use;
|
||||
@ -283,11 +286,11 @@ int bled_init(uint32_t buffer_size, printf_t print_function, read_t read_functio
|
||||
if (bled_initialized)
|
||||
return -1;
|
||||
BB_BUFSIZE = buffer_size;
|
||||
/* buffer_size must be larger than 64 KB and a power of two */
|
||||
if (buffer_size < 0x10000 || (buffer_size & (buffer_size - 1)) != 0) {
|
||||
/* buffer_size must be larger than 256 KB and a power of two */
|
||||
if (buffer_size < 0x40000 || (buffer_size & (buffer_size - 1)) != 0) {
|
||||
if (buffer_size != 0 && print_function != NULL)
|
||||
print_function("bled_init: invalid buffer_size, defaulting to 64 KB");
|
||||
BB_BUFSIZE = 0x10000;
|
||||
BB_BUFSIZE = 0x40000;
|
||||
}
|
||||
bled_printf = print_function;
|
||||
bled_read = read_function;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Bled (Base Library for Easy Decompression)
|
||||
*
|
||||
* Copyright © 2014-2015 Pete Batard <pete@akeo.ie>
|
||||
* Copyright © 2014-2024 Pete Batard <pete@akeo.ie>
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
@ -31,6 +31,7 @@ typedef enum {
|
||||
BLED_COMPRESSION_XZ, // .xz
|
||||
BLED_COMPRESSION_7ZIP, // .7z
|
||||
BLED_COMPRESSION_VTSI, // .vtsi
|
||||
BLED_COMPRESSION_ZSTD, // .zst
|
||||
BLED_COMPRESSION_MAX
|
||||
} bled_compression_type;
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -163,7 +163,7 @@ static int get_next_block(bunzip_data *bd)
|
||||
uint32_t *dbuf;
|
||||
unsigned origPtr, t;
|
||||
unsigned dbufCount, runPos;
|
||||
unsigned runCnt = 0; // runCnt; /* for compiler */
|
||||
unsigned runCnt = 0; /* for compiler */
|
||||
|
||||
dbuf = bd->dbuf;
|
||||
selectors = bd->selectors;
|
||||
@ -843,7 +843,7 @@ char* FAST_FUNC
|
||||
unpack_bz2_data(const char *packed, int packed_len, int unpacked_len)
|
||||
{
|
||||
char *outbuf = NULL;
|
||||
bunzip_data *bd;
|
||||
bunzip_data *bd = NULL;
|
||||
int i;
|
||||
jmp_buf jmpbuf;
|
||||
|
||||
|
||||
@ -1269,7 +1269,6 @@ unpack_gz_stream(transformer_state_t *xstate)
|
||||
return -1;
|
||||
}
|
||||
to_read = -1;
|
||||
// bytebuffer_max = 0x8000;
|
||||
bytebuffer = xmalloc(bytebuffer_max);
|
||||
if (bytebuffer == NULL) {
|
||||
bb_error_msg("alloc error");
|
||||
|
||||
@ -11,9 +11,6 @@
|
||||
#include "bb_archive.h"
|
||||
|
||||
#define XZ_EXTERN static
|
||||
// We get XZ_OPTIONS_ERROR in xz_dec_stream if this is not defined
|
||||
#define XZ_DEC_ANY_CHECK
|
||||
|
||||
#define XZ_BUFSIZE BB_BUFSIZE
|
||||
|
||||
#include "xz_dec_bcj.c"
|
||||
@ -89,7 +86,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||
|
||||
#ifdef XZ_DEC_ANY_CHECK
|
||||
if (ret == XZ_UNSUPPORTED_CHECK) {
|
||||
bb_error_msg("unsupported check; not verifying file integrity");
|
||||
// bb_error_msg("unsupported check; not verifying file integrity");
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -17,8 +17,6 @@
|
||||
# define dbg(...) ((void)0)
|
||||
#endif
|
||||
|
||||
#define xread safe_read
|
||||
|
||||
enum {
|
||||
#if BB_BIG_ENDIAN
|
||||
ZIP_FILEHEADER_MAGIC = 0x504b0304,
|
||||
|
||||
141
src/bled/decompress_unzstd.c
Normal file
141
src/bled/decompress_unzstd.c
Normal file
@ -0,0 +1,141 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Glue for zstd decompression
|
||||
* Copyright (c) 2021 Norbert Lange <nolange79@gmail.com>
|
||||
* Copyright (c) 2024 Pete Batard <pete@akeo.ie>
|
||||
*
|
||||
* Based on compress.c from the systemd project,
|
||||
* provided by Norbert Lange <nolange79@gmail.com>.
|
||||
* Which originally was copied from the streaming_decompression.c
|
||||
* example from the zstd project, written by Yann Collet
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
#include "zstd_deps.h"
|
||||
#include "zstd_internal.h"
|
||||
|
||||
ALWAYS_INLINE static size_t roundupsize(size_t size, size_t align)
|
||||
{
|
||||
return (size + align - 1U) & ~(align - 1);
|
||||
}
|
||||
|
||||
ALWAYS_INLINE static IF_DESKTOP(long long) int
|
||||
unpack_zstd_stream_inner(transformer_state_t *xstate,
|
||||
ZSTD_DStream *dctx, void *out_buff)
|
||||
{
|
||||
const U32 zstd_magic = ZSTD_MAGIC;
|
||||
const size_t in_allocsize = roundupsize(ZSTD_DStreamInSize(), 1024),
|
||||
out_allocsize = roundupsize(ZSTD_DStreamOutSize(), 1024);
|
||||
|
||||
IF_DESKTOP(long long int total = 0;)
|
||||
size_t last_result = ZSTD_error_maxCode + 1;
|
||||
ssize_t nwrote = 0;
|
||||
unsigned input_fixup;
|
||||
void *in_buff = (char *)out_buff + out_allocsize;
|
||||
|
||||
memcpy(in_buff, &zstd_magic, 4);
|
||||
input_fixup = xstate->signature_skipped ? 4 : 0;
|
||||
|
||||
/* This loop assumes that the input file is one or more concatenated
|
||||
* zstd streams. This example won't work if there is trailing non-zstd
|
||||
* data at the end, but streaming decompression in general handles this
|
||||
* case. ZSTD_decompressStream() returns 0 exactly when the frame is
|
||||
* completed, and doesn't consume input after the frame.
|
||||
*/
|
||||
for (;;) {
|
||||
bool has_error = false;
|
||||
ZSTD_inBuffer input;
|
||||
ssize_t red;
|
||||
|
||||
red = safe_read(xstate->src_fd, (char *)in_buff + input_fixup, (unsigned int)(in_allocsize - input_fixup));
|
||||
if (red < 0) {
|
||||
bb_perror_msg(bb_msg_read_error);
|
||||
return -1;
|
||||
}
|
||||
if (red == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
input.src = in_buff;
|
||||
input.size = (size_t)red + input_fixup;
|
||||
input.pos = 0;
|
||||
input_fixup = 0;
|
||||
|
||||
/* Given a valid frame, zstd won't consume the last byte of the
|
||||
* frame until it has flushed all of the decompressed data of
|
||||
* the frame. So input.pos < input.size means frame is not done
|
||||
* or there is still output available.
|
||||
*/
|
||||
while (input.pos < input.size) {
|
||||
ZSTD_outBuffer output = { out_buff, out_allocsize, 0 };
|
||||
/* The return code is zero if the frame is complete, but
|
||||
* there may be multiple frames concatenated together.
|
||||
* Zstd will automatically reset the context when a
|
||||
* frame is complete. Still, calling ZSTD_DCtx_reset()
|
||||
* can be useful to reset the context to a clean state,
|
||||
* for instance if the last decompression call returned
|
||||
* an error.
|
||||
*/
|
||||
last_result = ZSTD_decompressStream(dctx, &output, &input);
|
||||
if (ZSTD_isError(last_result)) {
|
||||
has_error = true;
|
||||
break;
|
||||
}
|
||||
|
||||
nwrote = transformer_write(xstate, output.dst, output.pos);
|
||||
if (nwrote < 0 && nwrote != -ENOSPC) {
|
||||
has_error = true;
|
||||
break;
|
||||
}
|
||||
IF_DESKTOP(total = (nwrote == -ENOSPC) ? xstate->mem_output_size_max : total + output.pos);
|
||||
}
|
||||
if (has_error)
|
||||
break;
|
||||
}
|
||||
|
||||
if (last_result != 0) {
|
||||
/* The last return value from ZSTD_decompressStream did not end
|
||||
* on a frame, but we reached the end of the file! We assume
|
||||
* this is an error, and the input was truncated.
|
||||
*/
|
||||
if (last_result == ZSTD_error_maxCode + 1) {
|
||||
bb_simple_error_msg("could not read zstd data");
|
||||
} else {
|
||||
#if defined(ZSTD_STRIP_ERROR_STRINGS) && ZSTD_STRIP_ERROR_STRINGS == 1
|
||||
bb_error_msg("zstd decoder error: %u", (unsigned)last_result);
|
||||
#else
|
||||
bb_error_msg("zstd decoder error: %s", ZSTD_getErrorName(last_result));
|
||||
#endif
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
return IF_DESKTOP(total) + 0;
|
||||
}
|
||||
|
||||
IF_DESKTOP(long long) int FAST_FUNC
|
||||
unpack_zstd_stream(transformer_state_t *xstate)
|
||||
{
|
||||
const size_t in_allocsize = roundupsize(ZSTD_DStreamInSize(), 1024),
|
||||
out_allocsize = roundupsize(ZSTD_DStreamOutSize(), 1024);
|
||||
|
||||
IF_DESKTOP(long long) int result;
|
||||
void *out_buff;
|
||||
ZSTD_DStream *dctx;
|
||||
|
||||
dctx = ZSTD_createDStream();
|
||||
if (!dctx) {
|
||||
/* should be the only possibly reason of failure */
|
||||
bb_error_msg_and_die("memory exhausted");
|
||||
}
|
||||
|
||||
out_buff = xmalloc(in_allocsize + out_allocsize);
|
||||
|
||||
result = unpack_zstd_stream_inner(xstate, dctx, out_buff);
|
||||
free(out_buff);
|
||||
ZSTD_freeDStream(dctx);
|
||||
return result;
|
||||
}
|
||||
@ -4,7 +4,6 @@
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -5,7 +5,6 @@
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
//#include <fnmatch.h>
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
640
src/bled/fse.h
Normal file
640
src/bled/fse.h
Normal file
@ -0,0 +1,640 @@
|
||||
/* ******************************************************************
|
||||
* FSE : Finite State Entropy codec
|
||||
* Public Prototypes declaration
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* You can contact the author at :
|
||||
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
||||
*
|
||||
* This source code is licensed under both the BSD-style license (found in the
|
||||
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
* in the COPYING file in the root directory of this source tree).
|
||||
* You may select, at your option, one of the above-listed licenses.
|
||||
****************************************************************** */
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef FSE_H
|
||||
#define FSE_H
|
||||
|
||||
|
||||
/*-*****************************************
|
||||
* Dependencies
|
||||
******************************************/
|
||||
#include "zstd_deps.h" /* size_t, ptrdiff_t */
|
||||
|
||||
|
||||
/*-*****************************************
|
||||
* FSE_PUBLIC_API : control library symbols visibility
|
||||
******************************************/
|
||||
#if defined(FSE_DLL_EXPORT) && (FSE_DLL_EXPORT==1) && defined(__GNUC__) && (__GNUC__ >= 4)
|
||||
# define FSE_PUBLIC_API __attribute__ ((visibility ("default")))
|
||||
#elif defined(FSE_DLL_EXPORT) && (FSE_DLL_EXPORT==1) /* Visual expected */
|
||||
# define FSE_PUBLIC_API __declspec(dllexport)
|
||||
#elif defined(FSE_DLL_IMPORT) && (FSE_DLL_IMPORT==1)
|
||||
# define FSE_PUBLIC_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/
|
||||
#else
|
||||
# define FSE_PUBLIC_API
|
||||
#endif
|
||||
|
||||
/*------ Version ------*/
|
||||
#define FSE_VERSION_MAJOR 0
|
||||
#define FSE_VERSION_MINOR 9
|
||||
#define FSE_VERSION_RELEASE 0
|
||||
|
||||
#define FSE_LIB_VERSION FSE_VERSION_MAJOR.FSE_VERSION_MINOR.FSE_VERSION_RELEASE
|
||||
#define FSE_QUOTE(str) #str
|
||||
#define FSE_EXPAND_AND_QUOTE(str) FSE_QUOTE(str)
|
||||
#define FSE_VERSION_STRING FSE_EXPAND_AND_QUOTE(FSE_LIB_VERSION)
|
||||
|
||||
#define FSE_VERSION_NUMBER (FSE_VERSION_MAJOR *100*100 + FSE_VERSION_MINOR *100 + FSE_VERSION_RELEASE)
|
||||
FSE_PUBLIC_API unsigned FSE_versionNumber(void); /**< library version number; to be used when checking dll version */
|
||||
|
||||
|
||||
/*-*****************************************
|
||||
* Tool functions
|
||||
******************************************/
|
||||
FSE_PUBLIC_API size_t FSE_compressBound(size_t size); /* maximum compressed size */
|
||||
|
||||
/* Error Management */
|
||||
FSE_PUBLIC_API unsigned FSE_isError(size_t code); /* tells if a return value is an error code */
|
||||
FSE_PUBLIC_API const char* FSE_getErrorName(size_t code); /* provides error code string (useful for debugging) */
|
||||
|
||||
|
||||
/*-*****************************************
|
||||
* FSE detailed API
|
||||
******************************************/
|
||||
/*!
|
||||
FSE_compress() does the following:
|
||||
1. count symbol occurrence from source[] into table count[] (see hist.h)
|
||||
2. normalize counters so that sum(count[]) == Power_of_2 (2^tableLog)
|
||||
3. save normalized counters to memory buffer using writeNCount()
|
||||
4. build encoding table 'CTable' from normalized counters
|
||||
5. encode the data stream using encoding table 'CTable'
|
||||
|
||||
FSE_decompress() does the following:
|
||||
1. read normalized counters with readNCount()
|
||||
2. build decoding table 'DTable' from normalized counters
|
||||
3. decode the data stream using decoding table 'DTable'
|
||||
|
||||
The following API allows targeting specific sub-functions for advanced tasks.
|
||||
For example, it's possible to compress several blocks using the same 'CTable',
|
||||
or to save and provide normalized distribution using external method.
|
||||
*/
|
||||
|
||||
/* *** COMPRESSION *** */
|
||||
|
||||
/*! FSE_optimalTableLog():
|
||||
dynamically downsize 'tableLog' when conditions are met.
|
||||
It saves CPU time, by using smaller tables, while preserving or even improving compression ratio.
|
||||
@return : recommended tableLog (necessarily <= 'maxTableLog') */
|
||||
FSE_PUBLIC_API unsigned FSE_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue);
|
||||
|
||||
/*! FSE_normalizeCount():
|
||||
normalize counts so that sum(count[]) == Power_of_2 (2^tableLog)
|
||||
'normalizedCounter' is a table of short, of minimum size (maxSymbolValue+1).
|
||||
useLowProbCount is a boolean parameter which trades off compressed size for
|
||||
faster header decoding. When it is set to 1, the compressed data will be slightly
|
||||
smaller. And when it is set to 0, FSE_readNCount() and FSE_buildDTable() will be
|
||||
faster. If you are compressing a small amount of data (< 2 KB) then useLowProbCount=0
|
||||
is a good default, since header deserialization makes a big speed difference.
|
||||
Otherwise, useLowProbCount=1 is a good default, since the speed difference is small.
|
||||
@return : tableLog,
|
||||
or an errorCode, which can be tested using FSE_isError() */
|
||||
FSE_PUBLIC_API size_t FSE_normalizeCount(short* normalizedCounter, unsigned tableLog,
|
||||
const unsigned* count, size_t srcSize, unsigned maxSymbolValue, unsigned useLowProbCount);
|
||||
|
||||
/*! FSE_NCountWriteBound():
|
||||
Provides the maximum possible size of an FSE normalized table, given 'maxSymbolValue' and 'tableLog'.
|
||||
Typically useful for allocation purpose. */
|
||||
FSE_PUBLIC_API size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog);
|
||||
|
||||
/*! FSE_writeNCount():
|
||||
Compactly save 'normalizedCounter' into 'buffer'.
|
||||
@return : size of the compressed table,
|
||||
or an errorCode, which can be tested using FSE_isError(). */
|
||||
FSE_PUBLIC_API size_t FSE_writeNCount (void* buffer, size_t bufferSize,
|
||||
const short* normalizedCounter,
|
||||
unsigned maxSymbolValue, unsigned tableLog);
|
||||
|
||||
/*! Constructor and Destructor of FSE_CTable.
|
||||
Note that FSE_CTable size depends on 'tableLog' and 'maxSymbolValue' */
|
||||
typedef unsigned FSE_CTable; /* don't allocate that. It's only meant to be more restrictive than void* */
|
||||
|
||||
/*! FSE_buildCTable():
|
||||
Builds `ct`, which must be already allocated, using FSE_createCTable().
|
||||
@return : 0, or an errorCode, which can be tested using FSE_isError() */
|
||||
FSE_PUBLIC_API size_t FSE_buildCTable(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog);
|
||||
|
||||
/*! FSE_compress_usingCTable():
|
||||
Compress `src` using `ct` into `dst` which must be already allocated.
|
||||
@return : size of compressed data (<= `dstCapacity`),
|
||||
or 0 if compressed data could not fit into `dst`,
|
||||
or an errorCode, which can be tested using FSE_isError() */
|
||||
FSE_PUBLIC_API size_t FSE_compress_usingCTable (void* dst, size_t dstCapacity, const void* src, size_t srcSize, const FSE_CTable* ct);
|
||||
|
||||
/*!
|
||||
Tutorial :
|
||||
----------
|
||||
The first step is to count all symbols. FSE_count() does this job very fast.
|
||||
Result will be saved into 'count', a table of unsigned int, which must be already allocated, and have 'maxSymbolValuePtr[0]+1' cells.
|
||||
'src' is a table of bytes of size 'srcSize'. All values within 'src' MUST be <= maxSymbolValuePtr[0]
|
||||
maxSymbolValuePtr[0] will be updated, with its real value (necessarily <= original value)
|
||||
FSE_count() will return the number of occurrence of the most frequent symbol.
|
||||
This can be used to know if there is a single symbol within 'src', and to quickly evaluate its compressibility.
|
||||
If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError()).
|
||||
|
||||
The next step is to normalize the frequencies.
|
||||
FSE_normalizeCount() will ensure that sum of frequencies is == 2 ^'tableLog'.
|
||||
It also guarantees a minimum of 1 to any Symbol with frequency >= 1.
|
||||
You can use 'tableLog'==0 to mean "use default tableLog value".
|
||||
If you are unsure of which tableLog value to use, you can ask FSE_optimalTableLog(),
|
||||
which will provide the optimal valid tableLog given sourceSize, maxSymbolValue, and a user-defined maximum (0 means "default").
|
||||
|
||||
The result of FSE_normalizeCount() will be saved into a table,
|
||||
called 'normalizedCounter', which is a table of signed short.
|
||||
'normalizedCounter' must be already allocated, and have at least 'maxSymbolValue+1' cells.
|
||||
The return value is tableLog if everything proceeded as expected.
|
||||
It is 0 if there is a single symbol within distribution.
|
||||
If there is an error (ex: invalid tableLog value), the function will return an ErrorCode (which can be tested using FSE_isError()).
|
||||
|
||||
'normalizedCounter' can be saved in a compact manner to a memory area using FSE_writeNCount().
|
||||
'buffer' must be already allocated.
|
||||
For guaranteed success, buffer size must be at least FSE_headerBound().
|
||||
The result of the function is the number of bytes written into 'buffer'.
|
||||
If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError(); ex : buffer size too small).
|
||||
|
||||
'normalizedCounter' can then be used to create the compression table 'CTable'.
|
||||
The space required by 'CTable' must be already allocated, using FSE_createCTable().
|
||||
You can then use FSE_buildCTable() to fill 'CTable'.
|
||||
If there is an error, both functions will return an ErrorCode (which can be tested using FSE_isError()).
|
||||
|
||||
'CTable' can then be used to compress 'src', with FSE_compress_usingCTable().
|
||||
Similar to FSE_count(), the convention is that 'src' is assumed to be a table of char of size 'srcSize'
|
||||
The function returns the size of compressed data (without header), necessarily <= `dstCapacity`.
|
||||
If it returns '0', compressed data could not fit into 'dst'.
|
||||
If there is an error, the function will return an ErrorCode (which can be tested using FSE_isError()).
|
||||
*/
|
||||
|
||||
|
||||
/* *** DECOMPRESSION *** */
|
||||
|
||||
/*! FSE_readNCount():
|
||||
Read compactly saved 'normalizedCounter' from 'rBuffer'.
|
||||
@return : size read from 'rBuffer',
|
||||
or an errorCode, which can be tested using FSE_isError().
|
||||
maxSymbolValuePtr[0] and tableLogPtr[0] will also be updated with their respective values */
|
||||
FSE_PUBLIC_API size_t FSE_readNCount (short* normalizedCounter,
|
||||
unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
|
||||
const void* rBuffer, size_t rBuffSize);
|
||||
|
||||
/*! FSE_readNCount_bmi2():
|
||||
* Same as FSE_readNCount() but pass bmi2=1 when your CPU supports BMI2 and 0 otherwise.
|
||||
*/
|
||||
FSE_PUBLIC_API size_t FSE_readNCount_bmi2(short* normalizedCounter,
|
||||
unsigned* maxSymbolValuePtr, unsigned* tableLogPtr,
|
||||
const void* rBuffer, size_t rBuffSize, int bmi2);
|
||||
|
||||
typedef unsigned FSE_DTable; /* don't allocate that. It's just a way to be more restrictive than void* */
|
||||
|
||||
/*!
|
||||
Tutorial :
|
||||
----------
|
||||
(Note : these functions only decompress FSE-compressed blocks.
|
||||
If block is uncompressed, use memcpy() instead
|
||||
If block is a single repeated byte, use memset() instead )
|
||||
|
||||
The first step is to obtain the normalized frequencies of symbols.
|
||||
This can be performed by FSE_readNCount() if it was saved using FSE_writeNCount().
|
||||
'normalizedCounter' must be already allocated, and have at least 'maxSymbolValuePtr[0]+1' cells of signed short.
|
||||
In practice, that means it's necessary to know 'maxSymbolValue' beforehand,
|
||||
or size the table to handle worst case situations (typically 256).
|
||||
FSE_readNCount() will provide 'tableLog' and 'maxSymbolValue'.
|
||||
The result of FSE_readNCount() is the number of bytes read from 'rBuffer'.
|
||||
Note that 'rBufferSize' must be at least 4 bytes, even if useful information is less than that.
|
||||
If there is an error, the function will return an error code, which can be tested using FSE_isError().
|
||||
|
||||
The next step is to build the decompression tables 'FSE_DTable' from 'normalizedCounter'.
|
||||
This is performed by the function FSE_buildDTable().
|
||||
The space required by 'FSE_DTable' must be already allocated using FSE_createDTable().
|
||||
If there is an error, the function will return an error code, which can be tested using FSE_isError().
|
||||
|
||||
`FSE_DTable` can then be used to decompress `cSrc`, with FSE_decompress_usingDTable().
|
||||
`cSrcSize` must be strictly correct, otherwise decompression will fail.
|
||||
FSE_decompress_usingDTable() result will tell how many bytes were regenerated (<=`dstCapacity`).
|
||||
If there is an error, the function will return an error code, which can be tested using FSE_isError(). (ex: dst buffer too small)
|
||||
*/
|
||||
|
||||
#endif /* FSE_H */
|
||||
|
||||
|
||||
#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
|
||||
#define FSE_H_FSE_STATIC_LINKING_ONLY
|
||||
|
||||
/* *** Dependency *** */
|
||||
#include "fse_bitstream.h"
|
||||
|
||||
|
||||
/* *****************************************
|
||||
* Static allocation
|
||||
*******************************************/
|
||||
/* FSE buffer bounds */
|
||||
#define FSE_NCOUNTBOUND 512
|
||||
#define FSE_BLOCKBOUND(size) ((size) + ((size)>>7) + 4 /* fse states */ + sizeof(size_t) /* bitContainer */)
|
||||
#define FSE_COMPRESSBOUND(size) (FSE_NCOUNTBOUND + FSE_BLOCKBOUND(size)) /* Macro version, useful for static allocation */
|
||||
|
||||
/* It is possible to statically allocate FSE CTable/DTable as a table of FSE_CTable/FSE_DTable using below macros */
|
||||
#define FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) (1 + (1<<((maxTableLog)-1)) + (((maxSymbolValue)+1)*2))
|
||||
#define FSE_DTABLE_SIZE_U32(maxTableLog) (1 + (1<<(maxTableLog)))
|
||||
|
||||
/* or use the size to malloc() space directly. Pay attention to alignment restrictions though */
|
||||
#define FSE_CTABLE_SIZE(maxTableLog, maxSymbolValue) (FSE_CTABLE_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(FSE_CTable))
|
||||
#define FSE_DTABLE_SIZE(maxTableLog) (FSE_DTABLE_SIZE_U32(maxTableLog) * sizeof(FSE_DTable))
|
||||
|
||||
|
||||
/* *****************************************
|
||||
* FSE advanced API
|
||||
***************************************** */
|
||||
|
||||
unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, unsigned minus);
|
||||
/**< same as FSE_optimalTableLog(), which used `minus==2` */
|
||||
|
||||
size_t FSE_buildCTable_rle (FSE_CTable* ct, unsigned char symbolValue);
|
||||
/**< build a fake FSE_CTable, designed to compress always the same symbolValue */
|
||||
|
||||
/* FSE_buildCTable_wksp() :
|
||||
* Same as FSE_buildCTable(), but using an externally allocated scratch buffer (`workSpace`).
|
||||
* `wkspSize` must be >= `FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog)` of `unsigned`.
|
||||
* See FSE_buildCTable_wksp() for breakdown of workspace usage.
|
||||
*/
|
||||
#define FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog) (((maxSymbolValue + 2) + (1ull << (tableLog)))/2 + sizeof(U64)/sizeof(U32) /* additional 8 bytes for potential table overwrite */)
|
||||
#define FSE_BUILD_CTABLE_WORKSPACE_SIZE(maxSymbolValue, tableLog) (sizeof(unsigned) * FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog))
|
||||
size_t FSE_buildCTable_wksp(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
|
||||
|
||||
#define FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) (sizeof(short) * (maxSymbolValue + 1) + (1ULL << maxTableLog) + 8)
|
||||
#define FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) ((FSE_BUILD_DTABLE_WKSP_SIZE(maxTableLog, maxSymbolValue) + sizeof(unsigned) - 1) / sizeof(unsigned))
|
||||
FSE_PUBLIC_API size_t FSE_buildDTable_wksp(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);
|
||||
/**< Same as FSE_buildDTable(), using an externally allocated `workspace` produced with `FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxSymbolValue)` */
|
||||
|
||||
#define FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) (FSE_DTABLE_SIZE_U32(maxTableLog) + 1 + FSE_BUILD_DTABLE_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) + (FSE_MAX_SYMBOL_VALUE + 1) / 2 + 1)
|
||||
#define FSE_DECOMPRESS_WKSP_SIZE(maxTableLog, maxSymbolValue) (FSE_DECOMPRESS_WKSP_SIZE_U32(maxTableLog, maxSymbolValue) * sizeof(unsigned))
|
||||
size_t FSE_decompress_wksp_bmi2(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, unsigned maxLog, void* workSpace, size_t wkspSize, int bmi2);
|
||||
/**< same as FSE_decompress(), using an externally allocated `workSpace` produced with `FSE_DECOMPRESS_WKSP_SIZE_U32(maxLog, maxSymbolValue)`.
|
||||
* Set bmi2 to 1 if your CPU supports BMI2 or 0 if it doesn't */
|
||||
|
||||
typedef enum {
|
||||
FSE_repeat_none, /**< Cannot use the previous table */
|
||||
FSE_repeat_check, /**< Can use the previous table but it must be checked */
|
||||
FSE_repeat_valid /**< Can use the previous table and it is assumed to be valid */
|
||||
} FSE_repeat;
|
||||
|
||||
/* *****************************************
|
||||
* FSE symbol compression API
|
||||
*******************************************/
|
||||
/*!
|
||||
This API consists of small unitary functions, which highly benefit from being inlined.
|
||||
Hence their body are included in next section.
|
||||
*/
|
||||
typedef struct {
|
||||
ptrdiff_t value;
|
||||
const void* stateTable;
|
||||
const void* symbolTT;
|
||||
unsigned stateLog;
|
||||
} FSE_CState_t;
|
||||
|
||||
static void FSE_initCState(FSE_CState_t* CStatePtr, const FSE_CTable* ct);
|
||||
|
||||
static void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* CStatePtr, unsigned symbol);
|
||||
|
||||
static void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* CStatePtr);
|
||||
|
||||
/**<
|
||||
These functions are inner components of FSE_compress_usingCTable().
|
||||
They allow the creation of custom streams, mixing multiple tables and bit sources.
|
||||
|
||||
A key property to keep in mind is that encoding and decoding are done **in reverse direction**.
|
||||
So the first symbol you will encode is the last you will decode, like a LIFO stack.
|
||||
|
||||
You will need a few variables to track your CStream. They are :
|
||||
|
||||
FSE_CTable ct; // Provided by FSE_buildCTable()
|
||||
BIT_CStream_t bitStream; // bitStream tracking structure
|
||||
FSE_CState_t state; // State tracking structure (can have several)
|
||||
|
||||
|
||||
The first thing to do is to init bitStream and state.
|
||||
size_t errorCode = BIT_initCStream(&bitStream, dstBuffer, maxDstSize);
|
||||
FSE_initCState(&state, ct);
|
||||
|
||||
Note that BIT_initCStream() can produce an error code, so its result should be tested, using FSE_isError();
|
||||
You can then encode your input data, byte after byte.
|
||||
FSE_encodeSymbol() outputs a maximum of 'tableLog' bits at a time.
|
||||
Remember decoding will be done in reverse direction.
|
||||
FSE_encodeByte(&bitStream, &state, symbol);
|
||||
|
||||
At any time, you can also add any bit sequence.
|
||||
Note : maximum allowed nbBits is 25, for compatibility with 32-bits decoders
|
||||
BIT_addBits(&bitStream, bitField, nbBits);
|
||||
|
||||
The above methods don't commit data to memory, they just store it into local register, for speed.
|
||||
Local register size is 64-bits on 64-bits systems, 32-bits on 32-bits systems (size_t).
|
||||
Writing data to memory is a manual operation, performed by the flushBits function.
|
||||
BIT_flushBits(&bitStream);
|
||||
|
||||
Your last FSE encoding operation shall be to flush your last state value(s).
|
||||
FSE_flushState(&bitStream, &state);
|
||||
|
||||
Finally, you must close the bitStream.
|
||||
The function returns the size of CStream in bytes.
|
||||
If data couldn't fit into dstBuffer, it will return a 0 ( == not compressible)
|
||||
If there is an error, it returns an errorCode (which can be tested using FSE_isError()).
|
||||
size_t size = BIT_closeCStream(&bitStream);
|
||||
*/
|
||||
|
||||
|
||||
/* *****************************************
|
||||
* FSE symbol decompression API
|
||||
*******************************************/
|
||||
typedef struct {
|
||||
size_t state;
|
||||
const void* table; /* precise table may vary, depending on U16 */
|
||||
} FSE_DState_t;
|
||||
|
||||
|
||||
static void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt);
|
||||
|
||||
static unsigned char FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
|
||||
|
||||
static unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr);
|
||||
|
||||
/**<
|
||||
Let's now decompose FSE_decompress_usingDTable() into its unitary components.
|
||||
You will decode FSE-encoded symbols from the bitStream,
|
||||
and also any other bitFields you put in, **in reverse order**.
|
||||
|
||||
You will need a few variables to track your bitStream. They are :
|
||||
|
||||
BIT_DStream_t DStream; // Stream context
|
||||
FSE_DState_t DState; // State context. Multiple ones are possible
|
||||
FSE_DTable* DTablePtr; // Decoding table, provided by FSE_buildDTable()
|
||||
|
||||
The first thing to do is to init the bitStream.
|
||||
errorCode = BIT_initDStream(&DStream, srcBuffer, srcSize);
|
||||
|
||||
You should then retrieve your initial state(s)
|
||||
(in reverse flushing order if you have several ones) :
|
||||
errorCode = FSE_initDState(&DState, &DStream, DTablePtr);
|
||||
|
||||
You can then decode your data, symbol after symbol.
|
||||
For information the maximum number of bits read by FSE_decodeSymbol() is 'tableLog'.
|
||||
Keep in mind that symbols are decoded in reverse order, like a LIFO stack (last in, first out).
|
||||
unsigned char symbol = FSE_decodeSymbol(&DState, &DStream);
|
||||
|
||||
You can retrieve any bitfield you eventually stored into the bitStream (in reverse order)
|
||||
Note : maximum allowed nbBits is 25, for 32-bits compatibility
|
||||
size_t bitField = BIT_readBits(&DStream, nbBits);
|
||||
|
||||
All above operations only read from local register (which size depends on size_t).
|
||||
Refueling the register from memory is manually performed by the reload method.
|
||||
endSignal = FSE_reloadDStream(&DStream);
|
||||
|
||||
BIT_reloadDStream() result tells if there is still some more data to read from DStream.
|
||||
BIT_DStream_unfinished : there is still some data left into the DStream.
|
||||
BIT_DStream_endOfBuffer : Dstream reached end of buffer. Its container may no longer be completely filled.
|
||||
BIT_DStream_completed : Dstream reached its exact end, corresponding in general to decompression completed.
|
||||
BIT_DStream_tooFar : Dstream went too far. Decompression result is corrupted.
|
||||
|
||||
When reaching end of buffer (BIT_DStream_endOfBuffer), progress slowly, notably if you decode multiple symbols per loop,
|
||||
to properly detect the exact end of stream.
|
||||
After each decoded symbol, check if DStream is fully consumed using this simple test :
|
||||
BIT_reloadDStream(&DStream) >= BIT_DStream_completed
|
||||
|
||||
When it's done, verify decompression is fully completed, by checking both DStream and the relevant states.
|
||||
Checking if DStream has reached its end is performed by :
|
||||
BIT_endOfDStream(&DStream);
|
||||
Check also the states. There might be some symbols left there, if some high probability ones (>50%) are possible.
|
||||
FSE_endOfDState(&DState);
|
||||
*/
|
||||
|
||||
|
||||
/* *****************************************
|
||||
* FSE unsafe API
|
||||
*******************************************/
|
||||
static unsigned char FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD);
|
||||
/* faster, but works only if nbBits is always >= 1 (otherwise, result will be corrupted) */
|
||||
|
||||
|
||||
/* *****************************************
|
||||
* Implementation of inlined functions
|
||||
*******************************************/
|
||||
typedef struct {
|
||||
int deltaFindState;
|
||||
U32 deltaNbBits;
|
||||
} FSE_symbolCompressionTransform; /* total 8 bytes */
|
||||
|
||||
MEM_STATIC void FSE_initCState(FSE_CState_t* statePtr, const FSE_CTable* ct)
|
||||
{
|
||||
const void* ptr = ct;
|
||||
const U16* u16ptr = (const U16*) ptr;
|
||||
const U32 tableLog = MEM_read16(ptr);
|
||||
statePtr->value = (ptrdiff_t)1<<tableLog;
|
||||
statePtr->stateTable = u16ptr+2;
|
||||
statePtr->symbolTT = ct + 1 + (tableLog ? (1<<(tableLog-1)) : 1);
|
||||
statePtr->stateLog = tableLog;
|
||||
}
|
||||
|
||||
|
||||
/*! FSE_initCState2() :
|
||||
* Same as FSE_initCState(), but the first symbol to include (which will be the last to be read)
|
||||
* uses the smallest state value possible, saving the cost of this symbol */
|
||||
MEM_STATIC void FSE_initCState2(FSE_CState_t* statePtr, const FSE_CTable* ct, U32 symbol)
|
||||
{
|
||||
FSE_initCState(statePtr, ct);
|
||||
{ const FSE_symbolCompressionTransform symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
|
||||
const U16* stateTable = (const U16*)(statePtr->stateTable);
|
||||
U32 nbBitsOut = (U32)((symbolTT.deltaNbBits + (1<<15)) >> 16);
|
||||
statePtr->value = (nbBitsOut << 16) - symbolTT.deltaNbBits;
|
||||
statePtr->value = stateTable[(statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
|
||||
}
|
||||
}
|
||||
|
||||
MEM_STATIC void FSE_encodeSymbol(BIT_CStream_t* bitC, FSE_CState_t* statePtr, unsigned symbol)
|
||||
{
|
||||
FSE_symbolCompressionTransform const symbolTT = ((const FSE_symbolCompressionTransform*)(statePtr->symbolTT))[symbol];
|
||||
const U16* const stateTable = (const U16*)(statePtr->stateTable);
|
||||
U32 const nbBitsOut = (U32)((statePtr->value + symbolTT.deltaNbBits) >> 16);
|
||||
BIT_addBits(bitC, (size_t)statePtr->value, nbBitsOut);
|
||||
statePtr->value = stateTable[ (statePtr->value >> nbBitsOut) + symbolTT.deltaFindState];
|
||||
}
|
||||
|
||||
MEM_STATIC void FSE_flushCState(BIT_CStream_t* bitC, const FSE_CState_t* statePtr)
|
||||
{
|
||||
BIT_addBits(bitC, (size_t)statePtr->value, statePtr->stateLog);
|
||||
BIT_flushBits(bitC);
|
||||
}
|
||||
|
||||
|
||||
/* FSE_getMaxNbBits() :
|
||||
* Approximate maximum cost of a symbol, in bits.
|
||||
* Fractional get rounded up (i.e. a symbol with a normalized frequency of 3 gives the same result as a frequency of 2)
|
||||
* note 1 : assume symbolValue is valid (<= maxSymbolValue)
|
||||
* note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
|
||||
MEM_STATIC U32 FSE_getMaxNbBits(const void* symbolTTPtr, U32 symbolValue)
|
||||
{
|
||||
const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
|
||||
return (symbolTT[symbolValue].deltaNbBits + ((1<<16)-1)) >> 16;
|
||||
}
|
||||
|
||||
/* FSE_bitCost() :
|
||||
* Approximate symbol cost, as fractional value, using fixed-point format (accuracyLog fractional bits)
|
||||
* note 1 : assume symbolValue is valid (<= maxSymbolValue)
|
||||
* note 2 : if freq[symbolValue]==0, @return a fake cost of tableLog+1 bits */
|
||||
MEM_STATIC U32 FSE_bitCost(const void* symbolTTPtr, U32 tableLog, U32 symbolValue, U32 accuracyLog)
|
||||
{
|
||||
const FSE_symbolCompressionTransform* symbolTT = (const FSE_symbolCompressionTransform*) symbolTTPtr;
|
||||
U32 const minNbBits = symbolTT[symbolValue].deltaNbBits >> 16;
|
||||
U32 const threshold = (minNbBits+1) << 16;
|
||||
assert(tableLog < 16);
|
||||
assert(accuracyLog < 31-tableLog); /* ensure enough room for renormalization double shift */
|
||||
{ U32 const tableSize = 1 << tableLog;
|
||||
U32 const deltaFromThreshold = threshold - (symbolTT[symbolValue].deltaNbBits + tableSize);
|
||||
U32 const normalizedDeltaFromThreshold = (deltaFromThreshold << accuracyLog) >> tableLog; /* linear interpolation (very approximate) */
|
||||
U32 const bitMultiplier = 1 << accuracyLog;
|
||||
assert(symbolTT[symbolValue].deltaNbBits + tableSize <= threshold);
|
||||
assert(normalizedDeltaFromThreshold <= bitMultiplier);
|
||||
return (minNbBits+1)*bitMultiplier - normalizedDeltaFromThreshold;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ====== Decompression ====== */
|
||||
|
||||
typedef struct {
|
||||
U16 tableLog;
|
||||
U16 fastMode;
|
||||
} FSE_DTableHeader; /* sizeof U32 */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned short newState;
|
||||
unsigned char symbol;
|
||||
unsigned char nbBits;
|
||||
} FSE_decode_t; /* size == U32 */
|
||||
|
||||
MEM_STATIC void FSE_initDState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD, const FSE_DTable* dt)
|
||||
{
|
||||
const void* ptr = dt;
|
||||
const FSE_DTableHeader* const DTableH = (const FSE_DTableHeader*)ptr;
|
||||
DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog);
|
||||
BIT_reloadDStream(bitD);
|
||||
DStatePtr->table = dt + 1;
|
||||
}
|
||||
|
||||
MEM_STATIC BYTE FSE_peekSymbol(const FSE_DState_t* DStatePtr)
|
||||
{
|
||||
FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
|
||||
return DInfo.symbol;
|
||||
}
|
||||
|
||||
MEM_STATIC void FSE_updateState(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
|
||||
{
|
||||
FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
|
||||
U32 const nbBits = DInfo.nbBits;
|
||||
size_t const lowBits = BIT_readBits(bitD, nbBits);
|
||||
DStatePtr->state = DInfo.newState + lowBits;
|
||||
}
|
||||
|
||||
MEM_STATIC BYTE FSE_decodeSymbol(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
|
||||
{
|
||||
FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
|
||||
U32 const nbBits = DInfo.nbBits;
|
||||
BYTE const symbol = DInfo.symbol;
|
||||
size_t const lowBits = BIT_readBits(bitD, nbBits);
|
||||
|
||||
DStatePtr->state = DInfo.newState + lowBits;
|
||||
return symbol;
|
||||
}
|
||||
|
||||
/*! FSE_decodeSymbolFast() :
|
||||
unsafe, only works if no symbol has a probability > 50% */
|
||||
MEM_STATIC BYTE FSE_decodeSymbolFast(FSE_DState_t* DStatePtr, BIT_DStream_t* bitD)
|
||||
{
|
||||
FSE_decode_t const DInfo = ((const FSE_decode_t*)(DStatePtr->table))[DStatePtr->state];
|
||||
U32 const nbBits = DInfo.nbBits;
|
||||
BYTE const symbol = DInfo.symbol;
|
||||
size_t const lowBits = BIT_readBitsFast(bitD, nbBits);
|
||||
|
||||
DStatePtr->state = DInfo.newState + lowBits;
|
||||
return symbol;
|
||||
}
|
||||
|
||||
MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
|
||||
{
|
||||
return DStatePtr->state == 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifndef FSE_COMMONDEFS_ONLY
|
||||
|
||||
/* **************************************************************
|
||||
* Tuning parameters
|
||||
****************************************************************/
|
||||
/*!MEMORY_USAGE :
|
||||
* Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.)
|
||||
* Increasing memory usage improves compression ratio
|
||||
* Reduced memory usage can improve speed, due to cache effect
|
||||
* Recommended max value is 14, for 16KB, which nicely fits into Intel x86 L1 cache */
|
||||
#ifndef FSE_MAX_MEMORY_USAGE
|
||||
# define FSE_MAX_MEMORY_USAGE 14
|
||||
#endif
|
||||
#ifndef FSE_DEFAULT_MEMORY_USAGE
|
||||
# define FSE_DEFAULT_MEMORY_USAGE 13
|
||||
#endif
|
||||
#if (FSE_DEFAULT_MEMORY_USAGE > FSE_MAX_MEMORY_USAGE)
|
||||
# error "FSE_DEFAULT_MEMORY_USAGE must be <= FSE_MAX_MEMORY_USAGE"
|
||||
#endif
|
||||
|
||||
/*!FSE_MAX_SYMBOL_VALUE :
|
||||
* Maximum symbol value authorized.
|
||||
* Required for proper stack allocation */
|
||||
#ifndef FSE_MAX_SYMBOL_VALUE
|
||||
# define FSE_MAX_SYMBOL_VALUE 255
|
||||
#endif
|
||||
|
||||
/* **************************************************************
|
||||
* template functions type & suffix
|
||||
****************************************************************/
|
||||
#define FSE_FUNCTION_TYPE BYTE
|
||||
#define FSE_FUNCTION_EXTENSION
|
||||
#define FSE_DECODE_TYPE FSE_decode_t
|
||||
|
||||
|
||||
#endif /* !FSE_COMMONDEFS_ONLY */
|
||||
|
||||
|
||||
/* ***************************************************************
|
||||
* Constants
|
||||
*****************************************************************/
|
||||
#define FSE_MAX_TABLELOG (FSE_MAX_MEMORY_USAGE-2)
|
||||
#define FSE_MAX_TABLESIZE (1U<<FSE_MAX_TABLELOG)
|
||||
#define FSE_MAXTABLESIZE_MASK (FSE_MAX_TABLESIZE-1)
|
||||
#define FSE_DEFAULT_TABLELOG (FSE_DEFAULT_MEMORY_USAGE-2)
|
||||
#define FSE_MIN_TABLELOG 5
|
||||
|
||||
#define FSE_TABLELOG_ABSOLUTE_MAX 15
|
||||
#if FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX
|
||||
# error "FSE_MAX_TABLELOG > FSE_TABLELOG_ABSOLUTE_MAX is not supported"
|
||||
#endif
|
||||
|
||||
#define FSE_TABLESTEP(tableSize) (((tableSize)>>1) + ((tableSize)>>3) + 3)
|
||||
|
||||
|
||||
#endif /* FSE_STATIC_LINKING_ONLY */
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
456
src/bled/fse_bitstream.h
Normal file
456
src/bled/fse_bitstream.h
Normal file
@ -0,0 +1,456 @@
|
||||
/* ******************************************************************
|
||||
* bitstream
|
||||
* Part of FSE library
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* You can contact the author at :
|
||||
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
||||
*
|
||||
* This source code is licensed under both the BSD-style license (found in the
|
||||
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
* in the COPYING file in the root directory of this source tree).
|
||||
* You may select, at your option, one of the above-listed licenses.
|
||||
****************************************************************** */
|
||||
#ifndef BITSTREAM_H_MODULE
|
||||
#define BITSTREAM_H_MODULE
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* This API consists of small unitary functions, which must be inlined for best performance.
|
||||
* Since link-time-optimization is not available for all compilers,
|
||||
* these functions are defined into a .h to be included.
|
||||
*/
|
||||
|
||||
/*-****************************************
|
||||
* Dependencies
|
||||
******************************************/
|
||||
#include "zstd_mem.h" /* unaligned access routines */
|
||||
#include "zstd_compiler.h" /* UNLIKELY() */
|
||||
#include "zstd_error_private.h" /* error codes and messages */
|
||||
#include "zstd_bits.h" /* ZSTD_highbit32 */
|
||||
|
||||
|
||||
/*=========================================
|
||||
* Target specific
|
||||
=========================================*/
|
||||
#ifndef ZSTD_NO_INTRINSICS
|
||||
# if (defined(__BMI__) || defined(__BMI2__)) && defined(__GNUC__)
|
||||
# include <immintrin.h> /* support for bextr (experimental)/bzhi */
|
||||
# elif defined(__ICCARM__)
|
||||
# include <intrinsics.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define STREAM_ACCUMULATOR_MIN_32 25
|
||||
#define STREAM_ACCUMULATOR_MIN_64 57
|
||||
#define STREAM_ACCUMULATOR_MIN ((U32)(MEM_32bits() ? STREAM_ACCUMULATOR_MIN_32 : STREAM_ACCUMULATOR_MIN_64))
|
||||
|
||||
|
||||
/*-******************************************
|
||||
* bitStream encoding API (write forward)
|
||||
********************************************/
|
||||
/* bitStream can mix input from multiple sources.
|
||||
* A critical property of these streams is that they encode and decode in **reverse** direction.
|
||||
* So the first bit sequence you add will be the last to be read, like a LIFO stack.
|
||||
*/
|
||||
typedef struct {
|
||||
size_t bitContainer;
|
||||
unsigned bitPos;
|
||||
char* startPtr;
|
||||
char* ptr;
|
||||
char* endPtr;
|
||||
} BIT_CStream_t;
|
||||
|
||||
MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC, void* dstBuffer, size_t dstCapacity);
|
||||
MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC, size_t value, unsigned nbBits);
|
||||
MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC);
|
||||
MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC);
|
||||
|
||||
/* Start with initCStream, providing the size of buffer to write into.
|
||||
* bitStream will never write outside of this buffer.
|
||||
* `dstCapacity` must be >= sizeof(bitD->bitContainer), otherwise @return will be an error code.
|
||||
*
|
||||
* bits are first added to a local register.
|
||||
* Local register is size_t, hence 64-bits on 64-bits systems, or 32-bits on 32-bits systems.
|
||||
* Writing data into memory is an explicit operation, performed by the flushBits function.
|
||||
* Hence keep track how many bits are potentially stored into local register to avoid register overflow.
|
||||
* After a flushBits, a maximum of 7 bits might still be stored into local register.
|
||||
*
|
||||
* Avoid storing elements of more than 24 bits if you want compatibility with 32-bits bitstream readers.
|
||||
*
|
||||
* Last operation is to close the bitStream.
|
||||
* The function returns the final size of CStream in bytes.
|
||||
* If data couldn't fit into `dstBuffer`, it will return a 0 ( == not storable)
|
||||
*/
|
||||
|
||||
|
||||
/*-********************************************
|
||||
* bitStream decoding API (read backward)
|
||||
**********************************************/
|
||||
typedef size_t BitContainerType;
|
||||
typedef struct {
|
||||
BitContainerType bitContainer;
|
||||
unsigned bitsConsumed;
|
||||
const char* ptr;
|
||||
const char* start;
|
||||
const char* limitPtr;
|
||||
} BIT_DStream_t;
|
||||
|
||||
typedef enum { BIT_DStream_unfinished = 0, /* fully refilled */
|
||||
BIT_DStream_endOfBuffer = 1, /* still some bits left in bitstream */
|
||||
BIT_DStream_completed = 2, /* bitstream entirely consumed, bit-exact */
|
||||
BIT_DStream_overflow = 3 /* user requested more bits than present in bitstream */
|
||||
} BIT_DStream_status; /* result of BIT_reloadDStream() */
|
||||
|
||||
MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, size_t srcSize);
|
||||
MEM_STATIC size_t BIT_readBits(BIT_DStream_t* bitD, unsigned nbBits);
|
||||
MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD);
|
||||
MEM_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t* bitD);
|
||||
|
||||
|
||||
/* Start by invoking BIT_initDStream().
|
||||
* A chunk of the bitStream is then stored into a local register.
|
||||
* Local register size is 64-bits on 64-bits systems, 32-bits on 32-bits systems (BitContainerType).
|
||||
* You can then retrieve bitFields stored into the local register, **in reverse order**.
|
||||
* Local register is explicitly reloaded from memory by the BIT_reloadDStream() method.
|
||||
* A reload guarantee a minimum of ((8*sizeof(bitD->bitContainer))-7) bits when its result is BIT_DStream_unfinished.
|
||||
* Otherwise, it can be less than that, so proceed accordingly.
|
||||
* Checking if DStream has reached its end can be performed with BIT_endOfDStream().
|
||||
*/
|
||||
|
||||
|
||||
/*-****************************************
|
||||
* unsafe API
|
||||
******************************************/
|
||||
MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC, size_t value, unsigned nbBits);
|
||||
/* faster, but works only if value is "clean", meaning all high bits above nbBits are 0 */
|
||||
|
||||
MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC);
|
||||
/* unsafe version; does not check buffer overflow */
|
||||
|
||||
MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
|
||||
/* faster, but works only if nbBits >= 1 */
|
||||
|
||||
/*===== Local Constants =====*/
|
||||
static const unsigned BIT_mask[] = {
|
||||
0, 1, 3, 7, 0xF, 0x1F,
|
||||
0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF,
|
||||
0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0x1FFFF,
|
||||
0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF, 0x7FFFFF,
|
||||
0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF, 0x7FFFFFF, 0xFFFFFFF, 0x1FFFFFFF,
|
||||
0x3FFFFFFF, 0x7FFFFFFF}; /* up to 31 bits */
|
||||
#define BIT_MASK_SIZE (sizeof(BIT_mask) / sizeof(BIT_mask[0]))
|
||||
|
||||
/*-**************************************************************
|
||||
* bitStream encoding
|
||||
****************************************************************/
|
||||
/*! BIT_initCStream() :
|
||||
* `dstCapacity` must be > sizeof(size_t)
|
||||
* @return : 0 if success,
|
||||
* otherwise an error code (can be tested using ERR_isError()) */
|
||||
MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
|
||||
void* startPtr, size_t dstCapacity)
|
||||
{
|
||||
bitC->bitContainer = 0;
|
||||
bitC->bitPos = 0;
|
||||
bitC->startPtr = (char*)startPtr;
|
||||
bitC->ptr = bitC->startPtr;
|
||||
bitC->endPtr = bitC->startPtr + dstCapacity - sizeof(bitC->bitContainer);
|
||||
if (dstCapacity <= sizeof(bitC->bitContainer)) return ERROR(dstSize_tooSmall);
|
||||
return 0;
|
||||
}
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
|
||||
{
|
||||
#if defined(STATIC_BMI2) && STATIC_BMI2 == 1 && !defined(ZSTD_NO_INTRINSICS)
|
||||
return _bzhi_u64(bitContainer, nbBits);
|
||||
#else
|
||||
assert(nbBits < BIT_MASK_SIZE);
|
||||
return bitContainer & BIT_mask[nbBits];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*! BIT_addBits() :
|
||||
* can add up to 31 bits into `bitC`.
|
||||
* Note : does not check for register overflow ! */
|
||||
MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC,
|
||||
size_t value, unsigned nbBits)
|
||||
{
|
||||
DEBUG_STATIC_ASSERT(BIT_MASK_SIZE == 32);
|
||||
assert(nbBits < BIT_MASK_SIZE);
|
||||
assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
||||
bitC->bitContainer |= BIT_getLowerBits(value, nbBits) << bitC->bitPos;
|
||||
bitC->bitPos += nbBits;
|
||||
}
|
||||
|
||||
/*! BIT_addBitsFast() :
|
||||
* works only if `value` is _clean_,
|
||||
* meaning all high bits above nbBits are 0 */
|
||||
MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC,
|
||||
size_t value, unsigned nbBits)
|
||||
{
|
||||
assert((value>>nbBits) == 0);
|
||||
assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
||||
bitC->bitContainer |= value << bitC->bitPos;
|
||||
bitC->bitPos += nbBits;
|
||||
}
|
||||
|
||||
/*! BIT_flushBitsFast() :
|
||||
* assumption : bitContainer has not overflowed
|
||||
* unsafe version; does not check buffer overflow */
|
||||
MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC)
|
||||
{
|
||||
size_t const nbBytes = bitC->bitPos >> 3;
|
||||
assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
||||
assert(bitC->ptr <= bitC->endPtr);
|
||||
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
|
||||
bitC->ptr += nbBytes;
|
||||
bitC->bitPos &= 7;
|
||||
bitC->bitContainer >>= nbBytes*8;
|
||||
}
|
||||
|
||||
/*! BIT_flushBits() :
|
||||
* assumption : bitContainer has not overflowed
|
||||
* safe version; check for buffer overflow, and prevents it.
|
||||
* note : does not signal buffer overflow.
|
||||
* overflow will be revealed later on using BIT_closeCStream() */
|
||||
MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
|
||||
{
|
||||
size_t const nbBytes = bitC->bitPos >> 3;
|
||||
assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
|
||||
assert(bitC->ptr <= bitC->endPtr);
|
||||
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
|
||||
bitC->ptr += nbBytes;
|
||||
if (bitC->ptr > bitC->endPtr) bitC->ptr = bitC->endPtr;
|
||||
bitC->bitPos &= 7;
|
||||
bitC->bitContainer >>= nbBytes*8;
|
||||
}
|
||||
|
||||
/*! BIT_closeCStream() :
|
||||
* @return : size of CStream, in bytes,
|
||||
* or 0 if it could not fit into dstBuffer */
|
||||
MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
|
||||
{
|
||||
BIT_addBitsFast(bitC, 1, 1); /* endMark */
|
||||
BIT_flushBits(bitC);
|
||||
if (bitC->ptr >= bitC->endPtr) return 0; /* overflow detected */
|
||||
return (bitC->ptr - bitC->startPtr) + (bitC->bitPos > 0);
|
||||
}
|
||||
|
||||
|
||||
/*-********************************************************
|
||||
* bitStream decoding
|
||||
**********************************************************/
|
||||
/*! BIT_initDStream() :
|
||||
* Initialize a BIT_DStream_t.
|
||||
* `bitD` : a pointer to an already allocated BIT_DStream_t structure.
|
||||
* `srcSize` must be the *exact* size of the bitStream, in bytes.
|
||||
* @return : size of stream (== srcSize), or an errorCode if a problem is detected
|
||||
*/
|
||||
MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
|
||||
{
|
||||
if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
|
||||
|
||||
bitD->start = (const char*)srcBuffer;
|
||||
bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer);
|
||||
|
||||
if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */
|
||||
bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer);
|
||||
bitD->bitContainer = MEM_readLEST(bitD->ptr);
|
||||
{ BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
|
||||
bitD->bitsConsumed = lastByte ? 8 - ZSTD_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */
|
||||
if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */ }
|
||||
} else {
|
||||
bitD->ptr = bitD->start;
|
||||
bitD->bitContainer = *(const BYTE*)(bitD->start);
|
||||
switch(srcSize)
|
||||
{
|
||||
case 7: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
case 6: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
case 5: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
case 4: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[3]) << 24;
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
case 3: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[2]) << 16;
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
case 2: bitD->bitContainer += (BitContainerType)(((const BYTE*)(srcBuffer))[1]) << 8;
|
||||
ZSTD_FALLTHROUGH;
|
||||
|
||||
default: break;
|
||||
}
|
||||
{ BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
|
||||
bitD->bitsConsumed = lastByte ? 8 - ZSTD_highbit32(lastByte) : 0;
|
||||
if (lastByte == 0) return ERROR(corruption_detected); /* endMark not present */
|
||||
}
|
||||
bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
|
||||
}
|
||||
|
||||
return srcSize;
|
||||
}
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t BIT_getUpperBits(BitContainerType bitContainer, U32 const start)
|
||||
{
|
||||
return bitContainer >> start;
|
||||
}
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t BIT_getMiddleBits(BitContainerType bitContainer, U32 const start, U32 const nbBits)
|
||||
{
|
||||
U32 const regMask = sizeof(bitContainer)*8 - 1;
|
||||
/* if start > regMask, bitstream is corrupted, and result is undefined */
|
||||
assert(nbBits < BIT_MASK_SIZE);
|
||||
/* x86 transform & ((1 << nbBits) - 1) to bzhi instruction, it is better
|
||||
* than accessing memory. When bmi2 instruction is not present, we consider
|
||||
* such cpus old (pre-Haswell, 2013) and their performance is not of that
|
||||
* importance.
|
||||
*/
|
||||
#if defined(__x86_64__) || defined(_M_X64)
|
||||
return (bitContainer >> (start & regMask)) & ((((U64)1) << nbBits) - 1);
|
||||
#else
|
||||
return (bitContainer >> (start & regMask)) & BIT_mask[nbBits];
|
||||
#endif
|
||||
}
|
||||
|
||||
/*! BIT_lookBits() :
|
||||
* Provides next n bits from local register.
|
||||
* local register is not modified.
|
||||
* On 32-bits, maxNbBits==24.
|
||||
* On 64-bits, maxNbBits==56.
|
||||
* @return : value extracted */
|
||||
FORCE_INLINE_TEMPLATE size_t BIT_lookBits(const BIT_DStream_t* bitD, U32 nbBits)
|
||||
{
|
||||
/* arbitrate between double-shift and shift+mask */
|
||||
#if 1
|
||||
/* if bitD->bitsConsumed + nbBits > sizeof(bitD->bitContainer)*8,
|
||||
* bitstream is likely corrupted, and result is undefined */
|
||||
return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits);
|
||||
#else
|
||||
/* this code path is slower on my os-x laptop */
|
||||
U32 const regMask = sizeof(bitD->bitContainer)*8 - 1;
|
||||
return ((bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> 1) >> ((regMask-nbBits) & regMask);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*! BIT_lookBitsFast() :
|
||||
* unsafe version; only works if nbBits >= 1 */
|
||||
MEM_STATIC size_t BIT_lookBitsFast(const BIT_DStream_t* bitD, U32 nbBits)
|
||||
{
|
||||
U32 const regMask = sizeof(bitD->bitContainer)*8 - 1;
|
||||
assert(nbBits >= 1);
|
||||
return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask);
|
||||
}
|
||||
|
||||
FORCE_INLINE_TEMPLATE void BIT_skipBits(BIT_DStream_t* bitD, U32 nbBits)
|
||||
{
|
||||
bitD->bitsConsumed += nbBits;
|
||||
}
|
||||
|
||||
/*! BIT_readBits() :
|
||||
* Read (consume) next n bits from local register and update.
|
||||
* Pay attention to not read more than nbBits contained into local register.
|
||||
* @return : extracted value. */
|
||||
FORCE_INLINE_TEMPLATE size_t BIT_readBits(BIT_DStream_t* bitD, unsigned nbBits)
|
||||
{
|
||||
size_t const value = BIT_lookBits(bitD, nbBits);
|
||||
BIT_skipBits(bitD, nbBits);
|
||||
return value;
|
||||
}
|
||||
|
||||
/*! BIT_readBitsFast() :
|
||||
* unsafe version; only works if nbBits >= 1 */
|
||||
MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits)
|
||||
{
|
||||
size_t const value = BIT_lookBitsFast(bitD, nbBits);
|
||||
assert(nbBits >= 1);
|
||||
BIT_skipBits(bitD, nbBits);
|
||||
return value;
|
||||
}
|
||||
|
||||
/*! BIT_reloadDStream_internal() :
|
||||
* Simple variant of BIT_reloadDStream(), with two conditions:
|
||||
* 1. bitstream is valid : bitsConsumed <= sizeof(bitD->bitContainer)*8
|
||||
* 2. look window is valid after shifted down : bitD->ptr >= bitD->start
|
||||
*/
|
||||
MEM_STATIC BIT_DStream_status BIT_reloadDStream_internal(BIT_DStream_t* bitD)
|
||||
{
|
||||
assert(bitD->bitsConsumed <= sizeof(bitD->bitContainer)*8);
|
||||
bitD->ptr -= bitD->bitsConsumed >> 3;
|
||||
assert(bitD->ptr >= bitD->start);
|
||||
bitD->bitsConsumed &= 7;
|
||||
bitD->bitContainer = MEM_readLEST(bitD->ptr);
|
||||
return BIT_DStream_unfinished;
|
||||
}
|
||||
|
||||
/*! BIT_reloadDStreamFast() :
|
||||
* Similar to BIT_reloadDStream(), but with two differences:
|
||||
* 1. bitsConsumed <= sizeof(bitD->bitContainer)*8 must hold!
|
||||
* 2. Returns BIT_DStream_overflow when bitD->ptr < bitD->limitPtr, at this
|
||||
* point you must use BIT_reloadDStream() to reload.
|
||||
*/
|
||||
MEM_STATIC BIT_DStream_status BIT_reloadDStreamFast(BIT_DStream_t* bitD)
|
||||
{
|
||||
if (UNLIKELY(bitD->ptr < bitD->limitPtr))
|
||||
return BIT_DStream_overflow;
|
||||
return BIT_reloadDStream_internal(bitD);
|
||||
}
|
||||
|
||||
/*! BIT_reloadDStream() :
|
||||
* Refill `bitD` from buffer previously set in BIT_initDStream() .
|
||||
* This function is safe, it guarantees it will not never beyond src buffer.
|
||||
* @return : status of `BIT_DStream_t` internal register.
|
||||
* when status == BIT_DStream_unfinished, internal register is filled with at least 25 or 57 bits */
|
||||
FORCE_INLINE_TEMPLATE BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
|
||||
{
|
||||
/* note : once in overflow mode, a bitstream remains in this mode until it's reset */
|
||||
if (UNLIKELY(bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8))) {
|
||||
static const BitContainerType zeroFilled = 0;
|
||||
bitD->ptr = (const char*)&zeroFilled; /* aliasing is allowed for char */
|
||||
/* overflow detected, erroneous scenario or end of stream: no update */
|
||||
return BIT_DStream_overflow;
|
||||
}
|
||||
|
||||
assert(bitD->ptr >= bitD->start);
|
||||
|
||||
if (bitD->ptr >= bitD->limitPtr) {
|
||||
return BIT_reloadDStream_internal(bitD);
|
||||
}
|
||||
if (bitD->ptr == bitD->start) {
|
||||
/* reached end of bitStream => no update */
|
||||
if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer;
|
||||
return BIT_DStream_completed;
|
||||
}
|
||||
/* start < ptr < limitPtr => cautious update */
|
||||
{ U32 nbBytes = bitD->bitsConsumed >> 3;
|
||||
BIT_DStream_status result = BIT_DStream_unfinished;
|
||||
if (bitD->ptr - nbBytes < bitD->start) {
|
||||
nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */
|
||||
result = BIT_DStream_endOfBuffer;
|
||||
}
|
||||
bitD->ptr -= nbBytes;
|
||||
bitD->bitsConsumed -= nbBytes*8;
|
||||
bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/*! BIT_endOfDStream() :
|
||||
* @return : 1 if DStream has _exactly_ reached its end (all bits consumed).
|
||||
*/
|
||||
MEM_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t* DStream)
|
||||
{
|
||||
return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer)*8));
|
||||
}
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* BITSTREAM_H_MODULE */
|
||||
314
src/bled/fse_decompress.c
Normal file
314
src/bled/fse_decompress.c
Normal file
@ -0,0 +1,314 @@
|
||||
/* ******************************************************************
|
||||
* FSE : Finite State Entropy decoder
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* You can contact the author at :
|
||||
* - FSE source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
||||
* - Public forum : https://groups.google.com/forum/#!forum/lz4c
|
||||
*
|
||||
* This source code is licensed under both the BSD-style license (found in the
|
||||
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
* in the COPYING file in the root directory of this source tree).
|
||||
* You may select, at your option, one of the above-listed licenses.
|
||||
****************************************************************** */
|
||||
|
||||
|
||||
/* **************************************************************
|
||||
* Includes
|
||||
****************************************************************/
|
||||
#include "fse_bitstream.h"
|
||||
#include "zstd_compiler.h"
|
||||
#define FSE_STATIC_LINKING_ONLY
|
||||
#include "fse.h"
|
||||
#include "zstd_error_private.h"
|
||||
#include "zstd_deps.h" /* ZSTD_memcpy */
|
||||
#include "zstd_bits.h" /* ZSTD_highbit32 */
|
||||
|
||||
|
||||
/* **************************************************************
|
||||
* Error Management
|
||||
****************************************************************/
|
||||
#define FSE_isError ERR_isError
|
||||
#define FSE_STATIC_ASSERT(c) DEBUG_STATIC_ASSERT(c) /* use only *after* variable declarations */
|
||||
|
||||
|
||||
/* **************************************************************
|
||||
* Templates
|
||||
****************************************************************/
|
||||
/*
|
||||
designed to be included
|
||||
for type-specific functions (template emulation in C)
|
||||
Objective is to write these functions only once, for improved maintenance
|
||||
*/
|
||||
|
||||
/* safety checks */
|
||||
#ifndef FSE_FUNCTION_EXTENSION
|
||||
# error "FSE_FUNCTION_EXTENSION must be defined"
|
||||
#endif
|
||||
#ifndef FSE_FUNCTION_TYPE
|
||||
# error "FSE_FUNCTION_TYPE must be defined"
|
||||
#endif
|
||||
|
||||
/* Function names */
|
||||
#define FSE_CAT(X,Y) X##Y
|
||||
#define FSE_FUNCTION_NAME(X,Y) FSE_CAT(X,Y)
|
||||
#define FSE_TYPE_NAME(X,Y) FSE_CAT(X,Y)
|
||||
|
||||
static size_t FSE_buildDTable_internal(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize)
|
||||
{
|
||||
void* const tdPtr = dt+1; /* because *dt is unsigned, 32-bits aligned on 32-bits */
|
||||
FSE_DECODE_TYPE* const tableDecode = (FSE_DECODE_TYPE*) (tdPtr);
|
||||
U16* symbolNext = (U16*)workSpace;
|
||||
BYTE* spread = (BYTE*)(symbolNext + maxSymbolValue + 1);
|
||||
|
||||
U32 const maxSV1 = maxSymbolValue + 1;
|
||||
U32 const tableSize = 1 << tableLog;
|
||||
U32 highThreshold = tableSize-1;
|
||||
|
||||
/* Sanity Checks */
|
||||
if (FSE_BUILD_DTABLE_WKSP_SIZE(tableLog, maxSymbolValue) > wkspSize) return ERROR(maxSymbolValue_tooLarge);
|
||||
if (maxSymbolValue > FSE_MAX_SYMBOL_VALUE) return ERROR(maxSymbolValue_tooLarge);
|
||||
if (tableLog > FSE_MAX_TABLELOG) return ERROR(tableLog_tooLarge);
|
||||
|
||||
/* Init, lay down lowprob symbols */
|
||||
{ FSE_DTableHeader DTableH;
|
||||
DTableH.tableLog = (U16)tableLog;
|
||||
DTableH.fastMode = 1;
|
||||
{ S16 const largeLimit= (S16)(1 << (tableLog-1));
|
||||
U32 s;
|
||||
for (s=0; s<maxSV1; s++) {
|
||||
if (normalizedCounter[s]==-1) {
|
||||
tableDecode[highThreshold--].symbol = (FSE_FUNCTION_TYPE)s;
|
||||
symbolNext[s] = 1;
|
||||
} else {
|
||||
if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0;
|
||||
symbolNext[s] = (U16)normalizedCounter[s];
|
||||
} } }
|
||||
ZSTD_memcpy(dt, &DTableH, sizeof(DTableH));
|
||||
}
|
||||
|
||||
/* Spread symbols */
|
||||
if (highThreshold == tableSize - 1) {
|
||||
size_t const tableMask = tableSize-1;
|
||||
size_t const step = FSE_TABLESTEP(tableSize);
|
||||
/* First lay down the symbols in order.
|
||||
* We use a uint64_t to lay down 8 bytes at a time. This reduces branch
|
||||
* misses since small blocks generally have small table logs, so nearly
|
||||
* all symbols have counts <= 8. We ensure we have 8 bytes at the end of
|
||||
* our buffer to handle the over-write.
|
||||
*/
|
||||
{ U64 const add = 0x0101010101010101ull;
|
||||
size_t pos = 0;
|
||||
U64 sv = 0;
|
||||
U32 s;
|
||||
for (s=0; s<maxSV1; ++s, sv += add) {
|
||||
int i;
|
||||
int const n = normalizedCounter[s];
|
||||
MEM_write64(spread + pos, sv);
|
||||
for (i = 8; i < n; i += 8) {
|
||||
MEM_write64(spread + pos + i, sv);
|
||||
}
|
||||
pos += (size_t)n;
|
||||
} }
|
||||
/* Now we spread those positions across the table.
|
||||
* The benefit of doing it in two stages is that we avoid the
|
||||
* variable size inner loop, which caused lots of branch misses.
|
||||
* Now we can run through all the positions without any branch misses.
|
||||
* We unroll the loop twice, since that is what empirically worked best.
|
||||
*/
|
||||
{
|
||||
size_t position = 0;
|
||||
size_t s;
|
||||
size_t const unroll = 2;
|
||||
assert(tableSize % unroll == 0); /* FSE_MIN_TABLELOG is 5 */
|
||||
for (s = 0; s < (size_t)tableSize; s += unroll) {
|
||||
size_t u;
|
||||
for (u = 0; u < unroll; ++u) {
|
||||
size_t const uPosition = (position + (u * step)) & tableMask;
|
||||
tableDecode[uPosition].symbol = spread[s + u];
|
||||
}
|
||||
position = (position + (unroll * step)) & tableMask;
|
||||
}
|
||||
assert(position == 0);
|
||||
}
|
||||
} else {
|
||||
U32 const tableMask = tableSize-1;
|
||||
U32 const step = FSE_TABLESTEP(tableSize);
|
||||
U32 s, position = 0;
|
||||
for (s=0; s<maxSV1; s++) {
|
||||
int i;
|
||||
for (i=0; i<normalizedCounter[s]; i++) {
|
||||
tableDecode[position].symbol = (FSE_FUNCTION_TYPE)s;
|
||||
position = (position + step) & tableMask;
|
||||
while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */
|
||||
} }
|
||||
if (position!=0) return ERROR(GENERIC); /* position must reach all cells once, otherwise normalizedCounter is incorrect */
|
||||
}
|
||||
|
||||
/* Build Decoding table */
|
||||
{ U32 u;
|
||||
for (u=0; u<tableSize; u++) {
|
||||
FSE_FUNCTION_TYPE const symbol = (FSE_FUNCTION_TYPE)(tableDecode[u].symbol);
|
||||
U32 const nextState = symbolNext[symbol]++;
|
||||
tableDecode[u].nbBits = (BYTE) (tableLog - ZSTD_highbit32(nextState) );
|
||||
tableDecode[u].newState = (U16) ( (nextState << tableDecode[u].nbBits) - tableSize);
|
||||
} }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t FSE_buildDTable_wksp(FSE_DTable* dt, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize)
|
||||
{
|
||||
return FSE_buildDTable_internal(dt, normalizedCounter, maxSymbolValue, tableLog, workSpace, wkspSize);
|
||||
}
|
||||
|
||||
|
||||
#ifndef FSE_COMMONDEFS_ONLY
|
||||
|
||||
/*-*******************************************************
|
||||
* Decompression (Byte symbols)
|
||||
*********************************************************/
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t FSE_decompress_usingDTable_generic(
|
||||
void* dst, size_t maxDstSize,
|
||||
const void* cSrc, size_t cSrcSize,
|
||||
const FSE_DTable* dt, const unsigned fast)
|
||||
{
|
||||
BYTE* const ostart = (BYTE*) dst;
|
||||
BYTE* op = ostart;
|
||||
BYTE* const omax = op + maxDstSize;
|
||||
BYTE* const olimit = omax-3;
|
||||
|
||||
BIT_DStream_t bitD;
|
||||
FSE_DState_t state1;
|
||||
FSE_DState_t state2;
|
||||
|
||||
/* Init */
|
||||
CHECK_F(BIT_initDStream(&bitD, cSrc, cSrcSize));
|
||||
|
||||
FSE_initDState(&state1, &bitD, dt);
|
||||
FSE_initDState(&state2, &bitD, dt);
|
||||
|
||||
RETURN_ERROR_IF(BIT_reloadDStream(&bitD)==BIT_DStream_overflow, corruption_detected, "");
|
||||
|
||||
#define FSE_GETSYMBOL(statePtr) fast ? FSE_decodeSymbolFast(statePtr, &bitD) : FSE_decodeSymbol(statePtr, &bitD)
|
||||
|
||||
/* 4 symbols per loop */
|
||||
for ( ; (BIT_reloadDStream(&bitD)==BIT_DStream_unfinished) & (op<olimit) ; op+=4) {
|
||||
op[0] = FSE_GETSYMBOL(&state1);
|
||||
|
||||
if (FSE_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
|
||||
BIT_reloadDStream(&bitD);
|
||||
|
||||
op[1] = FSE_GETSYMBOL(&state2);
|
||||
|
||||
if (FSE_MAX_TABLELOG*4+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
|
||||
{ if (BIT_reloadDStream(&bitD) > BIT_DStream_unfinished) { op+=2; break; } }
|
||||
|
||||
op[2] = FSE_GETSYMBOL(&state1);
|
||||
|
||||
if (FSE_MAX_TABLELOG*2+7 > sizeof(bitD.bitContainer)*8) /* This test must be static */
|
||||
BIT_reloadDStream(&bitD);
|
||||
|
||||
op[3] = FSE_GETSYMBOL(&state2);
|
||||
}
|
||||
|
||||
/* tail */
|
||||
/* note : BIT_reloadDStream(&bitD) >= FSE_DStream_partiallyFilled; Ends at exactly BIT_DStream_completed */
|
||||
while (1) {
|
||||
if (op>(omax-2)) return ERROR(dstSize_tooSmall);
|
||||
*op++ = FSE_GETSYMBOL(&state1);
|
||||
if (BIT_reloadDStream(&bitD)==BIT_DStream_overflow) {
|
||||
*op++ = FSE_GETSYMBOL(&state2);
|
||||
break;
|
||||
}
|
||||
|
||||
if (op>(omax-2)) return ERROR(dstSize_tooSmall);
|
||||
*op++ = FSE_GETSYMBOL(&state2);
|
||||
if (BIT_reloadDStream(&bitD)==BIT_DStream_overflow) {
|
||||
*op++ = FSE_GETSYMBOL(&state1);
|
||||
break;
|
||||
} }
|
||||
|
||||
assert(op >= ostart);
|
||||
return (size_t)(op-ostart);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
short ncount[FSE_MAX_SYMBOL_VALUE + 1];
|
||||
} FSE_DecompressWksp;
|
||||
|
||||
|
||||
FORCE_INLINE_TEMPLATE size_t FSE_decompress_wksp_body(
|
||||
void* dst, size_t dstCapacity,
|
||||
const void* cSrc, size_t cSrcSize,
|
||||
unsigned maxLog, void* workSpace, size_t wkspSize,
|
||||
int bmi2)
|
||||
{
|
||||
const BYTE* const istart = (const BYTE*)cSrc;
|
||||
const BYTE* ip = istart;
|
||||
unsigned tableLog;
|
||||
unsigned maxSymbolValue = FSE_MAX_SYMBOL_VALUE;
|
||||
FSE_DecompressWksp* const wksp = (FSE_DecompressWksp*)workSpace;
|
||||
size_t const dtablePos = sizeof(FSE_DecompressWksp) / sizeof(FSE_DTable);
|
||||
FSE_DTable* const dtable = (FSE_DTable*)workSpace + dtablePos;
|
||||
|
||||
FSE_STATIC_ASSERT((FSE_MAX_SYMBOL_VALUE + 1) % 2 == 0);
|
||||
if (wkspSize < sizeof(*wksp)) return ERROR(GENERIC);
|
||||
|
||||
/* correct offset to dtable depends on this property */
|
||||
FSE_STATIC_ASSERT(sizeof(FSE_DecompressWksp) % sizeof(FSE_DTable) == 0);
|
||||
|
||||
/* normal FSE decoding mode */
|
||||
{ size_t const NCountLength =
|
||||
FSE_readNCount_bmi2(wksp->ncount, &maxSymbolValue, &tableLog, istart, cSrcSize, bmi2);
|
||||
if (FSE_isError(NCountLength)) return NCountLength;
|
||||
if (tableLog > maxLog) return ERROR(tableLog_tooLarge);
|
||||
assert(NCountLength <= cSrcSize);
|
||||
ip += NCountLength;
|
||||
cSrcSize -= NCountLength;
|
||||
}
|
||||
|
||||
if (FSE_DECOMPRESS_WKSP_SIZE(tableLog, maxSymbolValue) > wkspSize) return ERROR(tableLog_tooLarge);
|
||||
assert(sizeof(*wksp) + FSE_DTABLE_SIZE(tableLog) <= wkspSize);
|
||||
workSpace = (BYTE*)workSpace + sizeof(*wksp) + FSE_DTABLE_SIZE(tableLog);
|
||||
wkspSize -= sizeof(*wksp) + FSE_DTABLE_SIZE(tableLog);
|
||||
|
||||
CHECK_F( FSE_buildDTable_internal(dtable, wksp->ncount, maxSymbolValue, tableLog, workSpace, wkspSize) );
|
||||
|
||||
{
|
||||
const void* ptr = dtable;
|
||||
const FSE_DTableHeader* DTableH = (const FSE_DTableHeader*)ptr;
|
||||
const U32 fastMode = DTableH->fastMode;
|
||||
|
||||
/* select fast mode (static) */
|
||||
if (fastMode) return FSE_decompress_usingDTable_generic(dst, dstCapacity, ip, cSrcSize, dtable, 1);
|
||||
return FSE_decompress_usingDTable_generic(dst, dstCapacity, ip, cSrcSize, dtable, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Avoids the FORCE_INLINE of the _body() function. */
|
||||
static size_t FSE_decompress_wksp_body_default(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, unsigned maxLog, void* workSpace, size_t wkspSize)
|
||||
{
|
||||
return FSE_decompress_wksp_body(dst, dstCapacity, cSrc, cSrcSize, maxLog, workSpace, wkspSize, 0);
|
||||
}
|
||||
|
||||
#if DYNAMIC_BMI2
|
||||
BMI2_TARGET_ATTRIBUTE static size_t FSE_decompress_wksp_body_bmi2(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, unsigned maxLog, void* workSpace, size_t wkspSize)
|
||||
{
|
||||
return FSE_decompress_wksp_body(dst, dstCapacity, cSrc, cSrcSize, maxLog, workSpace, wkspSize, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
size_t FSE_decompress_wksp_bmi2(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, unsigned maxLog, void* workSpace, size_t wkspSize, int bmi2)
|
||||
{
|
||||
#if DYNAMIC_BMI2
|
||||
if (bmi2) {
|
||||
return FSE_decompress_wksp_body_bmi2(dst, dstCapacity, cSrc, cSrcSize, maxLog, workSpace, wkspSize);
|
||||
}
|
||||
#endif
|
||||
(void)bmi2;
|
||||
return FSE_decompress_wksp_body_default(dst, dstCapacity, cSrc, cSrcSize, maxLog, workSpace, wkspSize);
|
||||
}
|
||||
|
||||
#endif /* FSE_COMMONDEFS_ONLY */
|
||||
@ -11,7 +11,6 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
|
||||
struct tm *ptm = &tm_time; //localtime(&file_header->mtime);
|
||||
|
||||
#if ENABLE_FEATURE_TAR_UNAME_GNAME
|
||||
char modestr[12];
|
||||
char uid[sizeof(int)*3 + 2];
|
||||
/*char gid[sizeof(int)*3 + 2];*/
|
||||
char *user;
|
||||
@ -29,8 +28,8 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
|
||||
/*sprintf(gid, "%u", (unsigned)file_header->gid);*/
|
||||
group = utoa(file_header->gid);
|
||||
}
|
||||
printf("%s %s/%s %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
|
||||
bb_mode_string(modestr, file_header->mode),
|
||||
printf("%u %s/%s %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
|
||||
file_header->mode,
|
||||
user,
|
||||
group,
|
||||
file_header->size,
|
||||
@ -46,8 +45,8 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header)
|
||||
|
||||
localtime_r(&file_header->mtime, ptm);
|
||||
|
||||
printf("%s %u/%u %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
|
||||
bb_mode_string(modestr, file_header->mode),
|
||||
printf("%u %u/%u %9"OFF_FMT"u %4u-%02u-%02u %02u:%02u:%02u %s",
|
||||
file_header->mode,
|
||||
(unsigned)file_header->uid,
|
||||
(unsigned)file_header->gid,
|
||||
file_header->size,
|
||||
|
||||
286
src/bled/huf.h
Normal file
286
src/bled/huf.h
Normal file
@ -0,0 +1,286 @@
|
||||
/* ******************************************************************
|
||||
* huff0 huffman codec,
|
||||
* part of Finite State Entropy library
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* You can contact the author at :
|
||||
* - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
|
||||
*
|
||||
* This source code is licensed under both the BSD-style license (found in the
|
||||
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
* in the COPYING file in the root directory of this source tree).
|
||||
* You may select, at your option, one of the above-listed licenses.
|
||||
****************************************************************** */
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef HUF_H_298734234
|
||||
#define HUF_H_298734234
|
||||
|
||||
/* *** Dependencies *** */
|
||||
#include "zstd_deps.h" /* size_t */
|
||||
#include "zstd_mem.h" /* U32 */
|
||||
#define FSE_STATIC_LINKING_ONLY
|
||||
#include "fse.h"
|
||||
|
||||
|
||||
/* *** Tool functions *** */
|
||||
#define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
|
||||
size_t HUF_compressBound(size_t size); /**< maximum compressed size (worst case) */
|
||||
|
||||
/* Error Management */
|
||||
unsigned HUF_isError(size_t code); /**< tells if a return value is an error code */
|
||||
const char* HUF_getErrorName(size_t code); /**< provides error code string (useful for debugging) */
|
||||
|
||||
|
||||
#define HUF_WORKSPACE_SIZE ((8 << 10) + 512 /* sorting scratch space */)
|
||||
#define HUF_WORKSPACE_SIZE_U64 (HUF_WORKSPACE_SIZE / sizeof(U64))
|
||||
|
||||
/* *** Constants *** */
|
||||
#define HUF_TABLELOG_MAX 12 /* max runtime value of tableLog (due to static allocation); can be modified up to HUF_TABLELOG_ABSOLUTEMAX */
|
||||
#define HUF_TABLELOG_DEFAULT 11 /* default tableLog value when none specified */
|
||||
#define HUF_SYMBOLVALUE_MAX 255
|
||||
|
||||
#define HUF_TABLELOG_ABSOLUTEMAX 12 /* absolute limit of HUF_MAX_TABLELOG. Beyond that value, code does not work */
|
||||
#if (HUF_TABLELOG_MAX > HUF_TABLELOG_ABSOLUTEMAX)
|
||||
# error "HUF_TABLELOG_MAX is too large !"
|
||||
#endif
|
||||
|
||||
|
||||
/* ****************************************
|
||||
* Static allocation
|
||||
******************************************/
|
||||
/* HUF buffer bounds */
|
||||
#define HUF_CTABLEBOUND 129
|
||||
#define HUF_BLOCKBOUND(size) (size + (size>>8) + 8) /* only true when incompressible is pre-filtered with fast heuristic */
|
||||
#define HUF_COMPRESSBOUND(size) (HUF_CTABLEBOUND + HUF_BLOCKBOUND(size)) /* Macro version, useful for static allocation */
|
||||
|
||||
/* static allocation of HUF's Compression Table */
|
||||
/* this is a private definition, just exposed for allocation and strict aliasing purpose. never EVER access its members directly */
|
||||
typedef size_t HUF_CElt; /* consider it an incomplete type */
|
||||
#define HUF_CTABLE_SIZE_ST(maxSymbolValue) ((maxSymbolValue)+2) /* Use tables of size_t, for proper alignment */
|
||||
#define HUF_CTABLE_SIZE(maxSymbolValue) (HUF_CTABLE_SIZE_ST(maxSymbolValue) * sizeof(size_t))
|
||||
#define HUF_CREATE_STATIC_CTABLE(name, maxSymbolValue) \
|
||||
HUF_CElt name[HUF_CTABLE_SIZE_ST(maxSymbolValue)] /* no final ; */
|
||||
|
||||
/* static allocation of HUF's DTable */
|
||||
typedef U32 HUF_DTable;
|
||||
#define HUF_DTABLE_SIZE(maxTableLog) (1 + (1<<(maxTableLog)))
|
||||
#define HUF_CREATE_STATIC_DTABLEX1(DTable, maxTableLog) \
|
||||
HUF_DTable DTable[HUF_DTABLE_SIZE((maxTableLog)-1)] = { ((U32)((maxTableLog)-1) * 0x01000001) }
|
||||
#define HUF_CREATE_STATIC_DTABLEX2(DTable, maxTableLog) \
|
||||
HUF_DTable DTable[HUF_DTABLE_SIZE(maxTableLog)] = { ((U32)(maxTableLog) * 0x01000001) }
|
||||
|
||||
|
||||
/* ****************************************
|
||||
* Advanced decompression functions
|
||||
******************************************/
|
||||
|
||||
/**
|
||||
* Huffman flags bitset.
|
||||
* For all flags, 0 is the default value.
|
||||
*/
|
||||
typedef enum {
|
||||
/**
|
||||
* If compiled with DYNAMIC_BMI2: Set flag only if the CPU supports BMI2 at runtime.
|
||||
* Otherwise: Ignored.
|
||||
*/
|
||||
HUF_flags_bmi2 = (1 << 0),
|
||||
/**
|
||||
* If set: Test possible table depths to find the one that produces the smallest header + encoded size.
|
||||
* If unset: Use heuristic to find the table depth.
|
||||
*/
|
||||
HUF_flags_optimalDepth = (1 << 1),
|
||||
/**
|
||||
* If set: If the previous table can encode the input, always reuse the previous table.
|
||||
* If unset: If the previous table can encode the input, reuse the previous table if it results in a smaller output.
|
||||
*/
|
||||
HUF_flags_preferRepeat = (1 << 2),
|
||||
/**
|
||||
* If set: Sample the input and check if the sample is uncompressible, if it is then don't attempt to compress.
|
||||
* If unset: Always histogram the entire input.
|
||||
*/
|
||||
HUF_flags_suspectUncompressible = (1 << 3),
|
||||
/**
|
||||
* If set: Don't use assembly implementations
|
||||
* If unset: Allow using assembly implementations
|
||||
*/
|
||||
HUF_flags_disableAsm = (1 << 4),
|
||||
/**
|
||||
* If set: Don't use the fast decoding loop, always use the fallback decoding loop.
|
||||
* If unset: Use the fast decoding loop when possible.
|
||||
*/
|
||||
HUF_flags_disableFast = (1 << 5)
|
||||
} HUF_flags_e;
|
||||
|
||||
|
||||
/* ****************************************
|
||||
* HUF detailed API
|
||||
* ****************************************/
|
||||
#define HUF_OPTIMAL_DEPTH_THRESHOLD ZSTD_btultra
|
||||
|
||||
/*! HUF_compress() does the following:
|
||||
* 1. count symbol occurrence from source[] into table count[] using FSE_count() (exposed within "fse.h")
|
||||
* 2. (optional) refine tableLog using HUF_optimalTableLog()
|
||||
* 3. build Huffman table from count using HUF_buildCTable()
|
||||
* 4. save Huffman table to memory buffer using HUF_writeCTable()
|
||||
* 5. encode the data stream using HUF_compress4X_usingCTable()
|
||||
*
|
||||
* The following API allows targeting specific sub-functions for advanced tasks.
|
||||
* For example, it's possible to compress several blocks using the same 'CTable',
|
||||
* or to save and regenerate 'CTable' using external methods.
|
||||
*/
|
||||
unsigned HUF_minTableLog(unsigned symbolCardinality);
|
||||
unsigned HUF_cardinality(const unsigned* count, unsigned maxSymbolValue);
|
||||
unsigned HUF_optimalTableLog(unsigned maxTableLog, size_t srcSize, unsigned maxSymbolValue, void* workSpace,
|
||||
size_t wkspSize, HUF_CElt* table, const unsigned* count, int flags); /* table is used as scratch space for building and testing tables, not a return value */
|
||||
size_t HUF_writeCTable_wksp(void* dst, size_t maxDstSize, const HUF_CElt* CTable, unsigned maxSymbolValue, unsigned huffLog, void* workspace, size_t workspaceSize);
|
||||
size_t HUF_compress4X_usingCTable(void* dst, size_t dstSize, const void* src, size_t srcSize, const HUF_CElt* CTable, int flags);
|
||||
size_t HUF_estimateCompressedSize(const HUF_CElt* CTable, const unsigned* count, unsigned maxSymbolValue);
|
||||
int HUF_validateCTable(const HUF_CElt* CTable, const unsigned* count, unsigned maxSymbolValue);
|
||||
|
||||
typedef enum {
|
||||
HUF_repeat_none, /**< Cannot use the previous table */
|
||||
HUF_repeat_check, /**< Can use the previous table but it must be checked. Note : The previous table must have been constructed by HUF_compress{1, 4}X_repeat */
|
||||
HUF_repeat_valid /**< Can use the previous table and it is assumed to be valid */
|
||||
} HUF_repeat;
|
||||
|
||||
/** HUF_compress4X_repeat() :
|
||||
* Same as HUF_compress4X_wksp(), but considers using hufTable if *repeat != HUF_repeat_none.
|
||||
* If it uses hufTable it does not modify hufTable or repeat.
|
||||
* If it doesn't, it sets *repeat = HUF_repeat_none, and it sets hufTable to the table used.
|
||||
* If preferRepeat then the old table will always be used if valid.
|
||||
* If suspectUncompressible then some sampling checks will be run to potentially skip huffman coding */
|
||||
size_t HUF_compress4X_repeat(void* dst, size_t dstSize,
|
||||
const void* src, size_t srcSize,
|
||||
unsigned maxSymbolValue, unsigned tableLog,
|
||||
void* workSpace, size_t wkspSize, /**< `workSpace` must be aligned on 4-bytes boundaries, `wkspSize` must be >= HUF_WORKSPACE_SIZE */
|
||||
HUF_CElt* hufTable, HUF_repeat* repeat, int flags);
|
||||
|
||||
/** HUF_buildCTable_wksp() :
|
||||
* Same as HUF_buildCTable(), but using externally allocated scratch buffer.
|
||||
* `workSpace` must be aligned on 4-bytes boundaries, and its size must be >= HUF_CTABLE_WORKSPACE_SIZE.
|
||||
*/
|
||||
#define HUF_CTABLE_WORKSPACE_SIZE_U32 ((4 * (HUF_SYMBOLVALUE_MAX + 1)) + 192)
|
||||
#define HUF_CTABLE_WORKSPACE_SIZE (HUF_CTABLE_WORKSPACE_SIZE_U32 * sizeof(unsigned))
|
||||
size_t HUF_buildCTable_wksp (HUF_CElt* tree,
|
||||
const unsigned* count, U32 maxSymbolValue, U32 maxNbBits,
|
||||
void* workSpace, size_t wkspSize);
|
||||
|
||||
/*! HUF_readStats() :
|
||||
* Read compact Huffman tree, saved by HUF_writeCTable().
|
||||
* `huffWeight` is destination buffer.
|
||||
* @return : size read from `src` , or an error Code .
|
||||
* Note : Needed by HUF_readCTable() and HUF_readDTableXn() . */
|
||||
size_t HUF_readStats(BYTE* huffWeight, size_t hwSize,
|
||||
U32* rankStats, U32* nbSymbolsPtr, U32* tableLogPtr,
|
||||
const void* src, size_t srcSize);
|
||||
|
||||
/*! HUF_readStats_wksp() :
|
||||
* Same as HUF_readStats() but takes an external workspace which must be
|
||||
* 4-byte aligned and its size must be >= HUF_READ_STATS_WORKSPACE_SIZE.
|
||||
* If the CPU has BMI2 support, pass bmi2=1, otherwise pass bmi2=0.
|
||||
*/
|
||||
#define HUF_READ_STATS_WORKSPACE_SIZE_U32 FSE_DECOMPRESS_WKSP_SIZE_U32(6, HUF_TABLELOG_MAX-1)
|
||||
#define HUF_READ_STATS_WORKSPACE_SIZE (HUF_READ_STATS_WORKSPACE_SIZE_U32 * sizeof(unsigned))
|
||||
size_t HUF_readStats_wksp(BYTE* huffWeight, size_t hwSize,
|
||||
U32* rankStats, U32* nbSymbolsPtr, U32* tableLogPtr,
|
||||
const void* src, size_t srcSize,
|
||||
void* workspace, size_t wkspSize,
|
||||
int flags);
|
||||
|
||||
/** HUF_readCTable() :
|
||||
* Loading a CTable saved with HUF_writeCTable() */
|
||||
size_t HUF_readCTable (HUF_CElt* CTable, unsigned* maxSymbolValuePtr, const void* src, size_t srcSize, unsigned *hasZeroWeights);
|
||||
|
||||
/** HUF_getNbBitsFromCTable() :
|
||||
* Read nbBits from CTable symbolTable, for symbol `symbolValue` presumed <= HUF_SYMBOLVALUE_MAX
|
||||
* Note 1 : If symbolValue > HUF_readCTableHeader(symbolTable).maxSymbolValue, returns 0
|
||||
* Note 2 : is not inlined, as HUF_CElt definition is private
|
||||
*/
|
||||
U32 HUF_getNbBitsFromCTable(const HUF_CElt* symbolTable, U32 symbolValue);
|
||||
|
||||
typedef struct {
|
||||
BYTE tableLog;
|
||||
BYTE maxSymbolValue;
|
||||
BYTE unused[sizeof(size_t) - 2];
|
||||
} HUF_CTableHeader;
|
||||
|
||||
/** HUF_readCTableHeader() :
|
||||
* @returns The header from the CTable specifying the tableLog and the maxSymbolValue.
|
||||
*/
|
||||
HUF_CTableHeader HUF_readCTableHeader(HUF_CElt const* ctable);
|
||||
|
||||
/*
|
||||
* HUF_decompress() does the following:
|
||||
* 1. select the decompression algorithm (X1, X2) based on pre-computed heuristics
|
||||
* 2. build Huffman table from save, using HUF_readDTableX?()
|
||||
* 3. decode 1 or 4 segments in parallel using HUF_decompress?X?_usingDTable()
|
||||
*/
|
||||
|
||||
/** HUF_selectDecoder() :
|
||||
* Tells which decoder is likely to decode faster,
|
||||
* based on a set of pre-computed metrics.
|
||||
* @return : 0==HUF_decompress4X1, 1==HUF_decompress4X2 .
|
||||
* Assumption : 0 < dstSize <= 128 KB */
|
||||
U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize);
|
||||
|
||||
/**
|
||||
* The minimum workspace size for the `workSpace` used in
|
||||
* HUF_readDTableX1_wksp() and HUF_readDTableX2_wksp().
|
||||
*
|
||||
* The space used depends on HUF_TABLELOG_MAX, ranging from ~1500 bytes when
|
||||
* HUF_TABLE_LOG_MAX=12 to ~1850 bytes when HUF_TABLE_LOG_MAX=15.
|
||||
* Buffer overflow errors may potentially occur if code modifications result in
|
||||
* a required workspace size greater than that specified in the following
|
||||
* macro.
|
||||
*/
|
||||
#define HUF_DECOMPRESS_WORKSPACE_SIZE ((2 << 10) + (1 << 9))
|
||||
#define HUF_DECOMPRESS_WORKSPACE_SIZE_U32 (HUF_DECOMPRESS_WORKSPACE_SIZE / sizeof(U32))
|
||||
|
||||
|
||||
/* ====================== */
|
||||
/* single stream variants */
|
||||
/* ====================== */
|
||||
|
||||
size_t HUF_compress1X_usingCTable(void* dst, size_t dstSize, const void* src, size_t srcSize, const HUF_CElt* CTable, int flags);
|
||||
/** HUF_compress1X_repeat() :
|
||||
* Same as HUF_compress1X_wksp(), but considers using hufTable if *repeat != HUF_repeat_none.
|
||||
* If it uses hufTable it does not modify hufTable or repeat.
|
||||
* If it doesn't, it sets *repeat = HUF_repeat_none, and it sets hufTable to the table used.
|
||||
* If preferRepeat then the old table will always be used if valid.
|
||||
* If suspectUncompressible then some sampling checks will be run to potentially skip huffman coding */
|
||||
size_t HUF_compress1X_repeat(void* dst, size_t dstSize,
|
||||
const void* src, size_t srcSize,
|
||||
unsigned maxSymbolValue, unsigned tableLog,
|
||||
void* workSpace, size_t wkspSize, /**< `workSpace` must be aligned on 4-bytes boundaries, `wkspSize` must be >= HUF_WORKSPACE_SIZE */
|
||||
HUF_CElt* hufTable, HUF_repeat* repeat, int flags);
|
||||
|
||||
size_t HUF_decompress1X_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize, int flags);
|
||||
#ifndef HUF_FORCE_DECOMPRESS_X1
|
||||
size_t HUF_decompress1X2_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize, int flags); /**< double-symbols decoder */
|
||||
#endif
|
||||
|
||||
/* BMI2 variants.
|
||||
* If the CPU has BMI2 support, pass bmi2=1, otherwise pass bmi2=0.
|
||||
*/
|
||||
size_t HUF_decompress1X_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable, int flags);
|
||||
#ifndef HUF_FORCE_DECOMPRESS_X2
|
||||
size_t HUF_decompress1X1_DCtx_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize, int flags);
|
||||
#endif
|
||||
size_t HUF_decompress4X_usingDTable(void* dst, size_t maxDstSize, const void* cSrc, size_t cSrcSize, const HUF_DTable* DTable, int flags);
|
||||
size_t HUF_decompress4X_hufOnly_wksp(HUF_DTable* dctx, void* dst, size_t dstSize, const void* cSrc, size_t cSrcSize, void* workSpace, size_t wkspSize, int flags);
|
||||
#ifndef HUF_FORCE_DECOMPRESS_X2
|
||||
size_t HUF_readDTableX1_wksp(HUF_DTable* DTable, const void* src, size_t srcSize, void* workSpace, size_t wkspSize, int flags);
|
||||
#endif
|
||||
#ifndef HUF_FORCE_DECOMPRESS_X1
|
||||
size_t HUF_readDTableX2_wksp(HUF_DTable* DTable, const void* src, size_t srcSize, void* workSpace, size_t wkspSize, int flags);
|
||||
#endif
|
||||
|
||||
#endif /* HUF_H_298734234 */
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
1945
src/bled/huf_decompress.c
Normal file
1945
src/bled/huf_decompress.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -23,7 +23,6 @@
|
||||
#include "platform.h"
|
||||
#include "msapi_utf8.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
@ -40,24 +39,37 @@
|
||||
#include <sys/types.h>
|
||||
#include <io.h>
|
||||
|
||||
#define ONE_TB 1099511627776ULL
|
||||
#define ONE_TB 1099511627776ULL
|
||||
|
||||
#define ENABLE_DESKTOP 1
|
||||
#define ENABLE_DESKTOP 1
|
||||
#if ENABLE_DESKTOP
|
||||
#define IF_DESKTOP(x) x
|
||||
#define IF_DESKTOP(x) x
|
||||
#define IF_NOT_DESKTOP(x)
|
||||
#else
|
||||
#define IF_DESKTOP(x)
|
||||
#define IF_NOT_DESKTOP(x) x
|
||||
#define IF_NOT_DESKTOP(x) x
|
||||
#endif
|
||||
#define IF_NOT_FEATURE_LZMA_FAST(x) x
|
||||
#define ENABLE_FEATURE_UNZIP_CDF 1
|
||||
#define ENABLE_FEATURE_UNZIP_BZIP2 1
|
||||
#define ENABLE_FEATURE_UNZIP_LZMA 1
|
||||
#define ENABLE_FEATURE_UNZIP_XZ 1
|
||||
#define IF_NOT_FEATURE_LZMA_FAST(x) x
|
||||
#define ENABLE_FEATURE_UNZIP_CDF 1
|
||||
#define ENABLE_FEATURE_UNZIP_BZIP2 1
|
||||
#define ENABLE_FEATURE_UNZIP_LZMA 1
|
||||
#define ENABLE_FEATURE_UNZIP_XZ 1
|
||||
#define ENABLE_FEATURE_CLEAN_UP 1
|
||||
#define uoff_t unsigned off_t
|
||||
#define OFF_FMT "ll"
|
||||
|
||||
#define uoff_t unsigned off_t
|
||||
#define OFF_FMT "ll"
|
||||
#define SEAMLESS_COMPRESSION 0
|
||||
#if (SEAMLESS_COMPRESSION)
|
||||
#define ENABLE_FEATURE_SEAMLESS_BZ2 1
|
||||
#define ENABLE_FEATURE_SEAMLESS_GZ 1
|
||||
#define ENABLE_FEATURE_SEAMLESS_LZMA 1
|
||||
#define ENABLE_FEATURE_SEAMLESS_XZ 1
|
||||
#define ENABLE_FEATURE_SEAMLESS_Z 1
|
||||
#define ENABLE_FEATURE_SEAMLESS_ZSTD 1
|
||||
#define IF_FEATURE_SEAMLESS_BZ2(x) x
|
||||
#define IF_FEATURE_SEAMLESS_XZ(x) x
|
||||
#define IF_FEATURE_SEAMLESS_ZSTD(x) x
|
||||
#endif
|
||||
|
||||
#ifndef _MODE_T_
|
||||
#define _MODE_T_
|
||||
@ -150,8 +162,8 @@ extern unsigned long* bled_cancel_request;
|
||||
#define bb_printf(...) do { if (bled_printf != NULL) bled_printf(__VA_ARGS__); \
|
||||
else { printf(__VA_ARGS__); putchar('\n'); } } while(0)
|
||||
#define bb_error_msg(...) bb_printf("\nError: " __VA_ARGS__)
|
||||
#define bb_error_msg_and_die(...) do {bb_error_msg(__VA_ARGS__); xfunc_die();} while(0)
|
||||
#define bb_error_msg_and_err(...) do {bb_error_msg(__VA_ARGS__); goto err;} while(0)
|
||||
#define bb_error_msg_and_die(...) do { bb_error_msg(__VA_ARGS__); xfunc_die(); } while(0)
|
||||
#define bb_error_msg_and_err(...) do { bb_error_msg(__VA_ARGS__); goto err; } while(0)
|
||||
#define bb_perror_msg bb_error_msg
|
||||
#define bb_perror_msg_and_die bb_error_msg_and_die
|
||||
#define bb_simple_error_msg bb_error_msg
|
||||
@ -168,15 +180,14 @@ static inline void *xrealloc(void *ptr, size_t size) {
|
||||
|
||||
#define bb_msg_read_error "read error"
|
||||
#define bb_msg_write_error "write error"
|
||||
#define bb_mode_string(str, mode) "[not implemented]"
|
||||
#define bb_make_directory(path, mode, flags) SHCreateDirectoryExU(NULL, path, NULL)
|
||||
|
||||
static inline int link(const char *oldpath, const char *newpath) {errno = ENOSYS; return -1;}
|
||||
static inline int symlink(const char *oldpath, const char *newpath) {errno = ENOSYS; return -1;}
|
||||
static inline int chown(const char *path, uid_t owner, gid_t group) {errno = ENOSYS; return -1;}
|
||||
static inline int mknod(const char *pathname, mode_t mode, dev_t dev) {errno = ENOSYS; return -1;}
|
||||
static inline int link(const char *oldpath, const char *newpath) { errno = ENOSYS; return -1; }
|
||||
static inline int symlink(const char *oldpath, const char *newpath) { errno = ENOSYS; return -1; }
|
||||
static inline int chown(const char *path, uid_t owner, gid_t group) { errno = ENOSYS; return -1; }
|
||||
static inline int mknod(const char *pathname, mode_t mode, dev_t dev) { errno = ENOSYS; return -1; }
|
||||
static inline int utimes64(const char* filename, const struct timeval64 times64[2]) { errno = ENOSYS; return -1; }
|
||||
static inline int fnmatch(const char *pattern, const char *string, int flags) {return PathMatchSpecA(string, pattern)?0:1;}
|
||||
static inline int fnmatch(const char *pattern, const char *string, int flags) { return PathMatchSpecA(string, pattern) ? 0 : 1; }
|
||||
static inline pid_t wait(int* status) { *status = 4; return -1; }
|
||||
#define wait_any_nohang wait
|
||||
|
||||
@ -284,6 +295,19 @@ static inline struct tm *localtime_r(const time_t *timep, struct tm *result) {
|
||||
#define xzalloc(x) calloc(x, 1)
|
||||
#define malloc_or_warn malloc
|
||||
#define mkdir(x, y) _mkdirU(x)
|
||||
struct fd_pair { int rd; int wr; };
|
||||
void xpipe(int filedes[2]) FAST_FUNC;
|
||||
#define xpiped_pair(pair) xpipe(&((pair).rd))
|
||||
#define xpipe(filedes) _pipe(filedes, 0x1000, _O_BINARY)
|
||||
#define xlseek lseek
|
||||
#define xread safe_read
|
||||
static inline void xmove_fd(int from, int to)
|
||||
{
|
||||
if (from != to) {
|
||||
(void)_dup2(from, to);
|
||||
_close(from);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#define _S_IFBLK 0x3000
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
@ -17,12 +16,9 @@ int FAST_FUNC check_signature16(transformer_state_t *xstate, unsigned magic16)
|
||||
uint16_t magic2;
|
||||
if (full_read(xstate->src_fd, &magic2, 2) != 2 || magic2 != magic16) {
|
||||
bb_error_msg("invalid magic");
|
||||
#if 0 /* possible future extension */
|
||||
if (xstate->check_signature > 1)
|
||||
xfunc_die();
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
xstate->signature_skipped = 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -101,7 +97,7 @@ void check_errors_in_children(int signo)
|
||||
/* transformer(), more than meets the eye */
|
||||
#if BB_MMU
|
||||
void FAST_FUNC fork_transformer(int fd,
|
||||
int check_signature,
|
||||
int signature_skipped,
|
||||
IF_DESKTOP(long long) int FAST_FUNC (*transformer)(transformer_state_t *xstate)
|
||||
)
|
||||
#else
|
||||
@ -115,20 +111,20 @@ void FAST_FUNC fork_transformer(int fd, const char *transform_prog)
|
||||
pid = BB_MMU ? xfork() : xvfork();
|
||||
if (pid == 0) {
|
||||
/* Child */
|
||||
close(fd_pipe.rd); /* we don't want to read from the parent */
|
||||
_close(fd_pipe.rd); /* we don't want to read from the parent */
|
||||
// FIXME: error check?
|
||||
#if BB_MMU
|
||||
{
|
||||
IF_DESKTOP(long long) int r;
|
||||
transformer_state_t xstate;
|
||||
init_transformer_state(&xstate);
|
||||
xstate.check_signature = check_signature;
|
||||
xstate.signature_skipped = signature_skipped;
|
||||
xstate.src_fd = fd;
|
||||
xstate.dst_fd = fd_pipe.wr;
|
||||
r = transformer(&xstate);
|
||||
if (ENABLE_FEATURE_CLEAN_UP) {
|
||||
close(fd_pipe.wr); /* send EOF */
|
||||
close(fd);
|
||||
_close(fd_pipe.wr); /* send EOF */
|
||||
_close(fd);
|
||||
}
|
||||
/* must be _exit! bug was actually seen here */
|
||||
_exit(/*error if:*/ r < 0);
|
||||
@ -150,7 +146,7 @@ void FAST_FUNC fork_transformer(int fd, const char *transform_prog)
|
||||
}
|
||||
|
||||
/* parent process */
|
||||
close(fd_pipe.wr); /* don't want to write to the child */
|
||||
_close(fd_pipe.wr); /* don't want to write to the child */
|
||||
xmove_fd(fd_pipe.rd, fd);
|
||||
}
|
||||
|
||||
@ -159,59 +155,69 @@ void FAST_FUNC fork_transformer(int fd, const char *transform_prog)
|
||||
*/
|
||||
static transformer_state_t *setup_transformer_on_fd(int fd, int fail_if_not_compressed)
|
||||
{
|
||||
union {
|
||||
uint8_t b[4];
|
||||
uint16_t b16[2];
|
||||
uint32_t b32[1];
|
||||
} magic;
|
||||
int offset;
|
||||
transformer_state_t *xstate;
|
||||
|
||||
offset = -2;
|
||||
xstate = xzalloc(sizeof(*xstate));
|
||||
xstate->src_fd = fd;
|
||||
|
||||
/* .gz and .bz2 both have 2-byte signature, and their
|
||||
* unpack_XXX_stream wants this header skipped. */
|
||||
xread(fd, magic.b16, sizeof(magic.b16[0]));
|
||||
xstate->signature_skipped = 2;
|
||||
xread(fd, xstate->magic.b16, 2);
|
||||
if (ENABLE_FEATURE_SEAMLESS_GZ
|
||||
&& magic.b16[0] == GZIP_MAGIC
|
||||
&& xstate->magic.b16[0] == GZIP_MAGIC
|
||||
) {
|
||||
xstate->xformer = unpack_gz_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "gunzip";)
|
||||
goto found_magic;
|
||||
}
|
||||
if (ENABLE_FEATURE_SEAMLESS_Z
|
||||
&& magic.b16[0] == COMPRESS_MAGIC
|
||||
&& xstate->magic.b16[0] == COMPRESS_MAGIC
|
||||
) {
|
||||
xstate->xformer = unpack_Z_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "uncompress";)
|
||||
goto found_magic;
|
||||
}
|
||||
if (ENABLE_FEATURE_SEAMLESS_BZ2
|
||||
&& magic.b16[0] == BZIP2_MAGIC
|
||||
&& xstate->magic.b16[0] == BZIP2_MAGIC
|
||||
) {
|
||||
xstate->xformer = unpack_bz2_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "bunzip2";)
|
||||
goto found_magic;
|
||||
}
|
||||
if (ENABLE_FEATURE_SEAMLESS_XZ
|
||||
&& magic.b16[0] == XZ_MAGIC1
|
||||
&& xstate->magic.b16[0] == XZ_MAGIC1
|
||||
) {
|
||||
offset = -6;
|
||||
xread(fd, magic.b32, sizeof(magic.b32[0]));
|
||||
if (magic.b32[0] == XZ_MAGIC2) {
|
||||
uint32_t v32;
|
||||
xstate->signature_skipped = 6;
|
||||
xread(fd, &xstate->magic.b16[1], 4);
|
||||
move_from_unaligned32(v32, &xstate->magic.b16[1]);
|
||||
if (v32 == XZ_MAGIC2) {
|
||||
xstate->xformer = unpack_xz_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "unxz";)
|
||||
goto found_magic;
|
||||
}
|
||||
}
|
||||
if (ENABLE_FEATURE_SEAMLESS_ZSTD
|
||||
&& xstate->magic.b16[0] == ZSTD_MAGIC1
|
||||
) {
|
||||
uint16_t v16;
|
||||
xstate->signature_skipped = 4;
|
||||
xread(fd, &xstate->magic.b16[1], 2);
|
||||
move_from_unaligned16(v16, &xstate->magic.b16[1]);
|
||||
if (v16 == ZSTD_MAGIC2) {
|
||||
xstate->xformer = unpack_zstd_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "unzstd";)
|
||||
goto found_magic;
|
||||
}
|
||||
}
|
||||
|
||||
/* No known magic seen */
|
||||
if (fail_if_not_compressed)
|
||||
bb_error_msg_and_die("no gzip"
|
||||
IF_FEATURE_SEAMLESS_BZ2("/bzip2")
|
||||
IF_FEATURE_SEAMLESS_XZ("/xz")
|
||||
IF_FEATURE_SEAMLESS_ZSTD("/zstd")
|
||||
" magic");
|
||||
|
||||
/* Some callers expect this function to "consume" fd
|
||||
@ -220,19 +226,25 @@ static transformer_state_t *setup_transformer_on_fd(int fd, int fail_if_not_comp
|
||||
*/
|
||||
// USE_FOR_MMU(xstate->xformer = copy_stream;)
|
||||
// USE_FOR_NOMMU(xstate->xformer_prog = "cat";)
|
||||
/* fall through to seeking bck over bytes we read earlier */
|
||||
|
||||
USE_FOR_NOMMU(found_magic:)
|
||||
found_magic:
|
||||
return xstate;
|
||||
}
|
||||
|
||||
static void fork_transformer_and_free(transformer_state_t *xstate)
|
||||
{
|
||||
# if BB_MMU
|
||||
fork_transformer_with_no_sig(xstate->src_fd, xstate->xformer);
|
||||
# else
|
||||
/* NOMMU version of fork_transformer execs
|
||||
* an external unzipper that wants
|
||||
* file position at the start of the file.
|
||||
*/
|
||||
xlseek(fd, offset, SEEK_CUR);
|
||||
|
||||
USE_FOR_MMU(found_magic:)
|
||||
/* In MMU case, if magic was found, seeking back is not necessary */
|
||||
|
||||
return xstate;
|
||||
xlseek(xstate->src_fd, - xstate->signature_skipped, SEEK_CUR);
|
||||
xstate->signature_skipped = 0;
|
||||
fork_transformer_with_sig(xstate->src_fd, xstate->xformer, xstate->xformer_prog);
|
||||
# endif
|
||||
free(xstate);
|
||||
}
|
||||
|
||||
/* Used by e.g. rpm which gives us a fd without filename,
|
||||
@ -247,21 +259,27 @@ int FAST_FUNC setup_unzip_on_fd(int fd, int fail_if_not_compressed)
|
||||
return 1;
|
||||
}
|
||||
|
||||
# if BB_MMU
|
||||
fork_transformer_with_no_sig(xstate->src_fd, xstate->xformer);
|
||||
# else
|
||||
fork_transformer_with_sig(xstate->src_fd, xstate->xformer, xstate->xformer_prog);
|
||||
# endif
|
||||
free(xstate);
|
||||
fork_transformer_and_free(xstate);
|
||||
return 0;
|
||||
}
|
||||
#if ENABLE_FEATURE_SEAMLESS_LZMA
|
||||
/* ...and custom version for LZMA */
|
||||
void FAST_FUNC setup_lzma_on_fd(int fd)
|
||||
{
|
||||
transformer_state_t *xstate = xzalloc(sizeof(*xstate));
|
||||
xstate->src_fd = fd;
|
||||
xstate->xformer = unpack_lzma_stream;
|
||||
USE_FOR_NOMMU(xstate->xformer_prog = "unlzma";)
|
||||
fork_transformer_and_free(xstate);
|
||||
}
|
||||
#endif
|
||||
|
||||
static transformer_state_t *open_transformer(const char *fname, int fail_if_not_compressed)
|
||||
{
|
||||
transformer_state_t *xstate;
|
||||
int fd;
|
||||
|
||||
fd = open(fname, O_RDONLY);
|
||||
fd = _open(fname, O_RDONLY);
|
||||
if (fd < 0)
|
||||
return NULL;
|
||||
|
||||
@ -292,14 +310,22 @@ int FAST_FUNC open_zipped(const char *fname, int fail_if_not_compressed)
|
||||
return -1;
|
||||
|
||||
fd = xstate->src_fd;
|
||||
if (xstate->xformer) {
|
||||
# if BB_MMU
|
||||
fork_transformer_with_no_sig(xstate->src_fd, xstate->xformer);
|
||||
# else
|
||||
fork_transformer_with_sig(xstate->src_fd, xstate->xformer, xstate->xformer_prog);
|
||||
# endif
|
||||
if (xstate->xformer) {
|
||||
fork_transformer_with_no_sig(fd, xstate->xformer);
|
||||
} else {
|
||||
/* the file is not compressed */
|
||||
xlseek(fd, - xstate->signature_skipped, SEEK_CUR);
|
||||
xstate->signature_skipped = 0;
|
||||
}
|
||||
/* else: the file is not compressed */
|
||||
# else
|
||||
/* NOMMU can't avoid the seek :( */
|
||||
xlseek(fd, - xstate->signature_skipped, SEEK_CUR);
|
||||
xstate->signature_skipped = 0;
|
||||
if (xstate->xformer) {
|
||||
fork_transformer_with_sig(fd, xstate->xformer, xstate->xformer_prog);
|
||||
} /* else: the file is not compressed */
|
||||
# endif
|
||||
|
||||
free(xstate);
|
||||
return fd;
|
||||
@ -326,13 +352,29 @@ void* FAST_FUNC xmalloc_open_zipped_read_close(const char *fname, size_t *maxsz_
|
||||
*maxsz_p = xstate->mem_output_size;
|
||||
}
|
||||
} else {
|
||||
/* File is not compressed */
|
||||
image = xmalloc_read(xstate->src_fd, maxsz_p);
|
||||
/* File is not compressed.
|
||||
* We already read first few bytes, account for that.
|
||||
* Example where it happens:
|
||||
* "modinfo MODULE.ko" (not compressed)
|
||||
* open("MODULE.ko", O_RDONLY|O_LARGEFILE) = 4
|
||||
* read(4, "\177E", 2) = 2
|
||||
* fstat64(4, ...)
|
||||
* mmap(...)
|
||||
* read(4, "LF\2\1\1\0\0\0\0"...
|
||||
* ...and we avoided seeking on the fd! :)
|
||||
*/
|
||||
image = xmalloc_read_with_initial_buf(
|
||||
xstate->src_fd,
|
||||
maxsz_p,
|
||||
xmemdup(&xstate->magic, xstate->signature_skipped),
|
||||
xstate->signature_skipped
|
||||
);
|
||||
xstate->signature_skipped = 0;
|
||||
}
|
||||
|
||||
if (!image)
|
||||
bb_perror_msg("read error from '%s'", fname);
|
||||
close(xstate->src_fd);
|
||||
_close(xstate->src_fd);
|
||||
free(xstate);
|
||||
return image;
|
||||
# else
|
||||
|
||||
@ -261,7 +261,7 @@ typedef uint64_t bb__aliased_uint64_t FIX_ALIASING;
|
||||
/* NB: unaligned parameter should be a pointer, aligned one -
|
||||
* a lvalue. This makes it more likely to not swap them by mistake
|
||||
*/
|
||||
#if defined(i386) || defined(__x86_64__) || defined(__powerpc__)
|
||||
#if defined(i386) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) || defined(__powerpc__)
|
||||
# define BB_UNALIGNED_MEMACCESS_OK 1
|
||||
# define move_from_unaligned_int(v, intp) ((v) = *(bb__aliased_int*)(intp))
|
||||
# define move_from_unaligned_long(v, longp) ((v) = *(bb__aliased_long*)(longp))
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
#include "bb_archive.h"
|
||||
|
||||
|
||||
18
src/bled/xxhash.c
Normal file
18
src/bled/xxhash.c
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* xxHash - Extremely Fast Hash algorithm
|
||||
* Copyright (c) Yann Collet - Meta Platforms, Inc
|
||||
*
|
||||
* This source code is licensed under both the BSD-style license (found in the
|
||||
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
||||
* in the COPYING file in the root directory of this source tree).
|
||||
* You may select, at your option, one of the above-listed licenses.
|
||||
*/
|
||||
|
||||
/*
|
||||
* xxhash.c instantiates functions defined in xxhash.h
|
||||
*/
|
||||
|
||||
#define XXH_STATIC_LINKING_ONLY /* access advanced declarations */
|
||||
#define XXH_IMPLEMENTATION /* access definitions */
|
||||
|
||||
#include "xxhash.h"
|
||||
7021
src/bled/xxhash.h
Normal file
7021
src/bled/xxhash.h
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user