SedrynTyros, could you remove my email address, please?
Malicious spam bots circulating on the web can collect the address, making me hard to keep junk mail out of my inbox.
Few years ago, I replaced the plain text with an image on my website to prevent the situation.
I do not have my own source control repository but have been maintaining patches that can be directly applied to the source from the official svn branch. They still need to be cleaned up for a better management.
I am considering to upload a source archive to my website with previous tarballs kept every time a new build is released.
This allows to generate all the changes between the two points.
A quick diff between your releases would probably help as well. I still need to find out why an app bundle of your code works, while it crashes with dosbox-x code...
A regression regarding a recent dosbox-x change is found: case sensitivity issue in the environment variables set.
Lower-case variables should overwrite the upper-case variables.
For example, typing "set path=c:\" makes the SET command show both PATH and path variables.
The following patch should fix the problem.
1--- ./src/misc/programs.cpp 2015-01-24 14:29:27.871925500 +0900 2+++ ./src/misc/programs.cpp 2015-01-24 15:30:45.392255100 +0900 3@@ -296,13 +297,16 @@ 4 return false; 5 } 6 7+ std::string bigentry(entry); 8+ for (std::string::iterator it = bigentry.begin(); it != bigentry.end(); ++it) *it = toupper(*it); 9+ 10 env_scan = env_base; 11 while (env_scan < env_fence) { 12 /* "NAME" + "=" + "VALUE" + "\0" */ 13 /* end of the block is a NULL string meaning a \0 follows the last string's \0 */ 14 if (mem_readb(env_scan) == 0) break; /* normal end of block */ 15 16- if (EnvPhys_StrCmp(env_scan,env_fence,entry) == 0) { 17+ if (EnvPhys_StrCmp(env_scan,env_fence,bigentry.c_str()) == 0) { 18 EnvPhys_StrCpyToCPPString(result,env_scan,env_fence); 19 return true; 20 } 21@@ -387,7 +391,10 @@ 22 return false; 23 } 24 25- el = strlen(entry); 26+ std::string bigentry(entry); 27+ for (std::string::iterator it = bigentry.begin(); it != bigentry.end(); ++it) *it = toupper(*it); 28+ 29+ el = strlen(bigentry.c_str()); 30 if (*new_string != 0) nsl = strlen(new_string); 31 needs = nsl+1+el+1+1; /* entry + '=' + new_string + '\0' + '\0' */ 32 33@@ -396,7 +403,7 @@ 34 while (env_scan < env_fence) { 35 if (mem_readb(env_scan) == 0) break; 36 37- if (EnvPhys_StrCmp(env_scan,env_fence,entry) == 0) { 38+ if (EnvPhys_StrCmp(env_scan,env_fence,bigentry.c_str()) == 0) { 39 /* found it. remove by shifting the rest of the environment block over */ 40 int zeroes=0; 41 PhysPt s,d; 42@@ -404,7 +411,7 @@ 43 /* before we remove it: is there room for the new value? */ 44 if (nsl != 0) { 45 if ((env_scan+needs) > env_fence) { 46- LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",entry,new_string); 47+ LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",bigentry.c_str(),new_string); 48 return false; 49 } 50 } 51@@ -433,12 +440,12 @@ 52 /* add the string to the end of the block */ 53 if (*new_string != 0) { 54 if ((env_scan+needs) > env_fence) { 55- LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",entry,new_string); 56+ LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",bigentry.c_str(),new_string); 57 return false; 58 } 59 60 assert(env_scan < env_fence);
ykhwong wrote:SedrynTyros, could you remove my email address, please?
Malicious spam bots circulating on the web can collect the address, maki […] Show full quote
SedrynTyros, could you remove my email address, please?
Malicious spam bots circulating on the web can collect the address, making me hard to keep junk mail out of my inbox.
Few years ago, I replaced the plain text with an image on my website to prevent the situation.
I do not have my own source control repository but have been maintaining patches that can be directly applied to the source from the official svn branch. They still need to be cleaned up for a better management.
I am considering to upload a source archive to my website with previous tarballs kept every time a new build is released.
This allows to generate all the changes between the two points.
Hey, sorry about that. Obviously, I didn't consider that. I won't do that again.
ykhwong wrote:A regression regarding a recent dosbox-x change is found: case sensitivity issue in the environment variables set.
Lower-case va […] Show full quote
A regression regarding a recent dosbox-x change is found: case sensitivity issue in the environment variables set.
Lower-case variables should overwrite the upper-case variables.
For example, typing "set path=c:\" makes the SET command show both PATH and path variables.
The following patch should fix the problem.
1--- ./src/misc/programs.cpp 2015-01-24 14:29:27.871925500 +0900 2+++ ./src/misc/programs.cpp 2015-01-24 15:30:45.392255100 +0900 3@@ -296,13 +297,16 @@ 4 return false; 5 } 6 7+ std::string bigentry(entry); 8+ for (std::string::iterator it = bigentry.begin(); it != bigentry.end(); ++it) *it = toupper(*it); 9+ 10 env_scan = env_base; 11 while (env_scan < env_fence) { 12 /* "NAME" + "=" + "VALUE" + "\0" */ 13 /* end of the block is a NULL string meaning a \0 follows the last string's \0 */ 14 if (mem_readb(env_scan) == 0) break; /* normal end of block */ 15 16- if (EnvPhys_StrCmp(env_scan,env_fence,entry) == 0) { 17+ if (EnvPhys_StrCmp(env_scan,env_fence,bigentry.c_str()) == 0) { 18 EnvPhys_StrCpyToCPPString(result,env_scan,env_fence); 19 return true; 20 } 21@@ -387,7 +391,10 @@ 22 return false; 23 } 24 25- el = strlen(entry); 26+ std::string bigentry(entry); 27+ for (std::string::iterator it = bigentry.begin(); it != bigentry.end(); ++it) *it = toupper(*it); 28+ 29+ el = strlen(bigentry.c_str()); 30 if (*new_string != 0) nsl = strlen(new_string); 31 needs = nsl+1+el+1+1; /* entry + '=' + new_string + '\0' + '\0' */ 32 33@@ -396,7 +403,7 @@ 34 while (env_scan < env_fence) { 35 if (mem_readb(env_scan) == 0) break; 36 37- if (EnvPhys_StrCmp(env_scan,env_fence,entry) == 0) { 38+ if (EnvPhys_StrCmp(env_scan,env_fence,bigentry.c_str()) == 0) { 39 /* found it. remove by shifting the rest of the environment block over */ 40 int zeroes=0; 41 PhysPt s,d; 42@@ -404,7 +411,7 @@ 43 /* before we remove it: is there room for the new value? */ 44 if (nsl != 0) { 45 if ((env_scan+needs) > env_fence) { 46- LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",entry,new_string); 47+ LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",bigentry.c_str(),new_string); 48 return false; 49 } 50 } 51@@ -433,12 +440,12 @@ 52 /* add the string to the end of the block */ 53 if (*new_string != 0) { 54 if ((env_scan+needs) > env_fence) { 55- LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",entry,new_string); 56+ LOG_MSG("Program::SetEnv() error, insufficient room for environment variable %s=%s\n",bigentry.c_str(),new_string); 57 return false; 58 } 59 60 assert(env_scan < env_fence);
I recommend getting some form of source control so that you can track revisions in your code as you apply patches. If you use git, it also makes it easier for other people to incorporate your changes by pulling your branch and then using git's merge functions, and you can git pull from other's branches as well. There's a reason the Linux kernel is developed in that fashion. It's far easier than making diffs between two tarballs and trying to figure out how to merge them together without screwing up the code.
DOSBox-X project: more emulation better accuracy. DOSLIB and DOSLIB2: Learn how to tinker and hack hardware and software from DOS.
I recommend getting some form of source control so that you can track revisions in your code as you apply patches. If you use git, it also makes it easier for other people to incorporate your changes by pulling your branch and then using git's merge functions, and you can git pull from other's branches as well. There's a reason the Linux kernel is developed in that fashion. It's far easier than making diffs between two tarballs and trying to figure out how to merge them together without screwing up the code.
Thanks for the tip, TheGreatCodeholio.
I will take that into consideration.
Maybe a wrong thread, but DOSBox SVN Daum 20150125 gives me less fps in Blood. 😕
Not exactly sure why that happens.
However, I assume that that is caused by some vga_draw updates from DOSBox-X which are incorporated into my build.
AFAIK, the linewise (drawing line by line) is forced and the option was completely removed, possibly leading to the performance degradation.