Sfoglia il codice sorgente

Modularize cp, mv, rm

master
Arun Prakash Jana 6 anni fa
parent
commit
bf7a5f25aa
Non sono state trovate chiavi note per questa firma nel database ID Chiave GPG: A75979F35C080412
1 ha cambiato i file con 42 aggiunte e 28 eliminazioni
  1. +42
    -28
      src/nnn.c

+ 42
- 28
src/nnn.c Vedi File

@@ -1142,6 +1142,44 @@ static bool createdir(const char *path, mode_t mode)
return FALSE;
}

static void cpstr(char *buf)
{
snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s -%c src %s src .", g_cppath, REPLACE_STR, cp);
#else
"cat %s | xargs -0 -o -%c src cp -iRp src .", g_cppath, REPLACE_STR);
#endif
}

static void mvstr(char *buf)
{
snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s -%c src %s src .", g_cppath, REPLACE_STR, mv);
#else
"cat %s | xargs -0 -o -%c src mv -i src .", g_cppath, REPLACE_STR);
#endif
}

static void rmmulstr(char *buf)
{
snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s rm -%cr",
#else
"cat %s | xargs -0 -o rm -%cr",
#endif
g_cppath, confirm_force());
}

static void xrm(char *path)
{
char rm_opts[] = {'-', confirm_force(), 'r'};

spawn("rm", rm_opts, path, NULL, F_NORMAL | F_SIGINT);
}

static int digit_compare(const char *a, const char *b)
{
while (*a && *b && *a == *b)
@@ -3457,33 +3495,13 @@ nochange:

switch (sel) {
case SEL_CP:
snprintf(g_buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s -%c src %s src .",
g_cppath, REPLACE_STR, cp);
#else
"cat %s | xargs -0 -o -%c src cp -iRp src .",
g_cppath, REPLACE_STR);
#endif
cpstr(g_buf);
break;
case SEL_MV:
snprintf(g_buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s -%c src %s src .",
g_cppath, REPLACE_STR, mv);
#else
"cat %s | xargs -0 -o -%c src mv -i src .",
g_cppath, REPLACE_STR);
#endif
mvstr(g_buf);
break;
default: /* SEL_RMMUL */
snprintf(g_buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s rm -%cr",
#else
"cat %s | xargs -0 -o rm -%cr",
#endif
g_cppath, confirm_force());
rmmulstr(g_buf);
break;
}

@@ -3500,12 +3518,8 @@ nochange:
if (!ndents)
break;

char rm_opts[] = "-ir";

rm_opts[1] = confirm_force();

mkpath(path, dents[cur].name, newpath);
spawn("rm", rm_opts, newpath, NULL, F_NORMAL | F_SIGINT);
xrm(newpath);

/* Don't optimize cur if filtering is on */
if (!cfg.filtermode && cur && access(newpath, F_OK) == -1)


Loading…
Annulla
Salva