#else return unlink(path) == 0 ? 0 : -1; #endif } char * RunCommand(const char* command); char * Generate_UUID( NitsCallSite cs) { char * uuidString; uuidString = (char*)RunCommand("cat /proc/sys/kernel/random/uuid | awk '{print toupper($0)}' | tr -d \"\n\""); return uuidString; } int GetComputerHostName(_Inout_updates_z_(length) TChar *buffer, unsigned int length) { #if defined(_MSC_VER) return !GetComputerName(buffer, (LPDWORD)&length); #else return gethostname(buffer, length); #endif } void PAL_SHA256Transform(_In_ void * pInputValue, _In_ unsigned int valueLength, _Out_ unsigned char hashedValue[SHA256TRANSFORM_DIGEST_LEN]) { SHA256_CTX Ctx; #if defined(_MSC_VER)
//****************************************************************************************** int32_t MasterComponent::initEXCEL(PSTR dataLine, float baseSensorRange) { //---------------------------------------------------------- // Component data was read in, so parse it. First, parse the // fields common to all components... PSTR next_token = nullptr; PSTR field = strtok_s(dataLine, ",", &next_token); int32_t ammoAmount = 1; health = 1; masterID = atoi(field); cLoadString(COMPONENT_NAME_START + masterID, name, MAXLEN_COMPONENT_NAME); cLoadString(COMPONENT_ABBR_START + masterID, abbreviation, MAXLEN_COMPONENT_ABBREV); field = strtok_s(nullptr, ",", &next_token); int32_t formIndex; for(formIndex = 0; ComponentFormString[formIndex] != nullptr; formIndex++) if(strcmp(field, ComponentFormString[formIndex]) == 0) break; if(ComponentFormString[formIndex] == nullptr) return(-1); if(strcmp(field, "undefined") == 0) { masterID = -1; return(NO_ERROR); } form = (ComponentFormType)formIndex; field = strtok_s(nullptr, ",", &next_token); // name, ignore field = strtok_s(nullptr, ",", &next_token); size = atof(field); field = strtok_s(nullptr, ",", &next_token); float recycleTime = atof(field); field = strtok_s(nullptr, ",", &next_token); float heat = (uint32_t)atof(field); field = strtok_s(nullptr, ",", &next_token); tonnage = atof(field); field = strtok_s(nullptr, ",", &next_token); float damage = atof(field); field = strtok_s(nullptr, ",", &next_token); CV = atof(field); field = strtok_s(nullptr, ",", &next_token); resourcePoints = atoi(field); field = strtok_s(nullptr, ",", &next_token); uint8_t rangeType = 255; _Check_return_wat_ _CRTIMP errno_t __cdecl _strlwr_s(_Inout_updates_z_(_Size) PSTR _Str, _In_ size_t _Size); _strlwr(field); if(strcmp(field, "0") != 0) { if(strcmp(field, WeaponRangeString[WEAPON_RANGE_SHORT]) == 0) rangeType = WEAPON_RANGE_SHORT; else if(strcmp(field, WeaponRangeString[WEAPON_RANGE_MEDIUM]) == 0) rangeType = WEAPON_RANGE_MEDIUM; else if(strcmp(field, WeaponRangeString[WEAPON_RANGE_LONG]) == 0) rangeType = WEAPON_RANGE_LONG; else Fatal(0, " MasterComponent.initEXCEL: bad weapon range type in compbase "); } field = strtok_s(nullptr, ",", &next_token); for(size_t location = 0; location < NUM_BODY_LOCATIONS; location++) { if(field) { if(strcmp(field, "No") == 0) criticalSpacesReq[location] = -1; else if(strcmp(field, "Yes") == 0) criticalSpacesReq[location] = 0; else criticalSpacesReq[location] = atoi(field); } field = strtok_s(nullptr, ",", &next_token); } int32_t ammoType = WEAPON_AMMO_NONE; if(field) { if(strcmp(field, "1") == 0) ammoType = WEAPON_AMMO_LIMITED; else if(strcmp(field, "SRM") == 0) ammoType = WEAPON_AMMO_SRM; else if(strcmp(field, "LRM") == 0) ammoType = WEAPON_AMMO_LRM; else if(strcmp(field, "ST") == 0) ammoType = WEAPON_AMMO_ST; } field = strtok(nullptr, ","); int32_t flags = 0; if(field) flags = atoi(field); field = strtok_s(nullptr, ",", &next_token); int32_t specialEffect = 0; if(field) specialEffect = (char)atoi(field); field = strtok_s(nullptr, ",", &next_token); int32_t ammoMasterId = 0; if(field) ammoMasterId = (char)atoi(field); switch(form) { case COMPONENT_FORM_SIMPLE: //---------------------- // No additional data... break; case COMPONENT_FORM_COCKPIT: break; case COMPONENT_FORM_SENSOR: stats.sensor.range = damage * baseSensorRange; break; case COMPONENT_FORM_ECM: stats.ecm.effect = damage; field = strtok_s(nullptr, ",", &next_token); stats.ecm.range = recycleTime; break; case COMPONENT_FORM_JAMMER: stats.jammer.effect = damage; break; case COMPONENT_FORM_PROBE: stats.probe.effect = damage; break; case COMPONENT_FORM_ACTUATOR: break; case COMPONENT_FORM_ENGINE: stats.engine.rating = 0; break; case COMPONENT_FORM_HEATSINK: stats.heatsink.dissipation = damage; break; case COMPONENT_FORM_WEAPON_ENERGY: case COMPONENT_FORM_WEAPON_MISSILE: case COMPONENT_FORM_WEAPON_BALLISTIC: stats.weapon.damage = damage; stats.weapon.recycleTime = recycleTime; stats.weapon.heat = heat; stats.weapon.ammoAmount = 1; stats.weapon.ammoType = ammoType; stats.weapon.range = rangeType; stats.weapon.specialEffect = specialEffect; stats.weapon.ammoMasterId = ammoMasterId; stats.weapon.flags = ammoType == WEAPON_AMMO_ST ? WEAPON_FLAG_STREAK : 0; stats.weapon.ammoAmount = ammoAmount; break; case COMPONENT_FORM_AMMO: stats.ammo.ammoPerTon = recycleTime; stats.ammo.explosiveDamage = damage; break; case COMPONENT_FORM_JUMPJET: stats.jumpjet.rangeMod = damage; break; case COMPONENT_FORM_CASE: break; case COMPONENT_FORM_LIFESUPPORT: break; case COMPONENT_FORM_GYROSCOPE: break; case COMPONENT_FORM_POWER_AMPLIFIER: break; case COMPONENT_FORM_BULK: break; default: //return(-2); NODEFAULT; } return(NO_ERROR); }