aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lush.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/lush.c b/src/lush.c
index fa70803..297e373 100644
--- a/src/lush.c
+++ b/src/lush.c
@@ -1386,13 +1386,45 @@ static void background_handler(int sig) {
int main(int argc, char *argv[]) {
// check if the --version arg was passed
- if (argc > 1 && strcmp(argv[1], "--version") == 0) {
+ if (argc > 2 && strcmp(argv[1], "--version") == 0) {
#ifdef LUSH_VERSION
printf("Lunar Shell, version %s\n", LUSH_VERSION);
#endif
return 0;
}
+ // check if being run in command string mode
+ if (argc > 2 && strcmp(argv[1], "-c") == 0) {
+ // init Lua state
+ lua_State *L = luaL_newstate();
+ luaL_openlibs(L);
+ lua_register_api(L);
+ lua_run_init(L);
+
+ // execute the command provided
+ char *command = argv[2];
+ char *expanded_command = lush_resolve_aliases(command);
+ char **commands = lush_split_commands(expanded_command);
+ int status = 0;
+ char ***args = lush_split_args(commands, &status);
+
+ if (status == -1) {
+ fprintf(stderr, "lush: Expected end of quoted string\n");
+ } else if (lush_run(L, args, status) != 0) {
+ exit(1);
+ }
+
+ // clean up
+ for (int i = 0; args[i]; i++) {
+ free(args[i]);
+ }
+ free(args);
+ free(commands);
+ free(expanded_command);
+ lua_close(L);
+ return 0;
+ }
+
// init lua state
lua_State *L = luaL_newstate();
luaL_openlibs(L);
='2015-10-04 15:04:59 +0200'>2015-10-04fix input text matchingGravatar Quentin Rameau 1-1/+1 2015-10-04fix incorrect ordering of match resultsGravatar Davide Del Zompo 1-2/+3 2015-10-04fix paste from clipboard (ctrl+shift+y)Gravatar Hiltjo Posthuma 1-0/+1 2015-09-28minor style fixGravatar Hiltjo Posthuma 1-1/+2 2015-09-28Remove function prototypes and reorder functions accordinglyGravatar FRIGN 1-80/+64 2015-09-28Untypedef struct itemGravatar FRIGN 1-10/+9 2015-09-28Fix the conversion from microseconds to nanosecondsGravatar Quentin Rameau 1-1/+1 2015-09-28Replace deprecated usleep() with nanosleep()Gravatar Quentin Rameau 1-2/+3 2015-09-28config.mk: use -std=c99Gravatar Hiltjo Posthuma 1-1/+1 2015-09-27dmenu: style improvementsGravatar Hiltjo Posthuma 1-204/+213 2015-09-27drw style improvementsGravatar Hiltjo Posthuma 2-93/+106 2015-09-27separate program-specific c99 bool and X11Gravatar Hiltjo Posthuma 2-11/+10 2015-09-27config.mk: fix _XOPEN_SOURCE=700 for getline()Gravatar Hiltjo Posthuma 1-1/+1 2015-09-27config.mk: improve feature test checkGravatar Hiltjo Posthuma 1-1/+1 2015-08-06Fixed typo introduced by shared codeGravatar Eric Pruitt 1-1/+1 2015-07-19stest: get rid of getopt, use suckless arg.hGravatar Hiltjo Posthuma 3-53/+141 2015-07-19config.mk: add FREETYPELIBS and FREETYPEINCGravatar Hiltjo Posthuma 1-3/+9 2015-07-19fix prompt color style how it used to beGravatar Hiltjo Posthuma 1-1/+1 2015-06-27Use libdraw: add Xft and fallback-fonts support to graphics libGravatar Hiltjo Posthuma 11-316/+684 2014-09-17applied Hiltjo's patch as suggested on the ml to fix ControlMask for C-j and C-mGravatar Anselm R Garbe 2-2/+5 2014-07-30fix crash with ctrl-enter as inputGravatar Hiltjo Posthuma 1-1/+2 2014-05-29updated copyright notices in LICENSE and dmenu.c fileGravatar Anselm R Garbe 2-2/+2 2013-08-13applied Martin Kühl's inverse matching flag to stestGravatar Anselm R Garbe 2-4/+7 2013-08-02applied Martti Kühne's dmenu monitor patchGravatar Anselm R Garbe 3-4/+14 2013-06-28accepted vi'is exit approach ^[ (suggested by Arkaduisz)Gravatar Anselm R Garbe 1-0/+2