Added c++ version to code base.
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
CXX ?= g++
|
||||
PKG_CONFIG ?= pkg-config
|
||||
PREFIX ?= /usr/local
|
||||
|
||||
TARGET := binaryconverter
|
||||
SRC := src/binaryconverter.cpp
|
||||
BUILD_DIR := build
|
||||
BIN := $(BUILD_DIR)/$(TARGET)
|
||||
|
||||
CXXFLAGS ?= -O3 -DNDEBUG -march=native
|
||||
CPPFLAGS += -std=c++17 -Wall -Wextra -Wpedantic -D_FILE_OFFSET_BITS=64
|
||||
LIBCRYPTO_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcrypto 2>/dev/null)
|
||||
LIBCRYPTO_LIBS := $(shell $(PKG_CONFIG) --libs libcrypto 2>/dev/null)
|
||||
LDLIBS += $(if $(LIBCRYPTO_LIBS),$(LIBCRYPTO_LIBS),-lcrypto)
|
||||
|
||||
.PHONY: all clean install
|
||||
|
||||
all: $(BIN)
|
||||
|
||||
$(BIN): $(SRC)
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LIBCRYPTO_CFLAGS) -o $@ $< $(LDFLAGS) $(LDLIBS)
|
||||
|
||||
install: $(BIN)
|
||||
install -Dm755 $(BIN) "$(DESTDIR)$(PREFIX)/bin/$(TARGET)"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
@@ -0,0 +1,65 @@
|
||||
# BinaryConverter Native fuer Linux
|
||||
|
||||
Diese Variante ist eine native C++17-Implementierung fuer Linux, getestet fuer Arch Linux. Sie ist formatkompatibel zur vorhandenen C#/.NET-Framework-Version: Encode-Dateien koennen zwischen Windows und Linux gegenseitig verarbeitet werden.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
Arch Linux:
|
||||
|
||||
```bash
|
||||
sudo pacman -S --needed base-devel openssl pkgconf
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
cd native
|
||||
make
|
||||
```
|
||||
|
||||
Die Binary liegt danach hier:
|
||||
|
||||
```text
|
||||
native/build/binaryconverter
|
||||
```
|
||||
|
||||
Optional generischere Binary ohne CPU-spezifische Optimierung:
|
||||
|
||||
```bash
|
||||
make clean
|
||||
make CXXFLAGS="-O3 -DNDEBUG"
|
||||
```
|
||||
|
||||
## Nutzung
|
||||
|
||||
Encode:
|
||||
|
||||
```bash
|
||||
./build/binaryconverter -Encode input.bin -Output transfer.txt
|
||||
```
|
||||
|
||||
Decode:
|
||||
|
||||
```bash
|
||||
./build/binaryconverter -Decode transfer.txt output.bin
|
||||
```
|
||||
|
||||
Mit Logfile:
|
||||
|
||||
```bash
|
||||
./build/binaryconverter -Encode input.bin -Output transfer.txt -Log binaryconverter.log
|
||||
```
|
||||
|
||||
Vorhandene Ausgabedatei ueberschreiben:
|
||||
|
||||
```bash
|
||||
./build/binaryconverter -Decode transfer.txt output.bin -Force
|
||||
```
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Streaming-Verarbeitung ohne komplette Dateien in den RAM zu laden
|
||||
- Base64-Zeilen mit 76 Zeichen
|
||||
- temporaere Ausgabedatei im Zielverzeichnis und atomarer Rename nach Erfolg
|
||||
- Decode prueft `SourceLength` und `SHA256`, wenn die Metadaten vorhanden sind
|
||||
- Exitcodes wie die C#-Version: `0` Erfolg, `1` Laufzeit-/Datenfehler, `2` Argumentfehler
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user