Files
FormFeedRemove/FormFeedRemove-Alameda.cpp
2025-10-09 10:44:07 -05:00

55 lines
1.3 KiB
C++

#include <iostream>
#include <fstream>
#include <vector>
int main(int argc, char* argv[]) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " <inputfile> <outputfile>\n";
return 1;
}
std::ifstream infile(argv[1], std::ios::binary);
if (!infile) {
std::cerr << "Error opening input file.\n";
return 1;
}
std::vector<char> buffer((std::istreambuf_iterator<char>(infile)),
std::istreambuf_iterator<char>());
infile.close();
// Replace ASCII 9b with '';
for (auto& c : buffer) {
if ((unsigned char)c == 155) {
c = (char)0;
}
}
// Remove form feed (ASCII 12) from the last 16 bytes only
size_t size = buffer.size();
size_t start = (size >= 16) ? size - 16 : 0;
for (size_t i = start; i < size; ) {
if ((unsigned char)buffer[i] == 12) {
buffer.erase(buffer.begin() + i);
size--; // update size since vector shrinks
}
else {
i++;
}
}
std::ofstream outfile(argv[2], std::ios::binary);
if (!outfile) {
std::cerr << "Error opening output file.\n";
return 1;
}
outfile.write(buffer.data(), buffer.size());
outfile.close();
//std::cout << "Processing complete. Output written to " << argv[2] << "\n";
return 0;
}