Changes in uspace/app/bdsh/cmds/modules/rm/rm.c [081d60f:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/cmds/modules/rm/rm.c
r081d60f r9d58539 46 46 #define RM_VERSION "0.0.1" 47 47 48 static rm_job_t rm; 49 48 50 static struct option const long_options[] = { 49 51 { "help", no_argument, 0, 'h' }, … … 55 57 }; 56 58 57 /* Return values for rm_scope() */58 #define RM_BOGUS 059 #define RM_FILE 160 #define RM_DIR 261 62 /* Flags for rm_update() */63 #define _RM_ENTRY 064 #define _RM_ADVANCE 165 #define _RM_REWIND 266 #define _RM_EXIT 367 68 /* A simple job structure */69 typedef struct {70 /* Options set at run time */71 unsigned int force; /* -f option */72 unsigned int recursive; /* -r option */73 unsigned int safe; /* -s option */74 75 /* Keeps track of the job in progress */76 int advance; /* How far deep we've gone since entering */77 DIR *entry; /* Entry point to the tree being removed */78 char *owd; /* Where we were when we invoked rm */79 char *cwd; /* Current directory being transversed */80 char *nwd; /* Next directory to be transversed */81 82 /* Counters */83 int f_removed; /* Number of files unlinked */84 int d_removed; /* Number of directories unlinked */85 } rm_job_t;86 87 static rm_job_t rm;88 89 static unsigned int rm_recursive(const char *);90 91 59 static unsigned int rm_start(rm_job_t *rm) 92 60 { … … 127 95 if (NULL != rm->cwd) 128 96 free(rm->cwd); 129 }130 131 static unsigned int rm_single(const char *path)132 {133 if (unlink(path)) {134 cli_error(CL_EFAIL, "rm: could not remove file %s", path);135 return 1;136 }137 return 0;138 }139 140 static unsigned int rm_scope(const char *path)141 {142 int fd;143 DIR *dirp;144 145 dirp = opendir(path);146 if (dirp) {147 closedir(dirp);148 return RM_DIR;149 }150 151 fd = open(path, O_RDONLY);152 if (fd > 0) {153 close(fd);154 return RM_FILE;155 }156 157 return RM_BOGUS;158 97 } 159 98 … … 215 154 216 155 return ret + 1; 156 } 157 158 static unsigned int rm_single(const char *path) 159 { 160 if (unlink(path)) { 161 cli_error(CL_EFAIL, "rm: could not remove file %s", path); 162 return 1; 163 } 164 return 0; 165 } 166 167 static unsigned int rm_scope(const char *path) 168 { 169 int fd; 170 DIR *dirp; 171 172 dirp = opendir(path); 173 if (dirp) { 174 closedir(dirp); 175 return RM_DIR; 176 } 177 178 fd = open(path, O_RDONLY); 179 if (fd > 0) { 180 close(fd); 181 return RM_FILE; 182 } 183 184 return RM_BOGUS; 217 185 } 218 186
Note:
See TracChangeset
for help on using the changeset viewer.