// Shrink the buffer once we are wasting more than this
#define MAX_WASTAGE (CHUNK_SIZE * 8)
-void pakfire_buffer_set_max_length(struct pakfire_buffer* self, size_t max_length) {
+void pakfire_buffer_set_max_length(pakfire_buffer* self, size_t max_length) {
self->max_length = max_length;
}
-size_t pakfire_buffer_length(struct pakfire_buffer* self) {
+size_t pakfire_buffer_length(pakfire_buffer* self) {
return self->length;
}
-int pakfire_buffer_is_empty(struct pakfire_buffer* self) {
+int pakfire_buffer_is_empty(pakfire_buffer* self) {
return (self->length == 0);
}
-int pakfire_buffer_is_full(struct pakfire_buffer* self) {
+int pakfire_buffer_is_full(pakfire_buffer* self) {
// Cannot be full if we don't have no maximum size
if (!self->max_length)
return 0;
return (self->length >= self->max_length);
}
-void pakfire_buffer_clear(struct pakfire_buffer* buffer) {
+void pakfire_buffer_clear(pakfire_buffer* buffer) {
buffer->length = 0;
}
-void pakfire_buffer_free(struct pakfire_buffer* buffer) {
+void pakfire_buffer_free(pakfire_buffer* buffer) {
if (buffer->data)
free(buffer->data);
}
// Rounds up length to the nearest chunk size
-static size_t pakfire_buffer_align(struct pakfire_buffer* self, size_t length) {
+static size_t pakfire_buffer_align(pakfire_buffer* self, size_t length) {
// Always have at least one chunk
if (!length)
return CHUNK_SIZE;
return length;
}
-static int pakfire_buffer_resize(struct pakfire_buffer* self, size_t length) {
+static int pakfire_buffer_resize(pakfire_buffer* self, size_t length) {
// Check maximum length and refuse to grow
if (self->max_length && (length > self->max_length))
return -ENOBUFS;
}
// Grows the buffer
-static int pakfire_buffer_grow(struct pakfire_buffer* self, size_t length) {
+static int pakfire_buffer_grow(pakfire_buffer* self, size_t length) {
// Check if we actually need to grow
if (self->__allocated >= self->length + length)
return 0;
}
// Shrinks the buffer to its minimum size
-static int pakfire_buffer_shrink(struct pakfire_buffer* self) {
+static int pakfire_buffer_shrink(pakfire_buffer* self) {
// Shrink whenever we hit the wastage level
if (self->__allocated - self->length < MAX_WASTAGE)
return 0;
return pakfire_buffer_resize(self, self->length);
}
-int pakfire_buffer_push(struct pakfire_buffer* self, const char* data, size_t length) {
+int pakfire_buffer_push(pakfire_buffer* self, const char* data, size_t length) {
int r;
// Check inputs
return length;
}
-int pakfire_buffer_pop(struct pakfire_buffer* self, size_t length) {
+int pakfire_buffer_pop(pakfire_buffer* self, size_t length) {
// Check if we actually have enough data
if (self->length < length)
return -EINVAL;
return pakfire_buffer_shrink(self);
}
-int pakfire_buffer_read(struct pakfire_buffer* self, int fd) {
+int pakfire_buffer_read(pakfire_buffer* self, int fd) {
ssize_t total_bytes_read = 0;
ssize_t bytes_read = 0;
int r;
return total_bytes_read;
}
-int pakfire_buffer_write(struct pakfire_buffer* self, int fd) {
+int pakfire_buffer_write(pakfire_buffer* self, int fd) {
ssize_t bytes_written = 0;
int r;
return bytes_written;
}
-int pakfire_buffer_fill(struct pakfire_buffer* self,
+int pakfire_buffer_fill(pakfire_buffer* self,
pakfire_ctx* ctx, pakfire_buffer_input_callback callback, void* data) {
ssize_t bytes_written = 0;
int r;
return bytes_written;
}
-size_t pakfire_buffer_find_line(struct pakfire_buffer* self) {
+size_t pakfire_buffer_find_line(pakfire_buffer* self) {
char* p = NULL;
// Nothing to do if there is no data
typedef ssize_t (*pakfire_buffer_input_callback)
(pakfire_ctx* ctx, void* data, char* buffer, size_t length);
-struct pakfire_buffer {
+typedef struct pakfire_buffer {
char* data;
// Store how large the allocated buffer is
// Defines the maximum length this buffer can grow to
size_t max_length;
-};
+} pakfire_buffer;
-void pakfire_buffer_set_max_length(struct pakfire_buffer* buffer, size_t max_length);
+void pakfire_buffer_set_max_length(pakfire_buffer* buffer, size_t max_length);
-size_t pakfire_buffer_length(struct pakfire_buffer* self);
-int pakfire_buffer_is_empty(struct pakfire_buffer* self);
-int pakfire_buffer_is_full(struct pakfire_buffer* self);
+size_t pakfire_buffer_length(pakfire_buffer* self);
+int pakfire_buffer_is_empty(pakfire_buffer* self);
+int pakfire_buffer_is_full(pakfire_buffer* self);
-void pakfire_buffer_clear(struct pakfire_buffer* buffer);
-void pakfire_buffer_free(struct pakfire_buffer* buffer);
+void pakfire_buffer_clear(pakfire_buffer* buffer);
+void pakfire_buffer_free(pakfire_buffer* buffer);
-int pakfire_buffer_push(struct pakfire_buffer* self, const char* data, size_t length);
-int pakfire_buffer_pop(struct pakfire_buffer* self, size_t length);
+int pakfire_buffer_push(pakfire_buffer* self, const char* data, size_t length);
+int pakfire_buffer_pop(pakfire_buffer* self, size_t length);
-int pakfire_buffer_read(struct pakfire_buffer* self, int fd);
-int pakfire_buffer_write(struct pakfire_buffer* self, int fd);
+int pakfire_buffer_read(pakfire_buffer* self, int fd);
+int pakfire_buffer_write(pakfire_buffer* self, int fd);
-int pakfire_buffer_fill(struct pakfire_buffer* self,
+int pakfire_buffer_fill(pakfire_buffer* self,
pakfire_ctx* ctx, pakfire_buffer_input_callback callback, void* data);
-size_t pakfire_buffer_find_line(struct pakfire_buffer* self);
+size_t pakfire_buffer_find_line(pakfire_buffer* self);
#endif /* PAKFIRE_BUFFER_H */
}
static int pakfire_repo_verify_metadata(
- struct pakfire_repo* self, const struct pakfire_buffer* repomd) {
- struct pakfire_buffer signature = {};
+ struct pakfire_repo* self, const pakfire_buffer* repomd) {
+ pakfire_buffer signature = {};
struct pakfire_xfer* xfer = NULL;
FILE* f = NULL;
int r;
static int pakfire_repo_download_metadata(struct pakfire_repo* repo, const char* path, int force) {
struct pakfire_repomd repomd = {};
- struct pakfire_buffer buffer = {};
+ pakfire_buffer buffer = {};
struct pakfire_xfer* xfer = NULL;
struct json_object* json = NULL;
char* error = NULL;