On Sat, Apr 27, 2013 at 01:08:06AM -0400, Eitan Adler wrote: > 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.
In general we don't lik this because it makes things harder to debug. For libraries, yes, but for programs, no. -Otto > > 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