48 #include <sys/types.h> 60 #define RS_MAX_INT_BYTES 8 78 unsigned char buf[RS_MAX_INT_BYTES];
81 if (len <= 0 || len > RS_MAX_INT_BYTES) {
82 rs_error(
"Illegal integer length %d", len);
87 for (i = len - 1; i >= 0; i--) {
108 if (len <= 0 || len > RS_MAX_INT_BYTES) {
109 rs_error(
"Illegal integer length %d", len);
118 for (i = 0; i < len; i++) {
119 *v = *v << 8 | buf[i];
131 *v = *((
unsigned char *)inb);
141 result = rs_suck_netint(job, &d, 4);
146 int rs_int_len(rs_long_t val)
148 if (!(val & ~(rs_long_t)0xff))
150 else if (!(val & ~(rs_long_t)0xffff))
152 else if (!(val & ~(rs_long_t)0xffffffff))
154 else if (!(val & ~(rs_long_t)0xffffffffffffffff))
157 rs_fatal(
"can't encode integer " FMT_LONG
" yet", val);
rs_result rs_squirt_netint(rs_job_t *job, rs_long_t d, int len)
Write a variable-length integer to a stream.
Public header for librsync.
rs_result
Return codes from nonblocking rsync operations.
rs_result rs_scoop_read(rs_job_t *job, size_t len, void **ptr)
Read LEN bytes if possible, and remove them from the input scoop.
rs_result rs_squirt_byte(rs_job_t *job, unsigned char d)
Write a single byte to a stream output.
void rs_tube_write(rs_job_t *job, const void *buf, size_t len)
Push some data into the tube for storage.
of this structure are private.