summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/build/ChangeLog6
-rw-r--r--tools/build/configure.ac4
-rw-r--r--tools/build/rtems-bin2c.c18
3 files changed, 15 insertions, 13 deletions
diff --git a/tools/build/ChangeLog b/tools/build/ChangeLog
index 06f46a69c9..d80c52528e 100644
--- a/tools/build/ChangeLog
+++ b/tools/build/ChangeLog
@@ -1,3 +1,9 @@
+2010-07-30 Ralf Corsépius <ralf.corsepius@rtems.org>
+
+ * configure.ac: Check for libgen.h, basename.
+ * rtems-bin2c.c: Use basename(3) instead of strrchr cascade.
+ Introduce ifbasename. Use ifbasename in generated files.
+
2010-07-29 Ralf Corsépius <ralf.corsepius@rtems.org>
* rtems-bin2c.c: Add -C and -H options.
diff --git a/tools/build/configure.ac b/tools/build/configure.ac
index 7d6d204ec5..16ef5e7c88 100644
--- a/tools/build/configure.ac
+++ b/tools/build/configure.ac
@@ -13,8 +13,8 @@ AM_INIT_AUTOMAKE([no-define foreign 1.10])
AM_MAINTAINER_MODE
AC_PROG_CC
-AC_CHECK_HEADERS([getopt.h])
-AC_CHECK_FUNCS(strerror strtol)
+AC_CHECK_HEADERS([getopt.h libgen.h])
+AC_CHECK_FUNCS(strerror strtol basename)
RTEMS_PATH_KSH
diff --git a/tools/build/rtems-bin2c.c b/tools/build/rtems-bin2c.c
index b8e39e8090..57a6642a24 100644
--- a/tools/build/rtems-bin2c.c
+++ b/tools/build/rtems-bin2c.c
@@ -29,6 +29,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <libgen.h>
#ifndef PATH_MAX
#define PATH_MAX 1024
@@ -111,15 +112,10 @@ void process(const char *ifname, const char *ofname)
}
/* find basename */
- if ((cp = strrchr(ifname, '/')) != NULL)
- ++cp;
- else {
- if ((cp = strrchr(ifname, '\\')) != NULL)
- ++cp;
- else
- cp = ifname;
- }
- strcpy(buf, cp);
+ char *ifbasename = strdup(ifname);
+ ifbasename = basename(ifbasename);
+
+ strcpy(buf, ifbasename);
for (p = buf; *p != '\0'; ++p)
if (!isalnum(*p))
*p = '_';
@@ -136,7 +132,7 @@ void process(const char *ifname, const char *ofname)
"\n"
"#include <sys/types.h>\n"
"\n",
- ifname
+ ifbasename
);
/* print structure */
@@ -190,7 +186,7 @@ void process(const char *ifname, const char *ofname)
"\n"
"#include <sys/types.h>\n"
"\n",
- obasename, /* header */
+ ifbasename, /* header */
obasename, /* ifndef */
obasename /* define */
);