/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

/* Shared code for tests.
 */

#include "sysincludes.h"

#include "tlcl.h"
#include "tlcl_tests.h"

const char* resilient_startup = NULL;

uint32_t TlclStartupIfNeeded(void) {
	static char* null_getenv = "some string";  /* just a unique address */
	uint32_t result = TlclStartup();
	if (resilient_startup == NULL) {
		resilient_startup = getenv("TLCL_RESILIENT_STARTUP");
		if (resilient_startup == NULL) {
			resilient_startup = null_getenv;
		}
	}
	if (resilient_startup == null_getenv) {
		return result;
	}
	return result == TPM_E_INVALID_POSTINIT ? TPM_SUCCESS : result;
}
