Allow the bin2c output filename stem to contain a path.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23557 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2009-11-07 20:03:32 +00:00
parent 513a76e14e
commit 992b57324e

View file

@ -34,6 +34,7 @@
#define close _close #define close _close
#define read _read #define read _read
#endif #endif
#include <libgen.h>
#ifndef O_BINARY #ifndef O_BINARY
#define O_BINARY 0 #define O_BINARY 0
@ -50,10 +51,14 @@ static off_t filesize(int fd)
static int write_cfile(const unsigned char* buf, off_t len, const char* cname) static int write_cfile(const unsigned char* buf, off_t len, const char* cname)
{ {
char filename[256]; char filename[256];
char filebase[256];
char* bn;
FILE* fp; FILE* fp;
int i; int i;
snprintf(filename,256,"%s.c",cname); snprintf(filename,256,"%s.c",cname);
strncpy(filebase, cname, 256);
bn = basename(filebase);
fp = fopen(filename,"w+"); fp = fopen(filename,"w+");
if (fp == NULL) { if (fp == NULL) {
@ -62,7 +67,7 @@ static int write_cfile(const unsigned char* buf, off_t len, const char* cname)
} }
fprintf(fp,"/* Generated by bin2c */\n\n"); fprintf(fp,"/* Generated by bin2c */\n\n");
fprintf(fp,"unsigned char %s[] = {",cname); fprintf(fp,"unsigned char %s[] = {",bn);
for (i=0;i<len;i++) { for (i=0;i<len;i++) {
if ((i % 16) == 0) { if ((i % 16) == 0) {
@ -83,9 +88,13 @@ static int write_cfile(const unsigned char* buf, off_t len, const char* cname)
static int write_hfile(off_t len, const char* cname) static int write_hfile(off_t len, const char* cname)
{ {
char filename[256]; char filename[256];
char filebase[256];
char* bn;
FILE* fp; FILE* fp;
snprintf(filename,256,"%s.h",cname); snprintf(filename,256,"%s.h",cname);
strncpy(filebase, cname, 256);
bn = basename(filebase);
fp = fopen(filename,"w+"); fp = fopen(filename,"w+");
if (fp == NULL) { if (fp == NULL) {
fprintf(stderr,"Couldn't open %s\n",filename); fprintf(stderr,"Couldn't open %s\n",filename);
@ -93,8 +102,8 @@ static int write_hfile(off_t len, const char* cname)
} }
fprintf(fp,"/* Generated by bin2c */\n\n"); fprintf(fp,"/* Generated by bin2c */\n\n");
fprintf(fp,"#define LEN_%s %d\n",cname,(int)len); fprintf(fp,"#define LEN_%s %d\n",bn,(int)len);
fprintf(fp,"extern unsigned char %s[];\n",cname); fprintf(fp,"extern unsigned char %s[];\n",bn);
fclose(fp); fclose(fp);
return 0; return 0;
} }