From a4b1a66a4436c97efbf0dd5932e403d97f0a13d3 Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 24 10月 2020 19:55:33 +0800
Subject: [PATCH] fix windows issue

---
 include/licensecc/datatypes.h |  126 +++++++++++++++++++++++++++--------------
 1 files changed, 83 insertions(+), 43 deletions(-)

diff --git a/include/licensecc/datatypes.h b/include/licensecc/datatypes.h
index 7a95afb..4f3717b 100644
--- a/include/licensecc/datatypes.h
+++ b/include/licensecc/datatypes.h
@@ -1,5 +1,8 @@
 #ifndef DATATYPES_H_
 #define DATATYPES_H_
+/** \addtogroup apistruct
+ * @{
+ */
 
 #ifdef __cplusplus
 extern "C" {
@@ -22,10 +25,7 @@
 #define DllExport __declspec(dllexport)
 #endif
 
-// define api structure sizes
-#define PC_IDENTIFIER_SIZE 19
-#define PROPRIETARY_DATA_SIZE 16
-#define AUDIT_EVENT_NUM 5
+#include <licensecc_properties.h>
 
 typedef enum {
 	LICENSE_OK = 0,  // OK
@@ -35,32 +35,48 @@
 	FILE_FORMAT_NOT_RECOGNIZED = 4,  // license file has invalid format (not .ini file)
 	LICENSE_MALFORMED = 5,  // some mandatory field are missing, or data can't be fully read.
 	PRODUCT_NOT_LICENSED = 6,  // this product was not licensed
-	PRODUCT_EXPIRED = 7,
+	PRODUCT_EXPIRED = 7,    //!< PRODUCT_EXPIRED
 	LICENSE_CORRUPTED = 8,  // License signature didn't match with current license
 	IDENTIFIERS_MISMATCH = 9,  // Calculated identifier and the one provided in license didn't match
 
 	LICENSE_SPECIFIED = 100,  // license location was specified
 	LICENSE_FOUND = 101,  // License file has been found or license data has been located
 	PRODUCT_FOUND = 102,  // License has been loaded and the declared product has been found
-	SIGNATURE_VERIFIED = 103
-} EVENT_TYPE;
+	SIGNATURE_VERIFIED = 103//!< SIGNATURE_VERIFIED
+} LCC_EVENT_TYPE;
 
 typedef enum {
-	LOCAL,
-	REMOTE  // remote licenses are not supported now.
-} LICENSE_TYPE;
+	LCC_LOCAL,
+	LCC_REMOTE  // remote licenses are not supported now.
+} LCC_LICENSE_TYPE;
 
-typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } SEVERITY;
+typedef enum { SVRT_INFO, SVRT_WARN, SVRT_ERROR } LCC_SEVERITY;
 
 typedef struct {
-	SEVERITY severity;
-	EVENT_TYPE event_type;
+	LCC_SEVERITY severity;
+	LCC_EVENT_TYPE event_type;
 	/**
 	 * License file name or location where the license is stored.
 	 */
 	char license_reference[MAX_PATH];
-	char param2[256];
+	char param2[LCC_API_AUDIT_EVENT_PARAM2 + 1];
 } AuditEvent;
+
+typedef enum {
+	/**
+	 * A list of absolute path separated by ';' containing the eventual location
+	 * of the license files. Can be NULL.
+	 */
+	LICENSE_PATH,
+	/**
+	 * The license is provided as plain data
+	 */
+	LICENSE_PLAIN_DATA,
+	/**
+	 * The license is encoded
+	 */
+	LICENSE_ENCODED
+} LCC_LICENSE_DATA_TYPE;
 
 /**
  * This structure contains informations on the raw license data. Software authors
@@ -70,64 +86,88 @@
  * license file location on its own.
  */
 typedef struct {
-	/**
-	 * A list of absolute path separated by ';' containing the eventual location
-	 * of the license files. Can be NULL.
-	 */
-	const char *licenseFileLocation;
-	/**
-	 * The application can provide the full license content through this string.
-	 * It can be both in encoded form (base64) or in plain. It's optional.
-	 */
-	const char *licenseData;
+	LCC_LICENSE_DATA_TYPE license_data_type;
+	char licenseData[LCC_API_MAX_LICENSE_DATA_LENGTH];
 } LicenseLocation;
+
 /**
  * Informations on the software requiring the license
  */
 typedef struct {
-	char version[16];  // software version in format xxxx.xxxx.xxxx
-	char project_name[16];  // name of the project (must correspond to the name in the license)
-	uint32_t magic;  // reserved
+	char version[LCC_API_VERSION_LENGTH + 1];  // software version in format xxxx[.xxxx.xxxx] //TODO
+	/**
+	 * Name of the feature you want to verify. If empty the default feature will be verified.
+	 * Every project has a default feature that is equal to the project name.
+	 * Every feature has a section in the license file:
+	 * <pre>
+	 * [feature_xx]
+	 * sig=AAAA
+	 * [another_feature]
+	 * expiry-date=20201111
+	 * </pre>
+	 */
+	char feature_name[LCC_API_FEATURE_NAME_SIZE +
+					  1];  // name of the feature you' (must correspond to the name in the license)
+	/**
+	 * this number passed in by the application must correspond to the magic number used when compiling the library.
+	 * See cmake parameter -DLCC_PROJECT_MAGIC_NUM and licensecc_properties.h macro VERIFY_MAGIC
+	 */
+	unsigned int magic;
 } CallerInformations;
+
 typedef struct {
 	/**
 	 * Detailed reason of success/failure. Reasons for a failure can be
 	 * multiple (for instance, license expired and signature not verified).
 	 * Only the last AUDIT_EVENT_NUM are reported.
 	 */
-	AuditEvent status[AUDIT_EVENT_NUM];
+	AuditEvent status[LCC_API_AUDIT_EVENT_NUM];
 	/**
 	 * Eventual expiration date of the software,
 	 * can be '\0' if the software don't expire
 	 * */
-	char expiry_date[11];
+	char expiry_date[LCC_API_EXPIRY_DATE_SIZE + 1];
 	unsigned int days_left;
 	bool has_expiry;
 	bool linked_to_pc;
-	LICENSE_TYPE license_type;  // Local or Remote
+	LCC_LICENSE_TYPE license_type;  // Local or Remote
 	/* A string of character inserted into the license understood
 	 * by the calling application.
 	 * '\0' if the application didn't specify one */
-	char proprietary_data[PROPRIETARY_DATA_SIZE + 1];
+	char proprietary_data[LCC_API_PROPRIETARY_DATA_SIZE + 1];
 	int license_version;  // license file version
 } LicenseInfo;
 
-/**
- * Enum to select a specific pc identification_strategy. DEFAULT Should be used
- * in most cases.
- */
+typedef enum { BARE_TO_METAL, VMWARE, VIRTUALBOX, V_XEN, KVM, HV, PARALLELS, V_OTHER } LCC_API_VIRTUALIZATION_DETAIL;
+
 typedef enum {
-	STRATEGY_DEFAULT,
-	STRATEGY_ETHERNET,
-	STRATEGY_IP_ADDRESS,
-	STRATEGY_DISK_NUM,
-	STRATEGY_DISK_LABEL,
-	STRATEGY_PLATFORM_SPECIFIC,
-	STRATEGY_UNKNOWN
-} IDENTIFICATION_STRATEGY;
+	PROV_UNKNOWN = 0,
+	ON_PREMISE = 1,
+	GOOGLE_CLOUD = 2,
+	AZURE_CLOUD = 3,
+	AWS = 4,
+	/**
+	 * "/sys/class/dmi/id/bios_vendor" SeaBIOS
+	 * "/sys/class/dmi/id/sys_vendor" Alibaba Cloud
+	 * modalias
+	 * "dmi:bvnSeaBIOS:bvrrel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org:bd04/01/2014:svnAlibabaCloud:pnAlibabaCloudECS:pvrpc-i440fx-2.1:cvnAlibabaCloud:ct1:cvrpc-i440fx-2.1:"
+	 */
+	ALI_CLOUD = 5
+} LCC_API_CLOUD_PROVIDER;
+
+typedef enum { NONE, CONTAINER, VM } LCC_API_VIRTUALIZATION_SUMMARY;
+
+typedef struct {
+	LCC_API_CLOUD_PROVIDER cloud_provider;
+	LCC_API_VIRTUALIZATION_SUMMARY virtualization;
+	LCC_API_VIRTUALIZATION_DETAIL virtualization_detail;
+} ExecutionEnvironmentInfo;
 
 #ifdef __cplusplus
 }
 #endif
 
+/**
+ * @}
+ */
 #endif

--
Gitblit v1.9.1