Hey all, Time for attempt #2!
Adding static to internal function allows the compiler to better detect dead code (functions, variables, etc) and makes it easier for the compiler to optimize; e.g., since it knows a function will only called once it can inline code; or not output a symbol for a certain function. I'm offering this patch for review: Index: rm.c =================================================================== RCS file: /cvs/src/bin/rm/rm.c,v retrieving revision 1.27 diff -u -r1.27 rm.c --- rm.c 5 Sep 2012 19:49:08 -0000 1.27 +++ rm.c 27 Apr 2013 04:26:18 -0000 @@ -49,15 +49,15 @@ extern char *__progname; -int dflag, eval, fflag, iflag, Pflag, stdin_ok; +static int dflag, eval, fflag, iflag, Pflag, stdin_ok; -int check(char *, char *, struct stat *); -void checkdot(char **); -void rm_file(char **); -int rm_overwrite(char *, struct stat *); -int pass(int, off_t, char *, size_t); -void rm_tree(char **); -void usage(void); +static int check(char *, char *, struct stat *); +static void checkdot(char **); +static void rm_file(char **); +static int rm_overwrite(char *, struct stat *); +static int pass(int, off_t, char *, size_t); +static void rm_tree(char **); +static void usage(void); /* * rm -- @@ -117,7 +117,7 @@ exit (eval); } -void +static void rm_tree(char **argv) { FTS *fts; @@ -217,7 +217,7 @@ fts_close(fts); } -void +static void rm_file(char **argv) { struct stat sb; @@ -271,7 +271,7 @@ * kernel support. * Returns 1 for success. */ -int +static int rm_overwrite(char *file, struct stat *sbp) { struct stat sb, sb2; @@ -324,7 +324,7 @@ return (0); } -int +static int pass(int fd, off_t len, char *buf, size_t bsize) { size_t wlen; @@ -338,7 +338,7 @@ return (1); } -int +static int check(char *path, char *name, struct stat *sp) { int ch, first; @@ -380,7 +380,7 @@ * trailing slashes have been removed, we'll remove them here. */ #define ISDOT(a) ((a)[0] == '.' && (!(a)[1] || ((a)[1] == '.' && !(a)[2]))) -void +static void checkdot(char **argv) { char *p, **save, **t; @@ -411,7 +411,7 @@ } } -void +static void usage(void) { (void)fprintf(stderr, "usage: %s [-dfiPRr] file ...\n", __progname); -- Eitan Adler