コード例 #1
0
ファイル: ndma_ctst_tape.c プロジェクト: B-Rich/amanda
int
ndmca_test_tape_get_state (struct ndm_session *sess, ndmp9_error expect_err)
{
	struct ndmconn *	conn = sess->plumb.tape;
	int			rc;

	/* close previous test if there is one */
	ndmca_test_close (sess);

	rc = ndmca_tape_get_state (sess);

	rc = ndmca_test_check_expect (conn, rc, expect_err);

	return rc;
}
コード例 #2
0
ファイル: ndma_ctst_tape.c プロジェクト: B-Rich/amanda
int
ndmca_tt_check_fileno_recno (struct ndm_session *sess,
  char *what, u_long file_num, u_long blockno, char *note)
{
	struct ndm_control_agent *ca = &sess->control_acb;
	struct ndmp9_tape_get_state_reply *ts = 0;
	char			buf[100];
	int			rc;
	char *			oper;

	oper ="get_state";
	rc = ndmca_tape_get_state (sess);
	if (rc) goto fail;

	ts = &ca->tape_state;

	oper = "check file_num";
	if (ts->file_num.value != file_num)
		goto fail;

	oper = "check blockno";
	if ((ts->blockno.value != blockno) && (ts->blockno.value != NDMP9_INVALID_U_LONG))
		goto fail;

	return 0;

  fail:
	sprintf (buf, "Failed %s while testing %s", oper, what);
	ndmca_test_log_note (sess, 1, buf);
	if (ts) {
		sprintf (buf, "    expect file_num=%ld got file_num=%ld",
			(long)file_num, (long)ts->file_num.value);
		ndmca_test_log_note (sess, 1, buf);

		sprintf (buf, "    expect blockno=%ld got blockno=%ld",
			(long)blockno, (long)ts->blockno.value);
		ndmca_test_log_note (sess, 1, buf);
	}

	sprintf (buf, "    note: %s", note);
	ndmca_test_fail (sess, buf);
	return -1;
}
コード例 #3
0
ファイル: ndma_ctrl_media.c プロジェクト: tuxmux/bareos
uint64_t
ndmca_media_capture_tape_offset (struct ndm_session *sess)
{
	struct ndm_control_agent *ca = sess->control_acb;
	struct ndm_job_param *	job = &ca->job;
	int			rc;
	uint64_t		off;

	rc = ndmca_tape_get_state(sess);
	if (rc) return NDMP_LENGTH_INFINITY;	/* invalid? */

	if (!ca->tape_state.blockno.valid)
		return NDMP_LENGTH_INFINITY;	/* invalid? */

	off = ca->tape_state.blockno.value;
	off *= job->record_size;

	return off;
}