Host: rename properties

This commit is contained in:
李通洲 2024-01-05 20:38:29 +08:00
parent 24cec76251
commit 6bcd75835e
7 changed files with 121 additions and 121 deletions

View File

@ -4,13 +4,13 @@
typedef struct FFHostResult
{
FFstrbuf productFamily;
FFstrbuf productName;
FFstrbuf productVersion;
FFstrbuf productSku;
FFstrbuf productSerial;
FFstrbuf productUuid;
FFstrbuf sysVendor;
FFstrbuf family;
FFstrbuf name;
FFstrbuf version;
FFstrbuf sku;
FFstrbuf serial;
FFstrbuf uuid;
FFstrbuf vendor;
} FFHostResult;
const char* ffDetectHost(FFHostResult* host);

View File

@ -5,32 +5,32 @@
const char* ffDetectHost(FFHostResult* host)
{
// http://newandroidbook.com/ddb/
ffSettingsGetAndroidProperty("ro.product.device", &host->productFamily);
ffSettingsGetAndroidProperty("ro.product.device", &host->family);
ffSettingsGetAndroidProperty("ro.product.marketname", &host->productName)
|| ffSettingsGetAndroidProperty("ro.vendor.product.display", &host->productName)
|| ffSettingsGetAndroidProperty("ro.config.devicename", &host->productName)
|| ffSettingsGetAndroidProperty("ro.config.marketing_name", &host->productName)
|| ffSettingsGetAndroidProperty("ro.product.vendor.model", &host->productName)
|| ffSettingsGetAndroidProperty("ro.product.oppo_model", &host->productName)
|| ffSettingsGetAndroidProperty("ro.oppo.market.name", &host->productName)
|| ffSettingsGetAndroidProperty("ro.product.brand", &host->productName);
ffSettingsGetAndroidProperty("ro.product.marketname", &host->name)
|| ffSettingsGetAndroidProperty("ro.vendor.product.display", &host->name)
|| ffSettingsGetAndroidProperty("ro.config.devicename", &host->name)
|| ffSettingsGetAndroidProperty("ro.config.marketing_name", &host->name)
|| ffSettingsGetAndroidProperty("ro.product.vendor.model", &host->name)
|| ffSettingsGetAndroidProperty("ro.product.oppo_model", &host->name)
|| ffSettingsGetAndroidProperty("ro.oppo.market.name", &host->name)
|| ffSettingsGetAndroidProperty("ro.product.brand", &host->name);
if (ffSettingsGetAndroidProperty("ro.product.model", &host->productVersion))
if (ffSettingsGetAndroidProperty("ro.product.model", &host->version))
{
if (ffStrbufStartsWithIgnCase(&host->productVersion, &host->productName))
if (ffStrbufStartsWithIgnCase(&host->version, &host->name))
{
ffStrbufSubstrAfter(&host->productVersion, host->productName.length);
ffStrbufTrimLeft(&host->productVersion, ' ');
ffStrbufSubstrAfter(&host->version, host->name.length);
ffStrbufTrimLeft(&host->version, ' ');
}
}
ffSettingsGetAndroidProperty("ro.product.manufacturer", &host->sysVendor);
ffSettingsGetAndroidProperty("ro.product.manufacturer", &host->vendor);
if(host->sysVendor.length && !ffStrbufStartsWithIgnCase(&host->productName, &host->sysVendor))
if(host->vendor.length && !ffStrbufStartsWithIgnCase(&host->name, &host->vendor))
{
ffStrbufPrependS(&host->productName, " ");
ffStrbufPrepend(&host->productName, &host->sysVendor);
ffStrbufPrependS(&host->name, " ");
ffStrbufPrepend(&host->name, &host->vendor);
}
return NULL;

View File

@ -177,7 +177,7 @@ const char* getProductNameWithIokit(FFstrbuf* result)
if (!productName)
return "IORegistryEntryCreateCFProperty() failed";
return ffCfStrGetString(productName, result);
return ffCfStrGetString(name, result);
}
const char* getOthersByIokit(FFHostResult* host)
@ -188,29 +188,29 @@ const char* getOthersByIokit(FFHostResult* host)
FF_CFTYPE_AUTO_RELEASE CFStringRef serialNumber = IORegistryEntryCreateCFProperty(registryEntry, CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, kNilOptions);
if (serialNumber)
ffCfStrGetString(serialNumber, &host->productSerial);
ffCfStrGetString(serialNumber, &host->serial);
FF_CFTYPE_AUTO_RELEASE CFStringRef uuid = IORegistryEntryCreateCFProperty(registryEntry, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, kNilOptions);
if (uuid)
ffCfStrGetString(uuid, &host->productUuid);
ffCfStrGetString(uuid, &host->uuid);
FF_CFTYPE_AUTO_RELEASE CFStringRef manufacturer = IORegistryEntryCreateCFProperty(registryEntry, CFSTR("manufacturer"), kCFAllocatorDefault, kNilOptions);
if (manufacturer)
ffCfStrGetString(manufacturer, &host->sysVendor);
ffCfStrGetString(manufacturer, &host->vendor);
return NULL;
}
const char* ffDetectHost(FFHostResult* host)
{
const char* error = ffSysctlGetString("hw.model", &host->productFamily);
const char* error = ffSysctlGetString("hw.model", &host->family);
if (error) return error;
ffStrbufSetStatic(&host->productName, getProductNameWithHwModel(&host->productFamily));
if (host->productName.length == 0)
getProductNameWithIokit(&host->productName);
if (host->productName.length == 0)
ffStrbufSet(&host->productName, &host->productFamily);
ffStrbufSetStatic(&host->name, getProductNameWithHwModel(&host->family));
if (host->name.length == 0)
getProductNameWithIokit(&host->name);
if (host->name.length == 0)
ffStrbufSet(&host->name, &host->family);
getOthersByIokit(host);
return NULL;
}

View File

@ -4,20 +4,20 @@
const char* ffDetectHost(FFHostResult* host)
{
ffSettingsGetFreeBSDKenv("smbios.system.product", &host->productName);
ffCleanUpSmbiosValue(&host->productName);
ffSettingsGetFreeBSDKenv("smbios.system.family", &host->productFamily);
ffCleanUpSmbiosValue(&host->productFamily);
ffSettingsGetFreeBSDKenv("smbios.system.version", &host->productVersion);
ffCleanUpSmbiosValue(&host->productVersion);
ffSettingsGetFreeBSDKenv("smbios.system.sku", &host->productSku);
ffCleanUpSmbiosValue(&host->productSku);
ffSettingsGetFreeBSDKenv("smbios.system.serial", &host->productSerial);
ffCleanUpSmbiosValue(&host->productSerial);
ffSettingsGetFreeBSDKenv("smbios.system.uuid", &host->productUuid);
ffCleanUpSmbiosValue(&host->productUuid);
ffSettingsGetFreeBSDKenv("smbios.system.maker", &host->sysVendor);
ffCleanUpSmbiosValue(&host->sysVendor);
ffSettingsGetFreeBSDKenv("smbios.system.product", &host->name);
ffCleanUpSmbiosValue(&host->name);
ffSettingsGetFreeBSDKenv("smbios.system.family", &host->family);
ffCleanUpSmbiosValue(&host->family);
ffSettingsGetFreeBSDKenv("smbios.system.version", &host->version);
ffCleanUpSmbiosValue(&host->version);
ffSettingsGetFreeBSDKenv("smbios.system.sku", &host->sku);
ffCleanUpSmbiosValue(&host->sku);
ffSettingsGetFreeBSDKenv("smbios.system.serial", &host->serial);
ffCleanUpSmbiosValue(&host->serial);
ffSettingsGetFreeBSDKenv("smbios.system.uuid", &host->uuid);
ffCleanUpSmbiosValue(&host->uuid);
ffSettingsGetFreeBSDKenv("smbios.system.maker", &host->vendor);
ffCleanUpSmbiosValue(&host->vendor);
return NULL;
}

View File

@ -29,28 +29,28 @@ static void getHostProductName(FFstrbuf* name)
const char* ffDetectHost(FFHostResult* host)
{
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->productFamily);
getHostProductName(&host->productName);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->productVersion);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->productSku);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_serial", "/sys/class/dmi/id/product_serial", &host->productSerial);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_uuid", "/sys/class/dmi/id/product_uuid", &host->productUuid);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->sysVendor);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_family", "/sys/class/dmi/id/product_family", &host->family);
getHostProductName(&host->name);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_version", "/sys/class/dmi/id/product_version", &host->version);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_sku", "/sys/class/dmi/id/product_sku", &host->sku);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_serial", "/sys/class/dmi/id/product_serial", &host->serial);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/product_uuid", "/sys/class/dmi/id/product_uuid", &host->uuid);
ffGetSmbiosValue("/sys/devices/virtual/dmi/id/sys_vendor", "/sys/class/dmi/id/sys_vendor", &host->vendor);
//KVM/Qemu virtual machine
if(ffStrbufStartsWithS(&host->productName, "Standard PC"))
ffStrbufPrependS(&host->productName, "KVM/QEMU ");
if(ffStrbufStartsWithS(&host->name, "Standard PC"))
ffStrbufPrependS(&host->name, "KVM/QEMU ");
if(host->productFamily.length == 0 && host->productName.length == 0)
if(host->family.length == 0 && host->name.length == 0)
{
const char* wslDistroName = getenv("WSL_DISTRO_NAME");
//On WSL, the real host can't be detected. Instead use WSL as host.
if(wslDistroName != NULL || getenv("WSL_DISTRO") != NULL || getenv("WSL_INTEROP") != NULL)
{
ffStrbufAppendS(&host->productName, "Windows Subsystem for Linux");
ffStrbufAppendS(&host->name, "Windows Subsystem for Linux");
if (wslDistroName)
ffStrbufAppendF(&host->productName, " - %s", wslDistroName);
ffStrbufAppendS(&host->productFamily, "WSL");
ffStrbufAppendF(&host->name, " - %s", wslDistroName);
ffStrbufAppendS(&host->family, "WSL");
FF_STRBUF_AUTO_DESTROY wslVer = ffStrbufCreate(); //Wide characters
if(!ffProcessAppendStdOut(&wslVer, (char* const[]){
@ -63,7 +63,7 @@ const char* ffDetectHost(FFHostResult* host)
ffStrbufSubstrAfterLastC(&wslVer, ' ');
for(uint32_t i = 0; i < wslVer.length; ++i) {
if(wslVer.chars[i]) //don't append \0
ffStrbufAppendC(&host->productVersion, wslVer.chars[i]);
ffStrbufAppendC(&host->version, wslVer.chars[i]);
}
}
}

View File

@ -9,16 +9,16 @@ const char* ffDetectHost(FFHostResult* host)
if(!ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", &hKey, NULL))
return "ffRegOpenKeyForRead(HKEY_LOCAL_MACHINE, L\"HARDWARE\\DESCRIPTION\\System\\BIOS\", &hKey, NULL) failed";
ffRegReadStrbuf(hKey, L"SystemProductName", &host->productName, NULL);
ffCleanUpSmbiosValue(&host->productName);
ffRegReadStrbuf(hKey, L"SystemFamily", &host->productFamily, NULL);
ffCleanUpSmbiosValue(&host->productFamily);
ffRegReadStrbuf(hKey, L"SystemVersion", &host->productVersion, NULL);
ffCleanUpSmbiosValue(&host->productVersion);
ffRegReadStrbuf(hKey, L"SystemSKU", &host->productSku, NULL);
ffCleanUpSmbiosValue(&host->productSku);
ffRegReadStrbuf(hKey, L"SystemManufacturer", &host->sysVendor, NULL);
ffCleanUpSmbiosValue(&host->sysVendor);
ffRegReadStrbuf(hKey, L"SystemProductName", &host->name, NULL);
ffCleanUpSmbiosValue(&host->name);
ffRegReadStrbuf(hKey, L"SystemFamily", &host->family, NULL);
ffCleanUpSmbiosValue(&host->family);
ffRegReadStrbuf(hKey, L"SystemVersion", &host->version, NULL);
ffCleanUpSmbiosValue(&host->version);
ffRegReadStrbuf(hKey, L"SystemSKU", &host->sku, NULL);
ffCleanUpSmbiosValue(&host->sku);
ffRegReadStrbuf(hKey, L"SystemManufacturer", &host->vendor, NULL);
ffCleanUpSmbiosValue(&host->vendor);
return NULL;
}

View File

@ -9,13 +9,13 @@
void ffPrintHost(FFHostOptions* options)
{
FFHostResult host;
ffStrbufInit(&host.productFamily);
ffStrbufInit(&host.productName);
ffStrbufInit(&host.productVersion);
ffStrbufInit(&host.productSku);
ffStrbufInit(&host.productSerial);
ffStrbufInit(&host.productUuid);
ffStrbufInit(&host.sysVendor);
ffStrbufInit(&host.family);
ffStrbufInit(&host.name);
ffStrbufInit(&host.version);
ffStrbufInit(&host.sku);
ffStrbufInit(&host.serial);
ffStrbufInit(&host.uuid);
ffStrbufInit(&host.vendor);
const char* error = ffDetectHost(&host);
if(error)
@ -24,7 +24,7 @@ void ffPrintHost(FFHostOptions* options)
goto exit;
}
if(host.productFamily.length == 0 && host.productName.length == 0)
if(host.family.length == 0 && host.name.length == 0)
{
ffPrintError(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, "neither product_family nor product_name is set by O.E.M.");
goto exit;
@ -36,37 +36,37 @@ void ffPrintHost(FFHostOptions* options)
FF_STRBUF_AUTO_DESTROY output = ffStrbufCreate();
if(host.productName.length > 0)
ffStrbufAppend(&output, &host.productName);
if(host.name.length > 0)
ffStrbufAppend(&output, &host.name);
else
ffStrbufAppend(&output, &host.productFamily);
ffStrbufAppend(&output, &host.family);
if(host.productVersion.length > 0)
ffStrbufAppendF(&output, " (%s)", host.productVersion.chars);
if(host.version.length > 0)
ffStrbufAppendF(&output, " (%s)", host.version.chars);
ffStrbufPutTo(&output, stdout);
}
else
{
ffPrintFormat(FF_HOST_MODULE_NAME, 0, &options->moduleArgs, FF_HOST_NUM_FORMAT_ARGS, (FFformatarg[]) {
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productFamily},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productName},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productVersion},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productSku},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.sysVendor},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productSerial},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.productUuid},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.family},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.name},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.version},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.sku},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.vendor},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.serial},
{FF_FORMAT_ARG_TYPE_STRBUF, &host.uuid},
});
}
exit:
ffStrbufDestroy(&host.productFamily);
ffStrbufDestroy(&host.productName);
ffStrbufDestroy(&host.productVersion);
ffStrbufDestroy(&host.productSku);
ffStrbufDestroy(&host.productSerial);
ffStrbufDestroy(&host.productUuid);
ffStrbufDestroy(&host.sysVendor);
ffStrbufDestroy(&host.family);
ffStrbufDestroy(&host.name);
ffStrbufDestroy(&host.version);
ffStrbufDestroy(&host.sku);
ffStrbufDestroy(&host.serial);
ffStrbufDestroy(&host.uuid);
ffStrbufDestroy(&host.vendor);
}
bool ffParseHostCommandOptions(FFHostOptions* options, const char* key, const char* value)
@ -107,13 +107,13 @@ void ffGenerateHostJsonConfig(FFHostOptions* options, yyjson_mut_doc* doc, yyjso
void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
{
FFHostResult host;
ffStrbufInit(&host.productFamily);
ffStrbufInit(&host.productName);
ffStrbufInit(&host.productVersion);
ffStrbufInit(&host.productSku);
ffStrbufInit(&host.productSerial);
ffStrbufInit(&host.productUuid);
ffStrbufInit(&host.sysVendor);
ffStrbufInit(&host.family);
ffStrbufInit(&host.name);
ffStrbufInit(&host.version);
ffStrbufInit(&host.sku);
ffStrbufInit(&host.serial);
ffStrbufInit(&host.uuid);
ffStrbufInit(&host.vendor);
const char* error = ffDetectHost(&host);
if (error)
@ -122,29 +122,29 @@ void ffGenerateHostJsonResult(FF_MAYBE_UNUSED FFHostOptions* options, yyjson_mut
goto exit;
}
if (host.productFamily.length == 0 && host.productName.length == 0)
if (host.family.length == 0 && host.name.length == 0)
{
yyjson_mut_obj_add_str(doc, module, "error", "neither product_family nor product_name is set by O.E.M.");
goto exit;
}
yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result");
yyjson_mut_obj_add_strbuf(doc, obj, "family", &host.productFamily);
yyjson_mut_obj_add_strbuf(doc, obj, "name", &host.productName);
yyjson_mut_obj_add_strbuf(doc, obj, "version", &host.productVersion);
yyjson_mut_obj_add_strbuf(doc, obj, "sku", &host.productSku);
yyjson_mut_obj_add_strbuf(doc, obj, "serial", &host.productSerial);
yyjson_mut_obj_add_strbuf(doc, obj, "uuid", &host.productUuid);
yyjson_mut_obj_add_strbuf(doc, obj, "sysVender", &host.sysVendor);
yyjson_mut_obj_add_strbuf(doc, obj, "family", &host.family);
yyjson_mut_obj_add_strbuf(doc, obj, "name", &host.name);
yyjson_mut_obj_add_strbuf(doc, obj, "version", &host.version);
yyjson_mut_obj_add_strbuf(doc, obj, "sku", &host.sku);
yyjson_mut_obj_add_strbuf(doc, obj, "serial", &host.serial);
yyjson_mut_obj_add_strbuf(doc, obj, "uuid", &host.uuid);
yyjson_mut_obj_add_strbuf(doc, obj, "sysVender", &host.vendor);
exit:
ffStrbufDestroy(&host.productFamily);
ffStrbufDestroy(&host.productName);
ffStrbufDestroy(&host.productVersion);
ffStrbufDestroy(&host.productSku);
ffStrbufDestroy(&host.productSerial);
ffStrbufDestroy(&host.productUuid);
ffStrbufDestroy(&host.sysVendor);
ffStrbufDestroy(&host.family);
ffStrbufDestroy(&host.name);
ffStrbufDestroy(&host.version);
ffStrbufDestroy(&host.sku);
ffStrbufDestroy(&host.serial);
ffStrbufDestroy(&host.uuid);
ffStrbufDestroy(&host.vendor);
}
void ffPrintHostHelpFormat(void)