mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 20:51:12 -06:00 
			
		
		
		
	Fix alpha legacy dir detection, Fix SemVer value ctor
This commit is contained in:
		
							parent
							
								
									bdaf1b01be
								
							
						
					
					
						commit
						d671e06c32
					
				
					 4 changed files with 24 additions and 6 deletions
				
			
		|  | @ -620,7 +620,7 @@ semver_numeric (semver_t *x) { | |||
|   return num; | ||||
| } | ||||
| 
 | ||||
| static char *semver_strdup(const char *src) { | ||||
| char *semver_strdup(const char *src) { | ||||
|   if (src == NULL) return NULL; | ||||
|   size_t len = strlen(src) + 1; | ||||
|   char *res = malloc(len); | ||||
|  |  | |||
|  | @ -98,6 +98,9 @@ semver_is_valid (const char *s); | |||
| int | ||||
| semver_clean (char *s); | ||||
| 
 | ||||
| char * | ||||
| semver_strdup(const char *src); | ||||
| 
 | ||||
| semver_t | ||||
| semver_copy(const semver_t *ver); | ||||
| 
 | ||||
|  |  | |||
|  | @ -100,7 +100,13 @@ void AppConfig::load() | |||
| 
 | ||||
|     // Figure out if datadir has legacy presets
 | ||||
|     auto ini_ver = Semver::parse(get("version")); | ||||
|     m_legacy_datadir = ini_ver ? *ini_ver < Semver(1, 40, 0) : true; | ||||
|     m_legacy_datadir = false; | ||||
|     if (ini_ver) { | ||||
|         // Make 1.40.0 alphas compare well
 | ||||
|         ini_ver->set_metadata(boost::none); | ||||
|         ini_ver->set_prerelease(boost::none); | ||||
|         m_legacy_datadir = ini_ver < Semver(1, 40, 0); | ||||
|     } | ||||
| 
 | ||||
|     // Override missing or keys with their defaults.
 | ||||
|     this->set_defaults(); | ||||
|  |  | |||
|  | @ -22,14 +22,15 @@ public: | |||
| 	Semver() : ver(semver_zero()) {} | ||||
| 
 | ||||
| 	Semver(int major, int minor, int patch, | ||||
| 		boost::optional<std::string> metadata = boost::none, | ||||
| 		boost::optional<std::string> prerelease = boost::none) | ||||
| 		boost::optional<const std::string&> metadata = boost::none, | ||||
| 		boost::optional<const std::string&> prerelease = boost::none) | ||||
| 		: ver(semver_zero()) | ||||
| 	{ | ||||
| 		ver.major = major; | ||||
| 		ver.minor = minor; | ||||
| 		ver.patch = patch; | ||||
| 		ver.metadata = metadata ? std::strcpy(ver.metadata, metadata->c_str()) : nullptr; | ||||
| 		ver.prerelease = prerelease ? std::strcpy(ver.prerelease, prerelease->c_str()) : nullptr; | ||||
| 		set_metadata(metadata); | ||||
| 		set_prerelease(prerelease); | ||||
| 	} | ||||
| 
 | ||||
| 	static boost::optional<Semver> parse(const std::string &str) | ||||
|  | @ -82,6 +83,13 @@ public: | |||
| 	int 		patch() 	 const { return ver.patch; } | ||||
| 	const char*	prerelease() const { return ver.prerelease; } | ||||
| 	const char*	metadata() 	 const { return ver.metadata; } | ||||
| 	 | ||||
| 	// Setters
 | ||||
| 	void set_maj(int maj) { ver.major = maj; } | ||||
| 	void set_min(int min) { ver.minor = min; } | ||||
| 	void set_patch(int patch) { ver.patch = patch; } | ||||
| 	void set_metadata(boost::optional<const std::string&> meta) { meta ? strdup(*meta) : nullptr; } | ||||
| 	void set_prerelease(boost::optional<const std::string&> pre) { pre ? strdup(*pre) : nullptr; } | ||||
| 
 | ||||
| 	// Comparison
 | ||||
| 	bool operator<(const Semver &b)  const { return ::semver_compare(ver, b.ver) == -1; } | ||||
|  | @ -124,6 +132,7 @@ private: | |||
| 	Semver(semver_t ver) : ver(ver) {} | ||||
| 
 | ||||
| 	static semver_t semver_zero() { return { 0, 0, 0, nullptr, nullptr }; } | ||||
| 	static char * strdup(const std::string &str) { return ::semver_strdup(const_cast<char*>(str.c_str())); } | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vojtech Kral
						Vojtech Kral