perror("open file");
}
else {
- lstat(filename, &st);
- archive_entry_copy_stat(entry, &st);
- archive_entry_set_pathname(entry, filename);
- if (S_ISLNK(st.st_mode)) {
- buf = NULL;
- buf = malloc(PATH_MAX + 1);
- if ((len = readlink(filename, buf, PATH_MAX)) < 0)
- perror("error in readlink");
- else
- buf[len] = '\0';
- archive_entry_set_symlink(entry, buf);
- g_free(buf);
- archive_entry_set_size(entry, 0);
- archive_write_header(arch, entry);
- }
- else {
- if (archive_write_header(arch, entry) != ARCHIVE_OK)
- g_warning("%s", archive_error_string(arch));
- buf = NULL;
- buf = malloc(READ_BLOCK_SIZE);
- len = read(fd, buf, READ_BLOCK_SIZE);
- while (len > 0) {
- if (archive_write_data(arch, buf, len) == -1)
+ if (lstat(filename, &st) == -1) {
+ perror("lstat file");
+ } else {
+ archive_entry_copy_stat(entry, &st);
+ archive_entry_set_pathname(entry, filename);
+ if (S_ISLNK(st.st_mode)) {
+ if ((buf = malloc(PATH_MAX + 1)) != NULL) {
+ if ((len = readlink(filename, buf, PATH_MAX)) < 0)
+ perror("error in readlink");
+ else
+ buf[len] = '\0';
+ archive_entry_set_symlink(entry, buf);
+ g_free(buf);
+ archive_entry_set_size(entry, 0);
+ archive_write_header(arch, entry);
+ }
+ }
+ else {
+ if (archive_write_header(arch, entry) != ARCHIVE_OK)
g_warning("%s", archive_error_string(arch));
- memset(buf, 0, READ_BLOCK_SIZE);
- len = read(fd, buf, READ_BLOCK_SIZE);
+ if ((buf = malloc(READ_BLOCK_SIZE)) != NULL) {
+ len = read(fd, buf, READ_BLOCK_SIZE);
+ while (len > 0) {
+ if (archive_write_data(arch, buf, len) == -1)
+ g_warning("%s", archive_error_string(arch));
+ memset(buf, 0, READ_BLOCK_SIZE);
+ len = read(fd, buf, READ_BLOCK_SIZE);
+ }
+ g_free(buf);
+ }
}
- g_free(buf);
}
close(fd);
archive_entry_free(entry);
if (sieve_session->tls_init_done == FALSE &&
sieve_session->config->tls_type != SIEVE_TLS_NO) {
if (sieve_session->capability.starttls) {
- log_print(LOG_PROTOCOL, "Sieve> STARTTLS\n");
- session_send_msg(session, "STARTTLS");
- sieve_session->state = SIEVE_STARTTLS;
+ if (session_send_msg(session, "STARTTLS") < 0)
+ sieve_session->state = SIEVE_ERROR;
+ else
+ sieve_session->state = SIEVE_STARTTLS;
} else if (sieve_session->config->tls_type == SIEVE_TLS_YES) {
log_warning(LOG_PROTOCOL, "Sieve: does not support STARTTLS\n");
sieve_session->state = SIEVE_ERROR;
session->state = next_state;
log_send(session, cmd);
if (session_send_msg(SESSION(session), cmd->msg) < 0) {
- /* error */
+ log_warning(LOG_PROTOCOL,
+ _("sending error on Sieve session: %s\n"), cmd->msg);
}
}
}