mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Add forgotten patches by previous commit.
Pointy hat to: krion
This commit is contained in:
parent
9979b57348
commit
3e442b9a85
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=487040
3 changed files with 87 additions and 0 deletions
65
mail/tpop3d/files/patch-buffer.c
Normal file
65
mail/tpop3d/files/patch-buffer.c
Normal file
|
@ -0,0 +1,65 @@
|
|||
--- buffer.c.orig 2008-03-31 19:37:15 UTC
|
||||
+++ buffer.c
|
||||
@@ -136,46 +136,36 @@ char *buffer_consume_all(buffer B, char *str, size_t *
|
||||
return str;
|
||||
}
|
||||
|
||||
-/* buffer_consume_to_mark BUFFER MARK MLEN STR SLEN
|
||||
- * Consume data from BUFFER up to and including MARK of length MLEN, returning
|
||||
+/* buffer_consume_to_mark BUFFER MARK STR SLEN
|
||||
+ * Consume data from BUFFER up to and including single character MARK, returning
|
||||
* a pointer to a string allocated with malloc(3) or NULL if the mark was not
|
||||
* found. The number of bytes consumed is recorded in SLEN. If STR is not
|
||||
* NULL, it must point to a buffer of length at least *SLEN allocated with
|
||||
* malloc(3); this buffer will be used as is if the returned string is small
|
||||
* enough, or reallocated with realloc(3) otherwise. The returned string is
|
||||
- * null-terminated.
|
||||
- *
|
||||
- * This uses a Boyer-Moore search, but we can't just reuse memstr because we
|
||||
- * may have to search across the end of the buffer. */
|
||||
-char *buffer_consume_to_mark(buffer B, const char *mark, const size_t mlen, char *str, size_t *slen) {
|
||||
- size_t skip[256], a;
|
||||
+ * null-terminated. */
|
||||
+char *buffer_consume_to_mark(buffer B, const char *mark, char *str, size_t *slen) {
|
||||
+ size_t a;
|
||||
int k;
|
||||
|
||||
assert(B);
|
||||
- assert(mlen > 0 && mlen <= (size_t)INT_MAX);
|
||||
|
||||
- if ((a = buffer_available(B)) < mlen) return NULL;
|
||||
+ if ((a = buffer_available(B)) < 1) return NULL;
|
||||
|
||||
assert(a <= (size_t)INT_MAX);
|
||||
|
||||
- /* Oh dear. Should special-case the mlen == 1 case, since it's the only
|
||||
- * one we use.... */
|
||||
- for (k = 0; k < 256; ++k) skip[k] = mlen;
|
||||
- for (k = 0; k < (int)mlen - 1; ++k) skip[(unsigned char)mark[k]] = mlen - k - 1;
|
||||
-
|
||||
- for (k = (int)mlen - 1; k < (int)a; k += skip[(unsigned char)mark[k]]) {
|
||||
- int i, j;
|
||||
- for (j = (int)mlen - 1, i = k; j >= 0 && B->buf[(B->get + i) % B->len] == mark[j]; j--) i--;
|
||||
- if (j == -1) {
|
||||
- /* Have found the mark at location i + 1. */
|
||||
- i += 1 + mlen; /* account for mark and terminating null */
|
||||
- if (!str || *slen < (size_t)i + 1)
|
||||
- str = xrealloc(str, (size_t)i + 1);
|
||||
- *slen = (size_t)i + 1;
|
||||
- for (j = 0; j < i; ++j)
|
||||
+ for (k = 0; k < (int)a; k++) {
|
||||
+ if (B->buf[(B->get + k) % B->len] == mark[0]) {
|
||||
+ int j, len;
|
||||
+ /* Have found the mark at location k. */
|
||||
+ len = k + 1; /* string length */
|
||||
+ if (!str || *slen < (size_t)len + 1)
|
||||
+ str = xrealloc(str, (size_t)len + 1);
|
||||
+ *slen = (size_t)len + 1;
|
||||
+ for (j = 0; j < len; j++)
|
||||
str[j] = B->buf[(B->get + j) % B->len];
|
||||
str[j] = 0;
|
||||
- B->get = (B->get + i) % B->len;
|
||||
+ B->get = (B->get + len) % B->len;
|
||||
return str;
|
||||
}
|
||||
}
|
11
mail/tpop3d/files/patch-buffer.h
Normal file
11
mail/tpop3d/files/patch-buffer.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- buffer.h.orig 2008-03-31 19:37:15 UTC
|
||||
+++ buffer.h
|
||||
@@ -41,7 +41,7 @@ void buffer_make_contiguous(buffer B);
|
||||
char *buffer_get_consume_ptr(buffer B, size_t *slen);
|
||||
void buffer_consume_bytes(buffer B, const size_t num);
|
||||
char *buffer_consume_all(buffer B, char *str, size_t *slen);
|
||||
-char *buffer_consume_to_mark(buffer B, const char *mark, const size_t mlen, char *str, size_t *slen);
|
||||
+char *buffer_consume_to_mark(buffer B, const char *mark, char *str, size_t *slen);
|
||||
void buffer_expand(buffer B, const size_t num);
|
||||
void buffer_push_data(buffer B, const char *data, const size_t dlen);
|
||||
char *buffer_get_push_ptr(buffer B, size_t *len);
|
11
mail/tpop3d/files/patch-connection.c
Normal file
11
mail/tpop3d/files/patch-connection.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- connection.c.orig 2008-07-12 13:48:22 UTC
|
||||
+++ connection.c
|
||||
@@ -316,7 +316,7 @@ pop3command connection_parsecommand(connection c) {
|
||||
* latter case we must be careful not to interpret command1\ncommand2\r\n
|
||||
* as a single command. So always use \n as the line ending and strip off
|
||||
* any trailing \r. */
|
||||
- if (!(p = buffer_consume_to_mark(c->rdb, "\n", 1, line, &llen)))
|
||||
+ if (!(p = buffer_consume_to_mark(c->rdb, "\n", line, &llen)))
|
||||
return NULL;
|
||||
else
|
||||
line = p;
|
Loading…
Add table
Reference in a new issue