projects
/
cascardo
/
libreceita.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement argument parsing via argp.h.
[cascardo/libreceita.git]
/
rnet_message.c
diff --git
a/rnet_message.c
b/rnet_message.c
index
52edf14
..
83a762b
100644
(file)
--- a/
rnet_message.c
+++ b/
rnet_message.c
@@
-58,6
+58,15
@@
void rnet_message_del(struct rnet_message *message)
free(message);
}
free(message);
}
+int rnet_message_strip(struct rnet_message *message, size_t len)
+{
+ if (len > message->len)
+ return -1;
+ message->len -= len;
+ memmove(message->buffer, message->buffer + len, message->len);
+ return 0;
+}
+
static int add_field(struct rnet_message **message, char *key, int klen,
char *val, int vlen)
{
static int add_field(struct rnet_message **message, char *key, int klen,
char *val, int vlen)
{
@@
-142,11
+151,10
@@
int rnet_message_parse(struct rnet_message *msg, char *skey,
int b;
char *key;
int klen;
int b;
char *key;
int klen;
- char *kcopy;
/* skip first byte */
i++;
while (i < len) {
/* skip first byte */
i++;
while (i < len) {
- j = buffer[i];
+ j =
(unsigned char)
buffer[i];
b = j & 0x80;
if (b)
;
b = j & 0x80;
if (b)
;
@@
-155,10
+163,10
@@
int rnet_message_parse(struct rnet_message *msg, char *skey,
key = buffer + i;
klen = j;
i += j;
key = buffer + i;
klen = j;
i += j;
- j = buffer[i];
+ j =
(unsigned char)
buffer[i];
i++;
if (b)
i++;
if (b)
- j = j << 8 | buffer[i++];
+ j = j << 8 |
(unsigned char)
buffer[i++];
*value = buffer + i;
*vlen = j;
i += j;
*value = buffer + i;
*vlen = j;
i += j;