1/* vi: set sw=4 ts=4: */ 2/* 3 * Mini rm implementation for busybox 4 * 5 * 6 * Copyright (C) 2001 Matt Kraai <kraai@alumni.carnegiemellon.edu> 7 * 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 22 * 23 */ 24 25#include <stdio.h> 26#include <time.h> 27#include <utime.h> 28#include <dirent.h> 29#include <errno.h> 30#include <unistd.h> 31#include <stdlib.h> 32#include <string.h> 33#include <getopt.h> 34#include "busybox.h" 35 36extern int rm_main(int argc, char **argv) 37{ 38 int status = 0; 39 int opt; 40 int flags = 0; 41 int i; 42 43 while ((opt = getopt(argc, argv, "fiRr")) != -1) { 44 switch (opt) { 45 case 'f': 46 flags &= ~FILEUTILS_INTERACTIVE; 47 flags |= FILEUTILS_FORCE; 48 break; 49 case 'i': 50 flags &= ~FILEUTILS_FORCE; 51 flags |= FILEUTILS_INTERACTIVE; 52 break; 53 case 'R': 54 case 'r': 55 flags |= FILEUTILS_RECUR; 56 break; 57 } 58 } 59 60 if (!(flags & FILEUTILS_FORCE) && optind == argc) 61 show_usage(); 62 63 for (i = optind; i < argc; i++) { 64 char *base = get_last_path_component(argv[i]); 65 66 if (strcmp(base, ".") == 0 || strcmp(base, "..") == 0) { 67 error_msg("cannot remove `.' or `..'"); 68 status = 1; 69 continue; 70 } 71 72 if (remove_file(argv[i], flags) < 0) 73 status = 1; 74 } 75 76 return status; 77} 78