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

Reply via email to