mirror of
				https://github.com/Thesola10/umd-livepatch.git
				synced 2025-08-09 22:02:02 +00:00 
			
		
		
		
	fix rdiff job callbacks
This commit is contained in:
		
							parent
							
								
									7789919a72
								
							
						
					
					
						commit
						0c4165bf2e
					
				@ -28,6 +28,9 @@ typedef union {
 | 
			
		||||
 | 
			
		||||
rs_signature_t *workSignatures;
 | 
			
		||||
 | 
			
		||||
char buf_next_in[BUFFERS_SIZE];
 | 
			
		||||
char buf_next_out[BUFFERS_SIZE];
 | 
			
		||||
 | 
			
		||||
size_t workSigs_counter = 0;
 | 
			
		||||
size_t workSigs_size = 0;
 | 
			
		||||
 | 
			
		||||
@ -35,16 +38,15 @@ rs_result
 | 
			
		||||
_impl_umdiff_sigJobSink(rs_job_t *job, rs_buffers_t *buf, void *dest)
 | 
			
		||||
{
 | 
			
		||||
    int res;
 | 
			
		||||
    rs_signature_t *sigs = dest;
 | 
			
		||||
 | 
			
		||||
    if (buf->avail_out + workSigs_counter > workSigs_size) {
 | 
			
		||||
        sigs = realloc(sigs, workSigs_size + _impl_umdiff_alignBufferSize$(buf->avail_out));
 | 
			
		||||
    if (BUFFERS_SIZE + workSigs_counter > workSigs_size) {
 | 
			
		||||
        workSignatures = realloc(workSignatures, workSigs_size + _impl_umdiff_alignBufferSize$(buf->avail_out));
 | 
			
		||||
        workSigs_size += _impl_umdiff_alignBufferSize$(buf->avail_out);
 | 
			
		||||
    }
 | 
			
		||||
    memcpy((char *) sigs + workSigs_counter, buf->next_out, buf->avail_out);
 | 
			
		||||
    workSigs_counter += buf->avail_out;
 | 
			
		||||
    workSigs_counter += BUFFERS_SIZE;
 | 
			
		||||
 | 
			
		||||
    buf->avail_out = 0;
 | 
			
		||||
    buf->avail_out = BUFFERS_SIZE;
 | 
			
		||||
    buf->next_out = dest + workSigs_counter;
 | 
			
		||||
 | 
			
		||||
    return RS_DONE;
 | 
			
		||||
}
 | 
			
		||||
@ -55,6 +57,7 @@ _impl_umdiff_sigJobSource(rs_job_t *job, rs_buffers_t *buf, void *fd_)
 | 
			
		||||
    int res;
 | 
			
		||||
    _impl_umdiff_OpaqueFd fd = { .opaque = fd_ };
 | 
			
		||||
 | 
			
		||||
    buf->next_in = buf_next_in;
 | 
			
		||||
    buf->avail_in = read(fd.fd, buf->next_in, BUFFERS_SIZE);
 | 
			
		||||
    if (!buf->avail_in)
 | 
			
		||||
        buf->eof_in = 1;
 | 
			
		||||
@ -69,6 +72,9 @@ _impl_umdiff_deltaJobSink(rs_job_t *job, rs_buffers_t *buf, void *file_)
 | 
			
		||||
 | 
			
		||||
    //TODO: parse each command output
 | 
			
		||||
 | 
			
		||||
    buf->next_out = buf_next_out;
 | 
			
		||||
    buf->avail_out = BUFFERS_SIZE;
 | 
			
		||||
 | 
			
		||||
    return RS_DONE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -78,6 +84,7 @@ _impl_umdiff_deltaJobSource(rs_job_t *job, rs_buffers_t *buf, void *fd_)
 | 
			
		||||
    int res;
 | 
			
		||||
    _impl_umdiff_OpaqueFd fd = { .opaque = fd_ };
 | 
			
		||||
 | 
			
		||||
    buf->next_in = buf_next_in;
 | 
			
		||||
    buf->avail_in = read(fd.fd, buf->next_in, BUFFERS_SIZE);
 | 
			
		||||
    if (!buf->avail_in)
 | 
			
		||||
        buf->eof_in = 1;
 | 
			
		||||
@ -97,8 +104,8 @@ umdiff_File_fromCompare(umdiff_File *file, int source_fd, int target_fd)
 | 
			
		||||
        .eof_in = 0,
 | 
			
		||||
        .avail_in = 0,
 | 
			
		||||
        .avail_out = 0,
 | 
			
		||||
        .next_in = malloc(BUFFERS_SIZE),
 | 
			
		||||
        .next_out = malloc(BUFFERS_SIZE)
 | 
			
		||||
        .next_in = buf_next_in,
 | 
			
		||||
        .next_out = buf_next_out
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    workSignatures = malloc(BUFFERS_SIZE);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user