commit - 656b4b6480752f0774e82c2169f413f4c24995d8
commit + e62289e77996c3cbbb03bffea57790bf55b63adc
blob - b39a329ce4e1949c0ab312e60c4e8186e31212fa
blob + 48a1aa827cfed24d77aab48a2f07a126eb4b9543
--- gemini.c
+++ gemini.c
{
struct req *req = d;
const char *hash;
- char *e;
if (ev == EV_TIMEOUT) {
close_with_err(req, "Timeout loading page");
req->off += r;
/* TODO: really watch for \r\n not \n alone */
- if (telescope_strnchr(req->buf, '\n', req->off) != NULL)
+ if (memmem(req->buf, req->off, "\r\n", 2) != NULL)
parse_reply(req);
else if (req->off == sizeof(req->buf))
close_with_err(req, "invalid response");
goto err;
advance_buf(req, 3);
- if ((e = telescope_strnchr(req->buf, '\r', req->off)) == NULL)
+ if ((e = memmem(req->buf, req->off, "\r\n", 2)) == NULL)
goto err;
*e = '\0';
blob - b75c3a3be55471aae44fd6d9ef2375970503d9bb
blob + 206b8100fadc8e4e4d5fde4aa02644932a4ff20c
--- gemtext.c
+++ gemtext.c
}
while (len > 0) {
- if ((e = telescope_strnchr((char*)b, '\n', len)) == NULL)
+ if ((e = memmem((char*)b, len, "\n", 1)) == NULL)
break;
l = e - b;
t = detect_line_type(b, l, p->flags);
blob - 3d5ab2a21f1e15e285b036c264f739ae47504d60
blob + 9f9fe0fe0f8a8c13a1d7736404fbe76ca4241e82
--- telescope.h
+++ telescope.h
/* util.c */
int mark_nonblock(int);
-char *telescope_strnchr(char*, char, size_t);
int has_prefix(const char*, const char*);
void dispatch_imsg(struct imsgbuf*, imsg_handlerfn**, size_t);
blob - 7d1a8c4e2fe2b9cafda95959913abca95ec7f6d4
blob + a8c14d44402dad9e8fffccfc6d017e4339f42623
--- textplain.c
+++ textplain.c
}
while (len > 0) {
- if ((e = telescope_strnchr((char*)b, '\n', len)) == NULL)
+ if ((e = memmem((char*)b, len, "\n", 1)) == NULL)
break;
l = e - b;
blob - 02c5eb25c86c8e390673c2ac8b62264ca1f8edd8
blob + c47a83b8c5a88d648f19103f2f6f69753bff09d4
--- util.c
+++ util.c
return 1;
}
-char *
-telescope_strnchr(char *b, char d, size_t len)
-{
- size_t i;
-
- for (i = 0; i < len; ++i) {
- if (b[i] == d)
- return &b[i];
- }
-
- return NULL;
-}
-
int
has_prefix(const char *str, const char *prfx)
{