@@ -1463,6 +1463,18 @@ void DMD::AdjustRGB24Depth(uint8_t* pData, uint8_t* pDstData, int length, uint8_
14631463 }
14641464}
14651465
1466+ void DMD::GenerateRandomSuffix (char * buffer, size_t length)
1467+ {
1468+ const char charset[] = " abcdefghijklmnopqrstuvwxyz0123456789" ;
1469+ size_t charsetSize = sizeof (charset) - 1 ; // exclude null terminator
1470+
1471+ for (size_t i = 0 ; i < length; ++i)
1472+ {
1473+ buffer[i] = charset[rand () % charsetSize];
1474+ }
1475+ buffer[length] = ' \0 ' ;
1476+ }
1477+
14661478void DMD::DumpDMDTxtThread ()
14671479{
14681480 char name[DMDUTIL_MAX_NAME_SIZE] = {0 };
@@ -1522,9 +1534,19 @@ void DMD::DumpDMDTxtThread()
15221534
15231535 if (name[0 ] != ' \0 ' )
15241536 {
1525- char filename[128 ];
1526- snprintf (filename, DMDUTIL_MAX_NAME_SIZE + 5 , " %s.txt" , name);
1527- f = fopen (filename, " a" );
1537+ char filename[DMDUTIL_MAX_NAME_SIZE + 128 + 8 + 5 ];
1538+ char suffix[9 ]; // 8 chars + null terminator
1539+ GenerateRandomSuffix (suffix, 8 );
1540+ if (m_dumpPath[0 ] == ' \0 ' ) strcpy (m_dumpPath, Config::GetInstance ()->GetDumpPath ());
1541+ if (m_dumpPath[strlen (m_dumpPath) - 1 ] == ' /' || m_dumpPath[strlen (m_dumpPath) - 1 ] == ' \\ ' )
1542+ {
1543+ snprintf (filename, sizeof (filename), " %s%s-%s.txt" , m_dumpPath, name, suffix);
1544+ }
1545+ else
1546+ {
1547+ snprintf (filename, sizeof (filename), " %s/%s-%s.txt" , m_dumpPath, name, suffix);
1548+ }
1549+ f = fopen (filename, " w" );
15281550 update = true ;
15291551 memset (renderBuffer, 0 , 2 * 256 * 64 );
15301552 passed[0 ] = passed[1 ] = 0 ;
0 commit comments