Re: [RFC PATCH v2 01/16] pkt-line: Add strbuf based functions
- From
Johannes Sixt <j.sixt@viscovery.net>
- Date
- Oct 13, 2009, 07:29 UTC
- Message-ID
- <4AD42C52.80205@viscovery.net>
- In-Reply-To
- <1255400715-10508-2-git-send-email-spearce@spearce.org>
Shawn O. Pearce schrieb:
Show 24 quoted lines
> -int packet_read_line(int fd, char *buffer, unsigned size)
> +static int packet_length(unsigned *ret_len, const char *linelen)
> {
> int n;
> - unsigned len;
> - char linelen[4];
> -
> - safe_read(fd, linelen, 4);
> + unsigned len = 0;
>
> - len = 0;
> for (n = 0; n < 4; n++) {
> unsigned char c = linelen[n];
> len <<= 4;
> @@ -96,8 +116,20 @@ int packet_read_line(int fd, char *buffer, unsigned size)
> len += c - 'A' + 10;
> continue;
> }
> - die("protocol error: bad line length character");
> + return -1;
> }
> + *ret_len = len;
> + return 0;
> +}len can be signed: Valid lengths fit into a signed int. Then you can 'return len;' on success and 'return -1;' on failure and don't need return the result by reference. packet_read_line() ultimately converts it to int anyway:
Show 15 quoted lines
> +int packet_read_line(int fd, char *buffer, unsigned size)
> +{
> + unsigned len;
> + char linelen[4];
> +
> + safe_read(fd, linelen, 4);
> + if (packet_length(&len, linelen))
> + die("protocol error: bad line length character");
> if (!len)
> return 0;
> len -= 4;
> @@ -107,3 +139,28 @@ int packet_read_line(int fd, char *buffer, unsigned size)
> buffer[len] = 0;
> return len;
> }-- Hannes