From 8ee3459cdb3152b9ef551c97041c725ae816977d Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Thu, 22 Nov 2018 16:05:51 -0500 Subject: Simplify edi file reading --- bin/edi/file.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'bin/edi/file.c') diff --git a/bin/edi/file.c b/bin/edi/file.c index bfab9293..834730b1 100644 --- a/bin/edi/file.c +++ b/bin/edi/file.c @@ -25,14 +25,15 @@ #include "edi.h" enum { - BufCap = 8192, + BufferCap = 8192, + TableCap = 2, LogCap = 8, }; struct File fileAlloc(char *path) { struct File file = { .path = path, - .buf = bufferAlloc(BufCap), + .buf = bufferAlloc(BufferCap), .log = logAlloc(LogCap), }; if (!path) logPush(&file.log, TableEmpty); @@ -45,7 +46,7 @@ void fileFree(struct File *file) { free(file->path); } -static const mbstate_t MBStateInit; +static const mbstate_t StateInit; // TODO: Error handling. void fileRead(struct File *file) { @@ -59,22 +60,19 @@ void fileRead(struct File *file) { return; } - struct Table table = tableAlloc(1); - - char buf[BufCap]; - mbstate_t mbState = MBStateInit; + struct Table table = tableAlloc(TableCap); + char buf[BufferCap]; + mbstate_t state = StateInit; while (!feof(stream)) { size_t mbsLen = fread(buf, 1, sizeof(buf), stream); if (ferror(stream)) err(EX_IOERR, "%s", file->path); const char *mbs = buf; - mbstate_t mbLenState = mbState; - size_t wcsLen = mbsnrtowcs(NULL, &mbs, mbsLen, 0, &mbLenState); + wchar_t *wcs = bufferDest(&file->buf, mbsLen); + size_t wcsLen = mbsnrtowcs(wcs, &mbs, mbsLen, mbsLen, &state); if (wcsLen == (size_t)-1) err(EX_DATAERR, "%s", file->path); - wchar_t *wcs = bufferDest(&file->buf, wcsLen); - assert(wcsLen == mbsnrtowcs(wcs, &mbs, mbsLen, wcsLen, &mbState)); - + bufferTruncate(&file->buf, wcsLen); tablePush(&table, file->buf.slice); } logPush(&file->log, table); -- cgit 1.4.1 ss='txt' type='search' size='10' name='q' value=''/>
path: root/home/.local/bin/mdate (unfollow)
Commit message (Collapse)Author
2021-09-25Disable HashKnownHostsJune McEnroe
All this really does is make fixing problems more difficult.
2021-09-25Add scout to ssh configJune McEnroe
2021-09-25Sandbox up on both FreeBSD and OpenBSDJune McEnroe
This is a bit messy. pledge(2) calls based on [1]. [1]: https://kristaps.bsd.lv/kcgi/tutorial6.html
2021-09-25Set SO_REUSEADDR in quickJune McEnroe
2021-09-25Revert "Add cat alias using less"June McEnroe
This reverts commit 8e3eea73f069cdbbc16da14e48a44d610dd07a07. Yeah this really doesn't work on OpenBSD. I kind of got into the habit of explicitly running less anyway.
2021-09-24Pledge downgradeJune McEnroe
2021-09-24Set original socket CLOEXECJune McEnroe
2021-09-24Consume request headers using MSG_PEEKJune McEnroe
Use MSG_PEEK to determine where the request headers end and consume only up to there, leaving the CGI process to read any request body directly from the socket.
2021-09-24Set only HTTP_HOSTJune McEnroe
And only because kcgi expects it. This is what I wrote originally, because every HTTP_ variable should be unset between each request, but this doesn't track them.
2021-09-23Scroll by single lines in xtermJune McEnroe
2021-09-23Hide htop "function bar"June McEnroe
Useless thing...
2021-09-23Allow FocusEvents in xtermJune McEnroe
Oops! This whole time I thought OpenBSD xterm for some reason didn't support focus events. It turns out allowMouseOps: false disables them by default. Replace the disallowedMouseOps list with everything but.
2021-09-23Use NI_NUMERICSERVJune McEnroe
2021-09-23Make up build away from FreeBSDJune McEnroe
2021-09-23Add quickJune McEnroe
2021-09-23Add The HobbitJune McEnroe
Surprisingly good for something written by a man like a hundred years ago!
2021-09-22Remove PSF fontsJune McEnroe
They were fun to make but I never actually used them.
2021-09-22Remove Linux-specific utilitiesJune McEnroe
I haven't used these in ages.
2021-09-22Call sandbox in CGI modeJune McEnroe
Otherwise upload won't actually work.
2021-09-22Support HTTP PUT in upJune McEnroe
For use by Palaver[1]. Unfortunately, at least in the current App Store version of Palaver, this doesn't work correctly with basic auth. [1]: https://palaverapp.com/guides/commands/set.html#ui-image_service
2021-09-22Remove default faviconJune McEnroe
I hate these things and also this one sucks.
2021-09-21Use Z_FILTERED strategyJune McEnroe
2021-09-21Recalculate various lengths only as neededJune McEnroe
This actually speeds things up quite a bit, saving roughly a second on a big PNG screenshot. Almost all the remaining time is spent in deflate.
2021-09-21Rewrite pngo, add explicit optionsJune McEnroe
Interesting to see how my code habits have changed.
2021-09-16Fix /* **/ comment matchingJune McEnroe
2021-09-15Remove typer, add downgrade to READMEJune McEnroe
2021-09-15Set bot mode on downgradeJune McEnroe
2021-09-15Enter capsicum in downgradeJune McEnroe
2021-09-15Factor out common parts of downgrade messagesJune McEnroe
Also bump the message cap to 1024 because that is ostensibly useful for replying to older messages.
2021-09-14Add downgrade IRC botJune McEnroe
2021-09-14Sort by title if authors matchJune McEnroe
There are probably better things to sort by but title definitely always exists.
2021-09-13Swap-remove tags as they're foundJune McEnroe
This makes it even faster. From ~1s on a sqlite3.c amalgamation to ~0.85s.
2021-09-12Replace htagml regex with strncmpJune McEnroe
Since ctags only ever produces regular expressions of the form /^re$/ or /^re/ with no other special characters, instead unescape the pattern and simply use strncmp. Running on a sqlite3.c amalgamation, the regex version takes ~37s while the strncmp version takes ~1s, producing identical output. Big win!
2021-09-11Also defer printing comment for lone close-parensJune McEnroe
2021-09-10Publish "git-comment"June McEnroe
2021-09-10Add git comment --pretty optionJune McEnroe
2021-09-08Defer printing comment if line is blank or closing braceJune McEnroe
This fixes badly indented comments.
2021-09-08Up default min-repeat to 30 linesJune McEnroe
2021-09-08Handle dirty lines in git-commentJune McEnroe
2021-09-08Document and install git-commentJune McEnroe
2021-09-08Add repeat and all options to git-commentJune McEnroe
2021-09-08Add group threshold to git-commentJune McEnroe