diff --git a/src/launch.c b/src/launch.c new file mode 100644 index 00000000..b1a26af8 --- /dev/null +++ b/src/launch.c @@ -0,0 +1,58 @@ +/********************************************************************************\ +* +* New Start: A modern Arch workflow built with an emphasis on functionality. +* Copyright (C) 2017 Donovan Glover +* +* Launch: A command line launcher for users with a terminal-centric workflow. +* Copyright (C) 2017 Maxwell Anselm +* https://github.com/silverhammermba/launch +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +\********************************************************************************/ + +#include +#include +#include + +int main(int argc, char** argv) { + if(argc <= 1) return 1; + + pid_t child; + if(child = fork()) { + if(child == -1) { + perror("fork"); + return 1; + } + printf("%ld\n", (long) child); + return 0; + } + + if(!freopen("/dev/null", "w", stdout)) { + fprintf(stdout, "Failed to silence stdout.\n"); + } + + if(!freopen("/dev/null", "w", stderr)) { + fprintf(stderr, "Failed to silence stderr.\n"); + } + + execvp(argv[1], argv + 1); + + if(freopen("/dev/tty", "w", stderr)) { + perror(argv[0]); + } + + return 1; +} +