void test_write_file() { long size; char *content; io_write_file(TEST_PATH, TEST_CONTENT); content = io_read_file(TEST_PATH, &size); assert(strncmp(TEST_CONTENT, content, size) == 0); free(content); remove(TEST_PATH); }
static error_t main_argp_parser(int key, char *arg, struct argp_state *state) { CAST(srp_gen_options, self, state->input); switch(key) { default: return ARGP_ERR_UNKNOWN; case ARGP_KEY_INIT: state->child_inputs[0] = &self->style; state->child_inputs[1] = NULL; break; case ARGP_KEY_END: if (!self->name) argp_error(state, "No user name given. Use the -l option, or set LOGNAME in the environment."); { struct lsh_fd *fd; if (self->file) { fd = io_write_file(self->backend, self->file->data, O_CREAT | O_EXCL | O_WRONLY, 0600, BLOCK_SIZE, NULL, self->e); if (!fd) argp_failure(state, EXIT_FAILURE, errno, "Could not open '%s'.", self->file->data); } else { fd = io_write(make_lsh_fd(self->backend, STDOUT_FILENO, "stdout", self->e), BLOCK_SIZE, NULL); } self->dest = &fd->write_buffer->super; } while (!self->passwd) { struct lsh_string *pw; struct lsh_string *again; pw = INTERACT_READ_PASSWORD(self->tty, 500, ssh_format("Enter new SRP password: "******"Aborted."); again = INTERACT_READ_PASSWORD(self->tty, 500, ssh_format("Again: "), 1); if (!again) argp_failure(state, EXIT_FAILURE, 0, "Aborted."); if (lsh_string_eq(pw, again)) self->passwd = pw; else lsh_string_free(pw); lsh_string_free(again); } if (self->style < 0) self->style = self->file ? SEXP_CANONICAL : SEXP_TRANSPORT; break; case 'o': self->file = make_string(arg); break; case 'p': self->passwd = ssh_format("%lz", arg); break; } return 0; }