1*7c356e86SAndroid Build Coastguard Worker/*- 2*7c356e86SAndroid Build Coastguard Worker * Copyright (c) 2013, 2014, 2015, 2017 3*7c356e86SAndroid Build Coastguard Worker * mirabilos <[email protected]> 4*7c356e86SAndroid Build Coastguard Worker * 5*7c356e86SAndroid Build Coastguard Worker * Provided that these terms and disclaimer and all copyright notices 6*7c356e86SAndroid Build Coastguard Worker * are retained or reproduced in an accompanying document, permission 7*7c356e86SAndroid Build Coastguard Worker * is granted to deal in this work without restriction, including un- 8*7c356e86SAndroid Build Coastguard Worker * limited rights to use, publicly perform, distribute, sell, modify, 9*7c356e86SAndroid Build Coastguard Worker * merge, give away, or sublicence. 10*7c356e86SAndroid Build Coastguard Worker * 11*7c356e86SAndroid Build Coastguard Worker * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to 12*7c356e86SAndroid Build Coastguard Worker * the utmost extent permitted by applicable law, neither express nor 13*7c356e86SAndroid Build Coastguard Worker * implied; without malicious intent or gross negligence. In no event 14*7c356e86SAndroid Build Coastguard Worker * may a licensor, author or contributor be held liable for indirect, 15*7c356e86SAndroid Build Coastguard Worker * direct, other damage, loss, or other issues arising in any way out 16*7c356e86SAndroid Build Coastguard Worker * of dealing in the work, even if advised of the possibility of such 17*7c356e86SAndroid Build Coastguard Worker * damage or existence of a defect, except proven that it results out 18*7c356e86SAndroid Build Coastguard Worker * of said person's immediate fault when using the work as intended. 19*7c356e86SAndroid Build Coastguard Worker */ 20*7c356e86SAndroid Build Coastguard Worker 21*7c356e86SAndroid Build Coastguard Worker@SHFLAGS_DEFNS 22*7c356e86SAndroid Build Coastguard Worker__RCSID("$MirOS: src/bin/mksh/sh_flags.opt,v 1.9 2020/05/16 22:38:25 tg Exp $"); 23*7c356e86SAndroid Build Coastguard Worker@SHFLAGS_ENUMS 24*7c356e86SAndroid Build Coastguard Worker#define FN(sname,cname,flags,ochar) cname, 25*7c356e86SAndroid Build Coastguard Worker#define F0(sname,cname,flags,ochar) cname = 0, 26*7c356e86SAndroid Build Coastguard Worker@SHFLAGS_ITEMS 27*7c356e86SAndroid Build Coastguard Worker#define FN(sname,cname,flags,ochar) ((const char *)(&shoptione_ ## cname)) + 2, 28*7c356e86SAndroid Build Coastguard Worker@@ 29*7c356e86SAndroid Build Coastguard Worker 30*7c356e86SAndroid Build Coastguard Worker/* special cases */ 31*7c356e86SAndroid Build Coastguard Worker 32*7c356e86SAndroid Build Coastguard Worker<o:|!SHFLAGS_NOT_CMD 33*7c356e86SAndroid Build Coastguard Worker<T:|!SHFLAGS_NOT_CMD 34*7c356e86SAndroid Build Coastguard Worker<A:|!SHFLAGS_NOT_SET 35*7c356e86SAndroid Build Coastguard Worker<o;|!SHFLAGS_NOT_SET 36*7c356e86SAndroid Build Coastguard Worker<s|!SHFLAGS_NOT_SET 37*7c356e86SAndroid Build Coastguard Worker 38*7c356e86SAndroid Build Coastguard Worker/* 39*7c356e86SAndroid Build Coastguard Worker * options are sorted by their longnames 40*7c356e86SAndroid Build Coastguard Worker */ 41*7c356e86SAndroid Build Coastguard Worker 42*7c356e86SAndroid Build Coastguard Worker/* -a all new parameters are created with the export attribute */ 43*7c356e86SAndroid Build Coastguard Worker>a| 44*7c356e86SAndroid Build Coastguard WorkerF0("allexport", FEXPORT, OF_ANY 45*7c356e86SAndroid Build Coastguard Worker 46*7c356e86SAndroid Build Coastguard Worker/* ./. bgnice */ 47*7c356e86SAndroid Build Coastguard Worker>| HAVE_NICE 48*7c356e86SAndroid Build Coastguard WorkerFN("bgnice", FBGNICE, OF_ANY 49*7c356e86SAndroid Build Coastguard Worker 50*7c356e86SAndroid Build Coastguard Worker/* ./. enable {} globbing (non-standard) */ 51*7c356e86SAndroid Build Coastguard Worker>| 52*7c356e86SAndroid Build Coastguard WorkerFN("braceexpand", FBRACEEXPAND, OF_ANY 53*7c356e86SAndroid Build Coastguard Worker 54*7c356e86SAndroid Build Coastguard Worker/* ./. Emacs command line editing mode */ 55*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 56*7c356e86SAndroid Build Coastguard WorkerFN("emacs", FEMACS, OF_ANY 57*7c356e86SAndroid Build Coastguard Worker 58*7c356e86SAndroid Build Coastguard Worker/* -e quit on error */ 59*7c356e86SAndroid Build Coastguard Worker>e| 60*7c356e86SAndroid Build Coastguard WorkerFN("errexit", FERREXIT, OF_ANY 61*7c356e86SAndroid Build Coastguard Worker 62*7c356e86SAndroid Build Coastguard Worker/* ./. Emacs command line editing mode, gmacs variant */ 63*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 64*7c356e86SAndroid Build Coastguard WorkerFN("gmacs", FGMACS, OF_ANY 65*7c356e86SAndroid Build Coastguard Worker 66*7c356e86SAndroid Build Coastguard Worker/* ./. reading EOF does not exit */ 67*7c356e86SAndroid Build Coastguard Worker>| 68*7c356e86SAndroid Build Coastguard WorkerFN("ignoreeof", FIGNOREEOF, OF_ANY 69*7c356e86SAndroid Build Coastguard Worker 70*7c356e86SAndroid Build Coastguard Worker/* ./. inherit -x flag */ 71*7c356e86SAndroid Build Coastguard Worker>| 72*7c356e86SAndroid Build Coastguard WorkerFN("inherit-xtrace", FXTRACEREC, OF_ANY 73*7c356e86SAndroid Build Coastguard Worker 74*7c356e86SAndroid Build Coastguard Worker/* -i interactive shell */ 75*7c356e86SAndroid Build Coastguard Worker>i|!SHFLAGS_NOT_CMD 76*7c356e86SAndroid Build Coastguard WorkerFN("interactive", FTALKING, OF_CMDLINE 77*7c356e86SAndroid Build Coastguard Worker 78*7c356e86SAndroid Build Coastguard Worker/* -k name=value are recognised anywhere */ 79*7c356e86SAndroid Build Coastguard Worker>k| 80*7c356e86SAndroid Build Coastguard WorkerFN("keyword", FKEYWORD, OF_ANY 81*7c356e86SAndroid Build Coastguard Worker 82*7c356e86SAndroid Build Coastguard Worker/* -l login shell */ 83*7c356e86SAndroid Build Coastguard Worker>l|!SHFLAGS_NOT_CMD 84*7c356e86SAndroid Build Coastguard WorkerFN("login", FLOGIN, OF_CMDLINE 85*7c356e86SAndroid Build Coastguard Worker 86*7c356e86SAndroid Build Coastguard Worker/* -X mark dirs with / in file name completion */ 87*7c356e86SAndroid Build Coastguard Worker>X| 88*7c356e86SAndroid Build Coastguard WorkerFN("markdirs", FMARKDIRS, OF_ANY 89*7c356e86SAndroid Build Coastguard Worker 90*7c356e86SAndroid Build Coastguard Worker/* -m job control monitoring */ 91*7c356e86SAndroid Build Coastguard Worker>m|!MKSH_UNEMPLOYED 92*7c356e86SAndroid Build Coastguard WorkerFN("monitor", FMONITOR, OF_ANY 93*7c356e86SAndroid Build Coastguard Worker 94*7c356e86SAndroid Build Coastguard Worker/* -C don't overwrite existing files */ 95*7c356e86SAndroid Build Coastguard Worker>C| 96*7c356e86SAndroid Build Coastguard WorkerFN("noclobber", FNOCLOBBER, OF_ANY 97*7c356e86SAndroid Build Coastguard Worker 98*7c356e86SAndroid Build Coastguard Worker/* -n don't execute any commands */ 99*7c356e86SAndroid Build Coastguard Worker>n| 100*7c356e86SAndroid Build Coastguard WorkerFN("noexec", FNOEXEC, OF_ANY 101*7c356e86SAndroid Build Coastguard Worker 102*7c356e86SAndroid Build Coastguard Worker/* -f don't do file globbing */ 103*7c356e86SAndroid Build Coastguard Worker>f| 104*7c356e86SAndroid Build Coastguard WorkerFN("noglob", FNOGLOB, OF_ANY 105*7c356e86SAndroid Build Coastguard Worker 106*7c356e86SAndroid Build Coastguard Worker/* ./. don't kill running jobs when login shell exits */ 107*7c356e86SAndroid Build Coastguard Worker>| 108*7c356e86SAndroid Build Coastguard WorkerFN("nohup", FNOHUP, OF_ANY 109*7c356e86SAndroid Build Coastguard Worker 110*7c356e86SAndroid Build Coastguard Worker/* ./. don't save functions in history (no effect) */ 111*7c356e86SAndroid Build Coastguard Worker>| 112*7c356e86SAndroid Build Coastguard WorkerFN("nolog", FNOLOG, OF_ANY 113*7c356e86SAndroid Build Coastguard Worker 114*7c356e86SAndroid Build Coastguard Worker/* -b asynchronous job completion notification */ 115*7c356e86SAndroid Build Coastguard Worker>b|!MKSH_UNEMPLOYED 116*7c356e86SAndroid Build Coastguard WorkerFN("notify", FNOTIFY, OF_ANY 117*7c356e86SAndroid Build Coastguard Worker 118*7c356e86SAndroid Build Coastguard Worker/* -u using an unset variable is an error */ 119*7c356e86SAndroid Build Coastguard Worker>u| 120*7c356e86SAndroid Build Coastguard WorkerFN("nounset", FNOUNSET, OF_ANY 121*7c356e86SAndroid Build Coastguard Worker 122*7c356e86SAndroid Build Coastguard Worker/* ./. don't do logical cds/pwds (non-standard) */ 123*7c356e86SAndroid Build Coastguard Worker>| 124*7c356e86SAndroid Build Coastguard WorkerFN("physical", FPHYSICAL, OF_ANY 125*7c356e86SAndroid Build Coastguard Worker 126*7c356e86SAndroid Build Coastguard Worker/* ./. errorlevel of a pipeline is the rightmost nonzero value */ 127*7c356e86SAndroid Build Coastguard Worker>| 128*7c356e86SAndroid Build Coastguard WorkerFN("pipefail", FPIPEFAIL, OF_ANY 129*7c356e86SAndroid Build Coastguard Worker 130*7c356e86SAndroid Build Coastguard Worker/* ./. adhere more closely to POSIX even when undesirable */ 131*7c356e86SAndroid Build Coastguard Worker>| 132*7c356e86SAndroid Build Coastguard WorkerFN("posix", FPOSIX, OF_ANY 133*7c356e86SAndroid Build Coastguard Worker 134*7c356e86SAndroid Build Coastguard Worker/* -p privileged shell (suid) */ 135*7c356e86SAndroid Build Coastguard Worker>p| 136*7c356e86SAndroid Build Coastguard WorkerFN("privileged", FPRIVILEGED, OF_ANY 137*7c356e86SAndroid Build Coastguard Worker 138*7c356e86SAndroid Build Coastguard Worker/* -r restricted shell */ 139*7c356e86SAndroid Build Coastguard Worker>r|!SHFLAGS_NOT_CMD 140*7c356e86SAndroid Build Coastguard WorkerFN("restricted", FRESTRICTED, OF_CMDLINE 141*7c356e86SAndroid Build Coastguard Worker 142*7c356e86SAndroid Build Coastguard Worker/* ./. kludge mode for better compat with traditional sh (OS-specific) */ 143*7c356e86SAndroid Build Coastguard Worker>| 144*7c356e86SAndroid Build Coastguard WorkerFN("sh", FSH, OF_ANY 145*7c356e86SAndroid Build Coastguard Worker 146*7c356e86SAndroid Build Coastguard Worker/* -s (invocation) parse stdin (pseudo non-standard) */ 147*7c356e86SAndroid Build Coastguard Worker>s|!SHFLAGS_NOT_CMD 148*7c356e86SAndroid Build Coastguard WorkerFN("stdin", FSTDIN, OF_CMDLINE 149*7c356e86SAndroid Build Coastguard Worker 150*7c356e86SAndroid Build Coastguard Worker/* -h create tracked aliases for all commands */ 151*7c356e86SAndroid Build Coastguard Worker>h| 152*7c356e86SAndroid Build Coastguard WorkerFN("trackall", FTRACKALL, OF_ANY 153*7c356e86SAndroid Build Coastguard Worker 154*7c356e86SAndroid Build Coastguard Worker/* -U enable UTF-8 processing (non-standard) */ 155*7c356e86SAndroid Build Coastguard Worker>U| 156*7c356e86SAndroid Build Coastguard WorkerFN("utf8-mode", FUNNYCODE, OF_ANY 157*7c356e86SAndroid Build Coastguard Worker 158*7c356e86SAndroid Build Coastguard Worker/* -v echo input */ 159*7c356e86SAndroid Build Coastguard Worker>v| 160*7c356e86SAndroid Build Coastguard WorkerFN("verbose", FVERBOSE, OF_ANY 161*7c356e86SAndroid Build Coastguard Worker 162*7c356e86SAndroid Build Coastguard Worker/* ./. Vi command line editing mode */ 163*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 164*7c356e86SAndroid Build Coastguard WorkerFN("vi", FVI, OF_ANY 165*7c356e86SAndroid Build Coastguard Worker 166*7c356e86SAndroid Build Coastguard Worker/* ./. enable ESC as file name completion character (non-standard) */ 167*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 168*7c356e86SAndroid Build Coastguard WorkerFN("vi-esccomplete", FVIESCCOMPLETE, OF_ANY 169*7c356e86SAndroid Build Coastguard Worker 170*7c356e86SAndroid Build Coastguard Worker/* ./. enable Tab as file name completion character (non-standard) */ 171*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 172*7c356e86SAndroid Build Coastguard WorkerFN("vi-tabcomplete", FVITABCOMPLETE, OF_ANY 173*7c356e86SAndroid Build Coastguard Worker 174*7c356e86SAndroid Build Coastguard Worker/* ./. always read in raw mode (no effect) */ 175*7c356e86SAndroid Build Coastguard Worker>|!MKSH_NO_CMDLINE_EDITING 176*7c356e86SAndroid Build Coastguard WorkerFN("viraw", FVIRAW, OF_ANY 177*7c356e86SAndroid Build Coastguard Worker 178*7c356e86SAndroid Build Coastguard Worker/* -x execution trace (display commands as they are run) */ 179*7c356e86SAndroid Build Coastguard Worker>x| 180*7c356e86SAndroid Build Coastguard WorkerFN("xtrace", FXTRACE, OF_ANY 181*7c356e86SAndroid Build Coastguard Worker 182*7c356e86SAndroid Build Coastguard Worker/* -c (invocation) execute specified command */ 183*7c356e86SAndroid Build Coastguard Worker>c|!SHFLAGS_NOT_CMD 184*7c356e86SAndroid Build Coastguard WorkerFN("", FCOMMAND, OF_CMDLINE 185*7c356e86SAndroid Build Coastguard Worker 186*7c356e86SAndroid Build Coastguard Worker/* 187*7c356e86SAndroid Build Coastguard Worker * anonymous flags: used internally by shell only (not visible to user) 188*7c356e86SAndroid Build Coastguard Worker */ 189*7c356e86SAndroid Build Coastguard Worker 190*7c356e86SAndroid Build Coastguard Worker/* ./. (internal) initial shell was interactive */ 191*7c356e86SAndroid Build Coastguard Worker>| 192*7c356e86SAndroid Build Coastguard WorkerFN("", FTALKING_I, OF_INTERNAL 193*7c356e86SAndroid Build Coastguard Worker 194*7c356e86SAndroid Build Coastguard Worker|SHFLAGS_OPTCS 195