summaryrefslogtreecommitdiff
path: root/util.c
AgeCommit message (Collapse)Author
2020-03-10sfeed_plain: optimize utf8-decoding and column position calculationHiltjo Posthuma
Optimize for the common-case: assuming ASCII. The input is assumed to be valid UTF-8 input (output of sfeed). This saves 2 function calls for determining the width of a single ASCII character, which of course is 1. Ranges: < 32 are control-characters and are skipped. < 127 is typical ASCII and is 1 column wide. >= 127 is the normal path (control-character and multi-byte UTF-8). Tested on OpenBSD and Linux with various compilers (clang, gcc, pcc and tcc). On OpenBSD and Linux glibc much improvement. On Linux musl (almost) no change. In a common-case upto 40% performance improvement. In the worst-case negligible performance degration (<1%).
2020-01-24cleanup some includesHiltjo Posthuma
2019-04-25util: small code-style fixHiltjo Posthuma
2019-04-21util: keep brackets when parsing IPv6 addressesHiltjo Posthuma
2019-04-15util: remove unneeded err.h headerHiltjo Posthuma
2019-04-06util: remove unnecesary cast and initializationHiltjo Posthuma
2019-03-08util: pedantic snprintf improvementHiltjo Posthuma
POSIX says about snprintf: "If an output error was encountered, these functions shall return a negative value". So check for < 0 instead of -1. Afaik all implementations return -1 though.
2019-02-27util: parseuri: fix typo in cast (ssize_t)Hiltjo Posthuma
2018-09-07util.c: remove remaining uint8_t type, we assume a sane CHAR_BIT == 8Hiltjo Posthuma
2018-09-07fix many undefined behaviour in usage of ctype functionsHiltjo Posthuma
- cast all ctype(3) function argument to (unsigned char) to avoid UB POSIX says: "The c argument is an int, the value of which the application shall ensure is a character representable as an unsigned char or equal to the value of the macro EOF. If the argument has any other value, the behavior is undefined." Many libc cast implicitly the value, but NetBSD does not, which is probably the correct thing to interpret it. - no need to cast for putchar + rename some fputc(..., stdout) to putchar POSIX says: "The fputc() function shall write the byte specified by c (converted to an unsigned char) to the output stream pointed to by stream [...]" Major thanks to Leonardo Taccari <iamleot@gmail.com> for reporting and testing it on NetBSD!
2018-06-24util: printutf8pad: proper counting of multiwidth charactersHiltjo Posthuma
for example the string "\xef\xbc\xb5".
2018-02-18util: improve a castHiltjo Posthuma
2018-02-16util.c: parseuri(): fix incorrect NUL termination for IPv6 addressesHiltjo Posthuma
2017-12-09sfeed_mbox: move murmur to this file, cleanupHiltjo Posthuma
2017-06-29improve printutf8pad for sfeed_plainHiltjo Posthuma
- use a UTF-8 ellipses (1 column width) for "...". - do proper truncation at the specified length.
2017-04-27compatiblity with browsers: use numeric entity for aposHiltjo Posthuma
this entity is XHTML, it is not supported by some (older) browsers.
2016-08-06add USE_PLEDGE, remove pledge dummy functionHiltjo Posthuma
2016-04-10absuri, encodeuri: make encodeuri static, change argument orderHiltjo Posthuma
2016-04-10util: standard pattern to check for valid number strtoulHiltjo Posthuma
2016-04-10remove basename, just use last part of the path...Hiltjo Posthuma
... as a bonus it also saves an allocation.
2016-04-10add comment for strtotimeHiltjo Posthuma
2016-04-10strtotime: improveHiltjo Posthuma
use long long: atleast 32-bit, but now time_t (real) to 32-bit or 64-bit is supported. Long long is C99 though, but that is fine. check errno, it can have ERANGE.
2016-03-10remove cast of unused variablesHiltjo Posthuma
2016-02-28util: simplify encodehex, use inlineHiltjo Posthuma
2016-02-27various improvementsHiltjo Posthuma
- pledge tools and add define to enable it on platforms that support it, currently only OpenBSD 5.9+ - separate getline and parseline functionality. - use murmur3 hash instead of jenkins1: faster and less collisions. - make some error messages a bit more clear, for example with path truncation. - some small cleanups, move printutf8pad to util.
2015-08-22util: absuri: simplify + fix port in url with prefix "//"Hiltjo Posthuma
use the port specified in the link for urls starting with "//" (use protocol).
2015-08-22util: absuri handle port separatelyHiltjo Posthuma
2015-08-22util: support ipv6 address, parse port separatelyHiltjo Posthuma
2015-08-16code-style, wrap some lines, etcHiltjo Posthuma
2015-08-10util: parseuri: nul-terminate, bug introduced by ↵Hiltjo Posthuma
7f11ef506465896705f15c39bd0416d96ca651a8
2015-08-08util: just zero strings by null-terminating first byteHiltjo Posthuma
2015-08-07util: strtotime: stricter time parsingHiltjo Posthuma
as input: an empty string or non-digit characters are digits are considered an error now. Still, for the format tools output the formatted time string as time_t 0 on a parse error.
2015-08-02util: simplify parseline() and check t for strtotime().Hiltjo Posthuma
2015-08-02refactor print, decodefield into xmlencodeHiltjo Posthuma
... put specific formatting-logic per program (printcontent()).
2015-07-31update some commentsHiltjo Posthuma
2015-07-31update and improve documentation (WIP)Hiltjo Posthuma
2015-07-31Various improvementsHiltjo Posthuma
- Only escape characters in "content" field, these can contain newlines. - Trim newlines and tabs, etc from the title, id and author fields. - Make decodefield, xmlencode functions easier to "chain" without allocatting new buffers. - Move printutf8pad from util (only used by sfeed_plain) to sfeed_plain. - Update README, still need to update the man-page and improve the documentation in general. - Code cleanup.
2015-07-29improve includes (dont include headers in .h), fix build on LinuxHiltjo Posthuma
2015-07-28improve code-style and consistencyHiltjo Posthuma
2015-07-28util, absuri: check truncation of more casesHiltjo Posthuma
2015-07-28util: rewrite uri parserHiltjo Posthuma
- don't print directly but use an internal buffer (also better for testing). - encode uri when printing (security). - add some comments.
2015-06-21improvementsHiltjo Posthuma
2015-06-21util: improve printxmlencoded, cleanupHiltjo Posthuma
2015-06-21util: fix parseline crashHiltjo Posthuma
2015-06-21improve printlink, escape charactersHiltjo Posthuma
2015-06-21add xbasename for filename to feednameHiltjo Posthuma
2015-05-24sfeed_frames and util cleanupHiltjo Posthuma
- remove xerr and xerrx, assume the OS closes and flushes file descriptors on OS process exit. - move esnprintf, printcontent to util.
2015-05-16util: parseline can return error, unsigned int -> intHiltjo Posthuma
2015-01-03time fixesHiltjo Posthuma
2015-01-02trim stringHiltjo Posthuma