rm: Don't attempt to remove . or .. - sbase - suckless unix tools
 (HTM) git clone git://git.suckless.org/sbase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 3f7c7c2497037ff29c84464059ea9a6442596354
 (DIR) parent 0df8cdc12d7a5600ad0c2b9420a14be4e2af340b
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Thu, 24 Apr 2025 08:51:22 +0200
       
       rm: Don't attempt to remove . or ..
       
       POSIX explicitely mandates to ignore . or .. to avoid
       pitfals like rm -r .* and no having files that begin
       with a dot.
       
       Diffstat:
         M rm.c                                |       7 +++++--
       
       1 file changed, 5 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/rm.c b/rm.c
       @@ -1,5 +1,6 @@
        /* See LICENSE file for copyright and license details. */
        #include <fcntl.h>
       +#include  <string.h>
        
        #include "fs.h"
        #include "util.h"
       @@ -37,8 +38,10 @@ main(int argc, char *argv[])
                                return 0;
                }
        
       -        for (; *argv; argc--, argv++)
       -                recurse(AT_FDCWD, *argv, NULL, &r);
       +        for (; *argv; argc--, argv++) {
       +                if (strcmp(*argv, ".") && strcmp(*argv, ".."))
       +                        recurse(AT_FDCWD, *argv, NULL, &r);
       +        }
        
                return rm_status || recurse_status;
        }