mirror of
https://github.com/jarun/nnn.git
synced 2025-02-26 03:01:32 +00:00
Add NNN_OPTS environment variable feature (#476)
This commit is contained in:
parent
9b199b3253
commit
1ed015e988
1 changed files with 34 additions and 9 deletions
43
src/nnn.c
43
src/nnn.c
|
@ -553,16 +553,18 @@ static const char * const messages[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Supported configuration environment variables */
|
/* Supported configuration environment variables */
|
||||||
#define NNN_BMS 0
|
#define NNN_OPTS 0
|
||||||
#define NNN_PLUG 1
|
#define NNN_BMS 1
|
||||||
#define NNN_OPENER 2
|
#define NNN_PLUG 2
|
||||||
#define NNN_COLORS 3
|
#define NNN_OPENER 3
|
||||||
#define NNNLVL 4
|
#define NNN_COLORS 4
|
||||||
#define NNN_PIPE 5
|
#define NNNLVL 5
|
||||||
#define NNN_ARCHIVE 6 /* strings end here */
|
#define NNN_PIPE 6
|
||||||
#define NNN_TRASH 7 /* flags begin here */
|
#define NNN_ARCHIVE 7 /* strings end here */
|
||||||
|
#define NNN_TRASH 8 /* flags begin here */
|
||||||
|
|
||||||
static const char * const env_cfg[] = {
|
static const char * const env_cfg[] = {
|
||||||
|
"NNN_OPTS",
|
||||||
"NNN_BMS",
|
"NNN_BMS",
|
||||||
"NNN_PLUG",
|
"NNN_PLUG",
|
||||||
"NNN_OPENER",
|
"NNN_OPENER",
|
||||||
|
@ -6450,7 +6452,12 @@ int main(int argc, char *argv[])
|
||||||
mmask_t mask;
|
mmask_t mask;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:vVxh")) != -1) {
|
const char* const env_opts = xgetenv(env_cfg[NNN_OPTS], NULL);
|
||||||
|
int env_opts_idx = (env_opts ? (int)strlen(env_opts) : -1);
|
||||||
|
while ((opt = (--env_opts_idx >= 0 ? env_opts[env_opts_idx] : getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:vVxh"))) != -1) {
|
||||||
|
if (env_opts_idx >= 0) {
|
||||||
|
optarg = NULL;
|
||||||
|
}
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
cfg.mtime = 0;
|
cfg.mtime = 0;
|
||||||
|
@ -6495,6 +6502,9 @@ int main(int argc, char *argv[])
|
||||||
cfg.nonavopen = 1;
|
cfg.nonavopen = 1;
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
|
if (!optarg) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
cfg.picker = 1;
|
cfg.picker = 1;
|
||||||
if (optarg[0] == '-' && optarg[1] == '\0')
|
if (optarg[0] == '-' && optarg[1] == '\0')
|
||||||
cfg.pickraw = 1;
|
cfg.pickraw = 1;
|
||||||
|
@ -6524,24 +6534,39 @@ int main(int argc, char *argv[])
|
||||||
cfg.rollover = 0;
|
cfg.rollover = 0;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
|
if (!optarg) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
session = optarg;
|
session = optarg;
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
|
if (!optarg) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
idletimeout = atoi(optarg);
|
idletimeout = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
namecmpfn = &xstrverscasecmp;
|
namecmpfn = &xstrverscasecmp;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
|
if (env_opts_idx >= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
fprintf(stdout, "%s\n", VERSION);
|
fprintf(stdout, "%s\n", VERSION);
|
||||||
return _SUCCESS;
|
return _SUCCESS;
|
||||||
case 'x':
|
case 'x':
|
||||||
cfg.x11 = 1;
|
cfg.x11 = 1;
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
|
if (env_opts_idx >= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
usage();
|
usage();
|
||||||
return _SUCCESS;
|
return _SUCCESS;
|
||||||
default:
|
default:
|
||||||
|
if (env_opts_idx >= 0) {
|
||||||
|
fprintf(stderr, "Error: Illegal option '%c' in env var '%s'\n\n", opt, env_cfg[NNN_OPTS]);
|
||||||
|
}
|
||||||
usage();
|
usage();
|
||||||
return _FAILURE;
|
return _FAILURE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue