On Thu, Apr 25, 2013 at 10:16:32PM -0400, Eitan Adler wrote:
> Anyone have thoughts on the following?
> 
> commit 82c78ba923d8ce4a1bfbb309658c49021c8bb384
> Author: Eitan Adler <li...@eitanadler.com>
> Date:   Thu Apr 25 22:14:49 2013 -0400
> 
>     Take some improvements from DragonFlyBSD:
>       - add const where appropriate
>       - add static where appropriate
>       - fix a whitespace issues

The no-op changes look more correct to me.

I think the -x option seems a bit odd.  What is the use case?  At a
first thought, it seems to raise more questions than it resolves.

-- Brooks

>     Obtained from:    DragonFlyBSD
> 
> diff --git a/bin/rm/rm.c b/bin/rm/rm.c
> index 1014921..660042b 100644
> --- a/bin/rm/rm.c
> +++ b/bin/rm/rm.c
> @@ -63,15 +63,15 @@ static int rflag, Iflag, xflag;
>  static uid_t uid;
>  static volatile sig_atomic_t info;
> 
> -int  check(char *, char *, struct stat *);
> -int  check2(char **);
> -void checkdot(char **);
> -void checkslash(char **);
> -void rm_file(char **);
> -int  rm_overwrite(char *, struct stat *);
> -void rm_tree(char **);
> +static int   check(const char *, const char *, struct stat *);
> +static int   check2(char **);
> +static void  checkdot(char **);
> +static void  checkslash(char **);
> +static void  rm_file(char **);
> +static int   rm_overwrite(const char *, struct stat *);
> +static void  rm_tree(char **);
>  static void siginfo(int __unused);
> -void usage(void);
> +static void  usage(void);
> 
>  /*
>   * rm --
> @@ -173,7 +173,7 @@ main(int argc, char *argv[])
>       exit (eval);
>  }
> 
> -void
> +static void
>  rm_tree(char **argv)
>  {
>       FTS *fts;
> @@ -418,7 +418,7 @@ rm_file(char **argv)
>   * have kernel support.
>   */
>  int
> -rm_overwrite(char *file, struct stat *sbp)
> +rm_overwrite(const char *file, struct stat *sbp)
>  {
>       struct stat sb, sb2;
>       struct statfs fsb;
> @@ -484,8 +484,8 @@ err:      eval = 1;
>  }
> 
> 
> -int
> -check(char *path, char *name, struct stat *sp)
> +static int
> +check(const char *path, const char *name, struct stat *sp)
>  {
>       int ch, first;
>       char modep[15], *flagsp;
> @@ -496,7 +496,7 @@ check(char *path, char *name, struct stat *sp)
>       else {
>               /*
>                * If it's not a symbolic link and it's unwritable and we're
> -              * talking to a terminal, ask.  Symbolic links are excluded
> +              * talking to a terminal, ask.  Symbolic links are excluded
>                * because their permissions are meaningless.  Check stdin_ok
>                * first because we may not have stat'ed the file.
>                */
> @@ -529,7 +529,7 @@ check(char *path, char *name, struct stat *sp)
>  }
> 
>  #define ISSLASH(a)   ((a)[0] == '/' && (a)[1] == '\0')
> -void
> +static void
>  checkslash(char **argv)
>  {
>       char **t, **u;
> @@ -549,7 +549,7 @@ checkslash(char **argv)
>       }
>  }
> 
> -int
> +static int
>  check2(char **argv)
>  {
>       struct stat st;
> @@ -600,7 +600,7 @@ check2(char **argv)
>  }
> 
>  #define ISDOT(a)     ((a)[0] == '.' && (!(a)[1] || ((a)[1] == '.' && 
> !(a)[2])))
> -void
> +static void
>  checkdot(char **argv)
>  {
>       char *p, **save, **t;
> @@ -624,7 +624,7 @@ checkdot(char **argv)
>       }
>  }
> 
> -void
> +static void
>  usage(void)
>  {
> 
> 
> commit 4799c480694b379f73483998e11341bffd3ffa3e
> Author: Eitan Adler <li...@eitanadler.com>
> Date:   Thu Apr 25 22:03:28 2013 -0400
> 
>     Add -x option to avoid crossing mount points when removing a hierarchy.
> 
>     Inspired by:      DragonflyBSD
> 
> diff --git a/bin/rm/rm.1 b/bin/rm/rm.1
> index 3588f38..824b627 100644
> --- a/bin/rm/rm.1
> +++ b/bin/rm/rm.1
> @@ -32,7 +32,7 @@
>  .\"  @(#)rm.1        8.5 (Berkeley) 12/5/94
>  .\" $FreeBSD$
>  .\"
> -.Dd March 15, 2013
> +.Dd April 25, 2013
>  .Dt RM 1
>  .Os
>  .Sh NAME
> @@ -42,7 +42,7 @@
>  .Sh SYNOPSIS
>  .Nm
>  .Op Fl f | i
> -.Op Fl dIPRrvW
> +.Op Fl dIPRrvWx
>  .Ar
>  .Nm unlink
>  .Ar file
> @@ -132,6 +132,8 @@ Attempt to undelete the named files.
>  Currently, this option can only be used to recover
>  files covered by whiteouts in a union file system (see
>  .Xr undelete 2 ) .
> +.It Fl x
> +When removing a hierarchy, do not cross mount points.
>  .El
>  .Pp
>  The
> diff --git a/bin/rm/rm.c b/bin/rm/rm.c
> index a450057..1014921 100644
> --- a/bin/rm/rm.c
> +++ b/bin/rm/rm.c
> @@ -59,7 +59,7 @@ __FBSDID("$FreeBSD$");
>  #include <unistd.h>
> 
>  static int dflag, eval, fflag, iflag, Pflag, vflag, Wflag, stdin_ok;
> -static int rflag, Iflag;
> +static int rflag, Iflag, xflag;
>  static uid_t uid;
>  static volatile sig_atomic_t info;
> 
> @@ -106,8 +106,8 @@ main(int argc, char *argv[])
>               exit(eval);
>       }
> 
> -     Pflag = rflag = 0;
> -     while ((ch = getopt(argc, argv, "dfiIPRrvW")) != -1)
> +     Pflag = rflag = xflag = 0;
> +     while ((ch = getopt(argc, argv, "dfiIPRrvWx")) != -1)
>               switch(ch) {
>               case 'd':
>                       dflag = 1;
> @@ -136,6 +136,9 @@ main(int argc, char *argv[])
>               case 'W':
>                       Wflag = 1;
>                       break;
> +             case 'x':
> +                     xflag = 1;
> +                     break;
>               default:
>                       usage();
>               }
> @@ -196,6 +199,8 @@ rm_tree(char **argv)
>               flags |= FTS_NOSTAT;
>       if (Wflag)
>               flags |= FTS_WHITEOUT;
> +     if (xflag)
> +             flags |= FTS_XDEV;
>       if (!(fts = fts_open(argv, flags, NULL))) {
>               if (fflag && errno == ENOENT)
>                       return;
> @@ -624,7 +629,7 @@ usage(void)
>  {
> 
>       (void)fprintf(stderr, "%s\n%s\n",
> -         "usage: rm [-f | -i] [-dIPRrvW] file ...",
> +         "usage: rm [-f | -i] [-dIPRrvWx] file ...",
>           "       unlink file");
>       exit(EX_USAGE);
>  }
> 
> 
> -- 
> Eitan Adler
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"
> 

Attachment: pgpdaUPNNUSPj.pgp
Description: PGP signature

Reply via email to