Today when debugging a program I found a error due to a contant number. In that program, we need making
a backup file name from a file name. Those file names are so regular, such as, 007_20061228.csv or
0000007_20061228.csv. Yes, it is consist of a id and date. If a file is used in BACnet protocol, the length
of its id is 7, otherwise, it is 3. The two kinds of file added a suffix "_REVXXX" and their backup file name
are made. It is so easy.
However, I found the program can not make a correct backup file name from a file based on BACnet protocol. Why?
It is impossible that the program hates BACnet protocol. My two workmates and I checked my sources again and again.
I suspected the bug is out of my codes. After checking a get_back_file() function which is written by other workmate,
I found where is bug.
When slicing out a file name, that my workmate used a constant 12. If a file name is 007_20061228.csv, it is right.
But it is wrong when a file name is 0000007_20061228.csv. It will make the result like 0000007_2006.csv. There are
worse case. When the program deleting old files, it considered 0000007_2006.csv as 0000007_20060101.csv. As a matter
of fact, most of OS also adapt this default date.
So, its backup file is not made.