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

Reply via email to