* sizeof(elem_type)); \
if (tmp == NULL) { \
warn("Couldn't realloc array"); \
- return errno; \
+ return -ENOMEM; \
} \
list->array = tmp; \
} \
read_unlock(&rlock, &wlock, &rcounter);
sem_wait(&wlock);
+ clientsdb_cleanup(&clients_db, client_destroy);
clients_db = *new_db;
sem_post(&wlock);
free(new_db);
warnx("Could not infer a bindable address out of address '%s' and port '%s': %s",
(hostname != NULL) ? hostname : "any", service,
gai_strerror(error));
- return error;
+ return -error;
}
config.port = strdup(service);
if (config.port == NULL) {
warn( "'%s' couldn't be allocated.", OPTNAME_LISTEN_PORT);
- return errno;
+ return -errno;
}
return 0;
line_copy = malloc(strlen(line) + 1);
if (line_copy == NULL) {
- error = errno;
+ error = -errno;
warn("Out of memory allocating CSV line copy");
goto error;
}
/* Look for the last update date */
error = stat(location, &attr);
if (error) {
- warn("Couldn't get last modified date of %s, skip update",
+ warnx("Couldn't get last modified date of %s, skip update",
location);
+ error = -ENOENT;
goto end;
}
lfile_open(const char *file_name, struct line_file **result)
{
struct line_file *lfile;
- int error;
lfile = malloc(sizeof(struct line_file));
if (lfile == NULL)
lfile->file = fopen(file_name, "r");
if (lfile->file == NULL) {
- error = errno;
free(lfile);
- return error;
+ return -errno;
}
lfile->file_name = file_name;
lfile->offset = 0;
size_t alloc_len;
ssize_t len;
ssize_t i;
- int error;
/*
* Note to myself:
len = getline(&string, &alloc_len, lfile->file);
if (len == -1) {
- error = errno;
free(string);
*result = NULL;
if (ferror(lfile->file)) {
- warnx("Error while reading file: %s",
- strerror(error));
- return error;
+ warn("Error while reading file");
+ return -errno;
}
if (feof(lfile->file))
return 0;
- error = -EINVAL;
warnx("Supposedly unreachable code reached. ferror:%d feof:%d",
ferror(lfile->file), feof(lfile->file));
- return error;
+ return -EINVAL;
}
lfile->offset += len;
*/
for (i = 0; i < len; i++) {
if (string[i] == '\0') {
- error = -EINVAL;
warnx("File '%s' has an illegal null character in its body. Please remove it.",
lfile_name(lfile));
free(string);
- return error;
+ return -EINVAL;
}
}
version = received->header.protocol_version;
session_id = get_current_session_id(version);
if (received->header.session_id != session_id)
- return err_pdu_send(fd, version, ERR_PDU_CORRUPT_DATA, NULL,
- NULL);
+ return err_pdu_send(fd, version, ERR_PDU_CORRUPT_DATA,
+ &received->header, NULL);
current_serial = get_last_serial_number();
init_sender_common(&common, fd, version, &session_id,
free_buffer(&buffer);
if (error < 0) {
warnx("Error sending response");
- return error;
+ return -EINVAL;
}
return 0;
vrps = malloc(sizeof(struct vrp));
if (vrps == NULL) {
warn("Couldn't allocate VRPs to send PDUs");
- return -errno;
+ return -ENOMEM;
}
len = get_vrps_delta(common->start_serial, common->end_serial, &vrps);
if (len == 0)
{
ssize_t read_result;
size_t offset;
- int err;
for (offset = 0; offset < buffer_len; offset += read_result) {
read_result = read(fd, &buffer[offset], buffer_len - offset);
if (read_result == -1) {
- err = errno;
warn("Client socket read interrupted");
- return err;
+ return -errno;
}
if (read_result == 0) {
warnx("Stream ended mid-PDU.");