Subversion Repositories HelenOS

Rev

Rev 3386 | Rev 4327 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3386 Rev 4153
Line 31... Line 31...
31
#include <stdio.h>
31
#include <stdio.h>
32
#include <stdlib.h>
32
#include <stdlib.h>
33
#include <unistd.h>
33
#include <unistd.h>
34
#include <fcntl.h>
34
#include <fcntl.h>
35
#include <dirent.h>
35
#include <dirent.h>
36
#include <assert.h>
-
 
37
#include <getopt.h>
36
#include <getopt.h>
38
 
37
 
39
#include "config.h"
38
#include "config.h"
40
#include "errors.h"
39
#include "errors.h"
41
#include "util.h"
40
#include "util.h"
Line 142... Line 141...
142
 
141
 
143
    return RM_BOGUS;
142
    return RM_BOGUS;
144
}
143
}
145
 
144
 
146
/* Dispays help for rm in various levels */
145
/* Dispays help for rm in various levels */
147
void * help_cmd_rm(unsigned int level)
146
void help_cmd_rm(unsigned int level)
148
{
147
{
149
    if (level == HELP_SHORT) {
148
    if (level == HELP_SHORT) {
150
        printf("`%s' removes files and directories.\n", cmdname);
149
        printf("`%s' removes files and directories.\n", cmdname);
151
    } else {
150
    } else {
152
        help_cmd_rm(HELP_SHORT);
151
        help_cmd_rm(HELP_SHORT);
Line 159... Line 158...
159
        "  -f, --force      Do not prompt prior to removing files\n"
158
        "  -f, --force      Do not prompt prior to removing files\n"
160
        "  -s, --safe       Stop if directories change during removal\n\n"
159
        "  -s, --safe       Stop if directories change during removal\n\n"
161
        "Currently, %s is under development, some options don't work.\n",
160
        "Currently, %s is under development, some options don't work.\n",
162
        cmdname, cmdname);
161
        cmdname, cmdname);
163
    }
162
    }
164
    return CMD_VOID;
163
    return;
165
}
164
}
166
 
165
 
167
/* Main entry point for rm, accepts an array of arguments */
166
/* Main entry point for rm, accepts an array of arguments */
168
int * cmd_rm(char **argv)
167
int cmd_rm(char **argv)
169
{
168
{
170
    unsigned int argc;
169
    unsigned int argc;
171
    unsigned int i, scope, ret = 0;
170
    unsigned int i, scope, ret = 0;
172
    int c, opt_ind;
171
    int c, opt_ind;
173
    size_t len;
172
    size_t len;
Line 217... Line 216...
217
 
216
 
218
    i = optind;
217
    i = optind;
219
    while (NULL != argv[i]) {
218
    while (NULL != argv[i]) {
220
        len = strlen(argv[i]) + 2;
219
        len = strlen(argv[i]) + 2;
221
        buff = (char *) realloc(buff, len);
220
        buff = (char *) realloc(buff, len);
222
        assert(buff != NULL);
221
        if (buff == NULL) {
-
 
222
            printf("rm: out of memory\n");
-
 
223
            ret = 1;
-
 
224
            break;
-
 
225
        }
223
        memset(buff, 0, sizeof(buff));
226
        memset(buff, 0, sizeof(buff));
224
        snprintf(buff, len, argv[i]);
227
        snprintf(buff, len, argv[i]);
225
 
228
 
226
        scope = rm_scope(buff);
229
        scope = rm_scope(buff);
227
        switch (scope) {
230
        switch (scope) {