Fixed: Compilation of bin2c (replaced _splitpath and _makepath by something more portable)
This commit is contained in:
parent
50ac2f917e
commit
ea3e661db5
1 changed files with 39 additions and 9 deletions
|
@ -14,9 +14,6 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
// bin2c.cpp : Defines the entry point for the console application.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -25,22 +22,55 @@ int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
if (argc<2)
|
if (argc<2)
|
||||||
{
|
{
|
||||||
printf ("bin2c [filename.bin] [filename.c]\n");
|
printf ("bin2c <filename.bin> [filename.c]\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char sDir[256];
|
// path and filename but without extension
|
||||||
char sPath[256];
|
char sPathWithoutExtension[256];
|
||||||
|
|
||||||
|
// basename of file
|
||||||
char sName[256];
|
char sName[256];
|
||||||
char sExt[256];
|
|
||||||
_splitpath (argv[1], sDir, sPath, sName, sExt);
|
// copy fullpath from command-line
|
||||||
|
strcpy(sPathWithoutExtension, argv[1]);
|
||||||
|
|
||||||
|
char *tmpExt = strrchr(sPathWithoutExtension, '.');
|
||||||
|
|
||||||
|
// remove extension
|
||||||
|
if (tmpExt) *tmpExt = 0;
|
||||||
|
|
||||||
|
// look for last directory separator
|
||||||
|
const char *tmpName1 = strrchr(sPathWithoutExtension, '/');
|
||||||
|
#ifdef _WIN32
|
||||||
|
const char *tmpName2 = strrchr(sPathWithoutExtension, '\\');
|
||||||
|
#else
|
||||||
|
const char *tmpName2 = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// take last separator
|
||||||
|
const char *tmpName = tmpName1 > tmpName2 ? tmpName1:tmpName2;
|
||||||
|
|
||||||
|
// keep only path
|
||||||
|
if (tmpName)
|
||||||
|
{
|
||||||
|
// computes position in path
|
||||||
|
size_t pos = tmpName - sPathWithoutExtension;
|
||||||
|
|
||||||
|
// copy basename
|
||||||
|
strcpy(sName, sPathWithoutExtension+pos+1);
|
||||||
|
}
|
||||||
|
|
||||||
char sOutput[256];
|
char sOutput[256];
|
||||||
|
|
||||||
if (argc>2)
|
if (argc>2)
|
||||||
|
{
|
||||||
strcpy (sOutput, argv[2]);
|
strcpy (sOutput, argv[2]);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_makepath (sOutput, sDir, sPath, sName, ".cpp");
|
strcpy(sOutput, sPathWithoutExtension);
|
||||||
|
strcat(sOutput, ".cpp");
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *pIn=fopen( argv[1], "rb");
|
FILE *pIn=fopen( argv[1], "rb");
|
||||||
|
|
Loading…
Reference in a new issue