[patch] should crunchgen use basename(3) instead of homebrew code?

Eitan Adler lists at eitanadler.com
Sun Jan 2 07:37:22 UTC 2011


I'm not sure about this patch because of the behavior change of
-    slash = strrchr(path, '/');
-    basename = slash? slash+1 : path;
+    bn = basename(slash);

CCed to the last few people to touch the relevant code (via svn praise)

Index: crunched_main.c
===================================================================
--- crunched_main.c	(revision 216884)
+++ crunched_main.c	(working copy)
@@ -33,6 +33,7 @@
  *	or calls one of them based on argv[1].   This allows the testing of
  *	the crunched binary without creating all the links.
  */
+#include <libgen.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -47,22 +48,21 @@

 int main(int argc, char **argv, char **envp)
 {
-    char *slash, *basename;
+    char *slash, *bn;
     struct stub *ep;

     if(argv[0] == NULL || *argv[0] == '\0')
 	crunched_usage();

-    slash = strrchr(argv[0], '/');
-    basename = slash? slash+1 : argv[0];
+    bn = basename(argv[0]);

     for(ep=entry_points; ep->name != NULL; ep++)
-	if(!strcmp(basename, ep->name)) break;
+	if(!strcmp(bn, ep->name)) break;

     if(ep->name)
 	return ep->f(argc, argv, envp);
     else {
-	fprintf(stderr, "%s: %s not compiled in\n", EXECNAME, basename);
+	fprintf(stderr, "%s: %s not compiled in\n", EXECNAME, bn);
 	crunched_usage();
     }
 }
@@ -70,14 +70,13 @@

 int crunched_here(char *path)
 {
-    char *slash, *basename;
+    char *slash, *bn;
     struct stub *ep;

-    slash = strrchr(path, '/');
-    basename = slash? slash+1 : path;
+    bn = basename(slash);

     for(ep=entry_points; ep->name != NULL; ep++)
-	if(!strcmp(basename, ep->name))
+	if(!strcmp(bn, ep->name))
 	    return 1;
     return 0;
 }


-- 
Eitan Adler


More information about the freebsd-hackers mailing list