Skip to content

Commit

Permalink
Soft-enforce line length 100
Browse files Browse the repository at this point in the history
  • Loading branch information
attah committed Dec 15, 2024
1 parent 9cbad23 commit 8b707d0
Show file tree
Hide file tree
Showing 21 changed files with 199 additions and 132 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ minimime
bsplit
ippdecode
ippdiscover
fuzz
fuzz-*
3 changes: 2 additions & 1 deletion lib/argget.h
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,8 @@ class SubArgGet
SubArgGet(const SubArgGet&) = delete;
SubArgGet& operator=(const SubArgGet&) = delete;

SubArgGet(std::list<std::pair<std::string, std::pair<std::list<SwitchArgBase*>, std::list<PosArg*>>>> map)
SubArgGet(std::list<std::pair<std::string,
std::pair<std::list<SwitchArgBase*>, std::list<PosArg*>>>> map)
{
for(const auto& [subCommand, args] : map)
{
Expand Down
123 changes: 65 additions & 58 deletions lib/converter.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,70 +29,76 @@ class Converter
}

typedef std::pair<std::string, std::string> ConvertKey;
typedef std::function<Error(std::string inFileName, WriteFun writeFun, const IppPrintJob& job, ProgressFun progressFun)> ConvertFun;
typedef std::function<Error(std::string inFileName, const IppPrintJob& job,
WriteFun writeFun, ProgressFun progressFun)> ConvertFun;

ConvertFun Pdf2Printable = [](std::string inFileName, WriteFun writeFun, const IppPrintJob& job, ProgressFun progressFun)
{
return pdf_to_printable(inFileName, writeFun, job.printParams, progressFun);
};
ConvertFun Pdf2Printable =
[](std::string inFileName, const IppPrintJob& job, WriteFun writeFun, ProgressFun progressFun)
{
return pdf_to_printable(inFileName, job.printParams, writeFun, progressFun);
};

ConvertFun Baselinify = [](std::string inFileName, WriteFun writeFun, const IppPrintJob&, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
Bytestream baselinified;
baselinify(inBts, baselinified);
writeFun(std::move(baselinified));
progressFun(1, 1);
// We'll check on the cURL status in just a bit, so no point in returning errors here.
return Error();
};
ConvertFun Baselinify =
[](std::string inFileName, const IppPrintJob&, WriteFun writeFun, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
Bytestream baselinified;
baselinify(inBts, baselinified);
writeFun(std::move(baselinified));
progressFun(1, 1);
// We'll check on the cURL status in just a bit, so no point in returning errors here.
return Error();
};

ConvertFun JustUpload = [](std::string inFileName, WriteFun writeFun, const IppPrintJob&, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
writeFun(std::move(inBts));
progressFun(1, 1);
return Error();
};
ConvertFun JustUpload =
[](std::string inFileName, const IppPrintJob&, WriteFun writeFun, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
writeFun(std::move(inBts));
progressFun(1, 1);
return Error();
};

ConvertFun FixupText = [](std::string inFileName, WriteFun writeFun, const IppPrintJob&, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
std::string allText = inBts.getString(inBts.size());
ConvertFun FixupText =
[](std::string inFileName, const IppPrintJob&, WriteFun writeFun, ProgressFun progressFun)
{
InBinFile in(inFileName);
if(!in)
{
return Error("Failed to open input");
}
Bytestream inBts(in);
std::string allText = inBts.getString(inBts.size());

List<std::string> lines;
for(const std::string& rnline : split_string(allText, "\r\n"))
{
lines += split_string(rnline, "\n");
}
std::string outString = join_string(lines, "\r\n");
List<std::string> lines;
for(const std::string& rnline : split_string(allText, "\r\n"))
{
lines += split_string(rnline, "\n");
}
std::string outString = join_string(lines, "\r\n");

writeFun(outString);
progressFun(1, 1);
return Error();
};
writeFun(outString);
progressFun(1, 1);
return Error();
};

List<std::pair<ConvertKey, ConvertFun>> Pipelines {{{MiniMime::PDF, MiniMime::PDF}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::Postscript}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::PWG}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::URF}, Pdf2Printable},
{{MiniMime::JPEG, MiniMime::JPEG}, Baselinify},
{{"text/plain", "text/plain"}, FixupText}};
List<std::pair<ConvertKey, ConvertFun>> Pipelines
{{{MiniMime::PDF, MiniMime::PDF}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::Postscript}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::PWG}, Pdf2Printable},
{{MiniMime::PDF, MiniMime::URF}, Pdf2Printable},
{{MiniMime::JPEG, MiniMime::JPEG}, Baselinify},
{{"text/plain", "text/plain"}, FixupText}};

std::optional<ConvertFun> getConvertFun(std::string inputFormat, std::string targetFormat)
{
Expand All @@ -115,7 +121,8 @@ class Converter
return (bool)getConvertFun(inputFormat, targetFormat);
}

std::optional<std::string> getTargetFormat(std::string inputFormat, List<std::string> supportedFormats)
std::optional<std::string> getTargetFormat(std::string inputFormat,
List<std::string> supportedFormats)
{
for(const auto& [convertKey, convertFun] : Pipelines)
{
Expand Down
3 changes: 2 additions & 1 deletion lib/curlrequester.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
CurlRequester::CurlRequester(const std::string& addr, bool ignoreSslErrors)
: _curl(curl_easy_init())
{
bool debugEnabled = LogController::instance().isEnabled(LogController::Debug);
curl_easy_setopt(_curl, CURLOPT_URL, addr.c_str());
curl_easy_setopt(_curl, CURLOPT_VERBOSE, LogController::instance().isEnabled(LogController::Debug));
curl_easy_setopt(_curl, CURLOPT_VERBOSE, debugEnabled);
curl_easy_setopt(_curl, CURLOPT_CONNECTTIMEOUT_MS, 2000);
curl_easy_setopt(_curl, CURLOPT_FAILONERROR, 1);

Expand Down
6 changes: 6 additions & 0 deletions lib/ippattr.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,12 @@ struct IppAttrs: public std::map<std::string, IppAttr>
return find(key) != end();
}

template <typename T>
bool hasWithValue(const std::string& key, const T& value) const
{
return has(key) && at(key).get<T>() == value;
}

template <typename T>
T get(std::string name, T defaultValue=T()) const
{
Expand Down
28 changes: 17 additions & 11 deletions lib/ippdiscovery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ std::string ip4str(uint32_t ip)
+ std::to_string(ip & 0xff);
}

std::string make_addr(const std::string& proto, uint16_t defaultPort, uint16_t port, const std::string& ip, const std::string& rp)
std::string make_addr(const std::string& proto, uint16_t defaultPort, uint16_t port,
const std::string& ip, const std::string& rp)
{
std::string maybePort = port != defaultPort ? ":"+std::to_string(port) : "";
std::string addr = proto+"://"+ip+maybePort+"/"+rp;
Expand Down Expand Up @@ -169,16 +170,16 @@ void IppDiscovery::update()
std::string target;
std::string rp;

for(const std::string& it : _ippsPtrs)
for(const std::string& ptr : _ippsPtrs)
{
if(!_targets.contains(it) || !_ports.contains(it) || !(_TXTs.contains(it) && _TXTs[it].contains("rp")))
if(!_targets.contains(ptr) || !_ports.contains(ptr) || !hasTxtEntry(ptr, "rp"))
{
continue;
}

uint16_t port = _ports.at(it);
target = _targets.at(it);
rp = _TXTs.at(it).at("rp");
uint16_t port = _ports.at(ptr);
target = _targets.at(ptr);
rp = _TXTs.at(ptr).at("rp");

if(_As.contains(target))
{
Expand All @@ -195,16 +196,16 @@ void IppDiscovery::update()
}
}

for(const std::string& it : _ippPtrs)
for(const std::string& ptr : _ippPtrs)
{
if(!_targets.contains(it) || !_ports.contains(it) || !(_TXTs.contains(it) && _TXTs[it].contains("rp")))
if(!_targets.contains(ptr) || !_ports.contains(ptr) || !hasTxtEntry(ptr, "rp"))
{
continue;
}

uint16_t port = _ports.at(it);
target = _targets.at(it);
rp = _TXTs.at(it).at("rp");
uint16_t port = _ports.at(ptr);
target = _targets.at(ptr);
rp = _TXTs.at(ptr).at("rp");

if(_As.contains(target))
{
Expand Down Expand Up @@ -396,3 +397,8 @@ void IppDiscovery::discover()

}
}

bool IppDiscovery::hasTxtEntry(const std::string& ptr, const std::string& key)
{
return (_TXTs.contains(ptr) && _TXTs[ptr].contains(key));
}
2 changes: 2 additions & 0 deletions lib/ippdiscovery.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ class IppDiscovery
void update();
void updateAndQueryPtrs(List<std::string>& ptrs, const List<std::string>& newPtrs);

bool hasTxtEntry(const std::string& ptr, const std::string& key);

UdpSocket _socket = UdpSocket("224.0.0.251", 5353);

uint16_t _transactionId = 0;
Expand Down
12 changes: 8 additions & 4 deletions lib/ippmsg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ IppMsg::IppMsg(Bytestream& msg)
}
}

IppMsg::IppMsg(uint16_t opOrStatus, const IppAttrs& opAttrs, const IppAttrs& jobAttrs, const IppAttrs& printerAttrs)
IppMsg::IppMsg(uint16_t opOrStatus, const IppAttrs& opAttrs,
const IppAttrs& jobAttrs, const IppAttrs& printerAttrs)
{
_opOrStatus = opOrStatus;
_opAttrs = opAttrs;
Expand Down Expand Up @@ -164,7 +165,8 @@ IppValue IppMsg::decodeValue(IppTag tag, Bytestream& data) const
if(!(data >>= (uint16_t)0))
{
data >> (uint16_t)11 >> tmpDateTime.year >> tmpDateTime.month >> tmpDateTime.day
>> tmpDateTime.hour >> tmpDateTime.minutes >> tmpDateTime.seconds >> tmpDateTime.deciSeconds
>> tmpDateTime.hour >> tmpDateTime.minutes
>> tmpDateTime.seconds >> tmpDateTime.deciSeconds
>> tmpDateTime.plusMinus >> tmpDateTime.utcHOffset >> tmpDateTime.utcMOffset;
}
return IppValue(tmpDateTime);
Expand Down Expand Up @@ -335,7 +337,8 @@ void IppMsg::encodeAttributes(Bytestream& msg, const IppAttrs& attrs) const
}
}

void IppMsg::encodeAttribute(Bytestream& msg, std::string name, const IppAttr& attr, bool subCollection) const
void IppMsg::encodeAttribute(Bytestream& msg, std::string name, const IppAttr& attr,
bool subCollection) const
{
IppTag tag = attr.tag();
if(subCollection)
Expand Down Expand Up @@ -388,7 +391,8 @@ void IppMsg::encodeValue(Bytestream& msg, IppTag tag, const IppValue& val) const
{
IppDateTime tmpDateTime = val.get<IppDateTime>();
msg << (uint16_t)11 << tmpDateTime.year << tmpDateTime.month << tmpDateTime.day
<< tmpDateTime.hour << tmpDateTime.minutes << tmpDateTime.seconds << tmpDateTime.deciSeconds
<< tmpDateTime.hour << tmpDateTime.minutes
<< tmpDateTime.seconds << tmpDateTime.deciSeconds
<< tmpDateTime.plusMinus << tmpDateTime.utcHOffset << tmpDateTime.utcMOffset;
break;
}
Expand Down
6 changes: 4 additions & 2 deletions lib/ippmsg.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ class IppMsg

IppMsg() = default;
IppMsg(Bytestream& msg);
IppMsg(uint16_t opOrStatus, const IppAttrs& opAttrs, const IppAttrs& jobAttrs=IppAttrs(), const IppAttrs& printerAttrs=IppAttrs());
IppMsg(uint16_t opOrStatus, const IppAttrs& opAttrs,
const IppAttrs& jobAttrs=IppAttrs(), const IppAttrs& printerAttrs=IppAttrs());
IppMsg(const IppMsg& other) = default;
~IppMsg() = default;

Expand All @@ -64,7 +65,8 @@ class IppMsg
IppValue collectAttributes(List<IppAttr>& attrs) const;
std::string consumeAttributes(IppAttrs& attrs, Bytestream& data) const;
void encodeAttributes(Bytestream& msg, const IppAttrs& attrs) const;
void encodeAttribute(Bytestream& msg, std::string name, const IppAttr& attr, bool subCollection=false) const;
void encodeAttribute(Bytestream& msg, std::string name, const IppAttr& attr,
bool subCollection=false) const;
void encodeValue(Bytestream& msg, IppTag tag, const IppValue& val) const;

uint16_t _opOrStatus = 0;
Expand Down
Loading

0 comments on commit 8b707d0

Please sign in to comment.