Example #1
0
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);
}
Example #2
0
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;
}