summaryrefslogtreecommitdiff
path: root/exec.c (follow)
Commit message (Collapse)AuthorAge
* exec: Rename para_exec_cmdline_pid() to xexec().HEADnextmasterAndre Noll2026-08-01
| | | | | This is shorter and conveys enough information. Rename the static para_exec() as well.
* exec: Detect and report exec errors.Andre Noll2026-07-26
| | | | | | | | | | | | | | | In para_exec(), the parent does not detect errors that occur in the child after the call to fork() succeeded. This includes the common error case where the child's call to execvp() fails due to a path lookup error. It is not difficult to implement error detection by introducing an additional "control" pipe whose file descriptors are opened with O_CLOEXEC. If the child's call to execvp() succeeds, the OS closes the descriptor and the function does not return, Otherwise the descriptor remains open and execvp() returns with errno set to indicate the error. In this case the child writes a four byte representation of errno to the control pipe and exits. The parent reads from the other end of the pipe. If the read returns zero, execvp() succeeded. Otherwise, the parent has an error code to work with.
* exec: Improve documentation of para_exec_cmdline_pid().Andre Noll2026-07-15
| | | | | Drop some implementation details and describe the semantics of the pid pointer in the error case.
* exec: Check return value of dup2().Andre Noll2026-07-14
| | | | | Currently para_exec() ignores all errors from dup2(). Introduce xdup2() to teach para_exec() to abort on fatal errors and to retry on EINTR.
* exec: Invalidate pid if no process was created.Andre Noll2026-07-14
| | | | | | If para_exec() fails, it may return with or without writing through the pid pointer. It's safer to initialize the pid at the beginning of the function so that pid == 0 iff no process was created.
* exec: Drop error message on failure.Andre Noll2026-05-26
| | | | We return the error code, so the caller should act as it sees fit.
* Switch to SPDX identifiers.Andre Noll2026-03-17
| | | | | | | | Generated with sed -i 's|Copyright.*Andre Noll.*|SPDX-License-Identifier: GPL-2.0 */|g' *.c *.h followed by manually tweaking the result a bit. No license change intended.
* Include regex.h from para.h.Andre Noll2025-05-19
| | | | Every .c file includes it anyway.
* exec: Improve documentation.Andre Noll2025-01-02
| | | | | Clarify the documentation of the public para_exec_cmdline_pid() and dedox the static para_exec().
* gui: Kill also child processes of external commands.Andre Noll2024-12-25
| | | | | | | | | | | | | | | When a command is executed as a display command from para_gui, and the command is interrupted from within para_gui by pressing any key, para_gui only kills the spawned process but leaves alone its child processes. Address this problem by putting the spawned process into a separate process group so that we can easily kill all processes of the group by passing the negated PID of the child to kill(2). In theory, the change in exec.c also affects para_mixer, which executes para_client and para_audioc. However, para_mixer never kills any of its child processes.
* exec: Simplify fd handling.Andre Noll2024-08-15
| | | | The new code is equivalent, but a bit shorter.
* Shorten copyright notice.Andre Noll2017-09-22
| | | | | | | | | | | | | | | | | | | | | The GPLv2 line does not add any additional information, so drop it. This leaves a single line of legalese text for most files, which is about the amount of screen real estate it deserves. This patch was created with the following script (plus some manual fixups): awk '{ if (NR <= 5) { gs = gensub(/.*Copyright.* ([0-9]+).*Andre Noll.*/, "\\1", "g") if (gs != $0) year = gs next } if (NR == 6 && year != "") printf("/* Copyright (C) %s Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */\n", year) print }'
* Update year in copyright headers.Andre Noll2015-01-12
| | | | | | | | | | | | | | | | Done with files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2014\)* Andre Noll') sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2014 Andre Noll/Copyright (C) \1 Andre Noll/1' $files In previous years we ran a similar script to set the second year in the range to the current year. This is kind of silly, so let's get rid of this useless information. This commit replaces "Copyright (C) A-B" by "Copyright (C) A" in all file headers, i.e. only the first year (A) is left in. Accurate information including time stamps for each change can be obtained from the git history.
* Assorted typo fixes in comments.Andre Noll2015-01-11
| | | | Quite a few..
* doc: Change email address to maan@tuebingen.mpg.deAndre Noll2014-08-18
| | | | | | | | | | | | | | The mail server on systemlinux.org was down for more than a week lately, so let's use an alternative official address. This commit changes all maan@systemlinux.org addresses to maan@tuebingen.mpg.de. Most .c and .h files contain the email address in the copyright header, so they must all be patched. Three other files contain the address for a different reason: * README lists email and git, gitweb and home page URLs * configure.ac needs it for configure -h * version.c contains it for the -V option of all commands
* Change copyright year to 2014.Andre Noll2014-02-22
| | | | | | | | | This year, we're really on time. The changes in this patch were created by the following silly script: files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2013\)* Andre Noll') sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2013 Andre Noll/Copyright (C) \1-2014 Andre Noll/1' $files sed --in-place= -e 's/Copyright (C) 2013 Andre Noll/Copyright (C) 2013-2014 Andre Noll/1' $files
* Change copyright year to 2013.Andre Noll2013-03-25
| | | | Better late than never.
* exec.c: Remove close_on_fork include.Andre Noll2012-08-13
| | | | It does not depend on it.
* Change year in copyright message to 2012.Andre Noll2012-01-07
|
* Remove some unnecessary includes.Andre Noll2011-03-27
| | | | | | | | This gets rid of quite some inclusions of <dirent.h> which are not needed as most .c files do not deal with directories at all. afs.c doe not mmap anything and needs nothing from sys/time.h so remove these includes as well.
* Replace 2010 in copyright message by 2011.Andre Noll2011-01-17
|
* Change year in COPYRIGHT to 2010.Andre Noll2010-04-05
| | | | Hey, this is earlier than last year :)
* Introduce para_regcomp.Andre Noll2009-07-08
| | | | | | | | | | | | | A wrapper for regcomp() that logs an error message if the regcomp() failed and uses a return value according to the paraslash rules. Currently there is only one user of regular expressions, is_v4_dot_quad(), which is converted to para_regex(), but new callers will be added soon. Unfortunately, this change made it necessary to include regex.h in all .c files that use string.h. Clean up the order in which headers are included a bit while we're at it. Maybe I should rethink the rule "Only .c files shall include header files"...
* Replace split_args() by create_argv().Andre Noll2009-07-05
| | | | | | | | | The latter function is superior as it honors quotes and special characters like '\n'. This allows for example to use whitespace characters in mood methods. Fixup and simplify all callers accordingly. The patch broke the grab command of para_audiod which is deactivated ATM and will be fixed in a subsequent patch.
* Fix various dead stores found by the clang static analyzer.Andre Noll2009-03-18
|
* Change year of copyright from 2008 to 2009.Andre Noll2009-01-10
|
* No need to check the return value of para_strdup().Andre Noll2008-11-16
|
* exec.c: Open /dev/null r/w.Andre Noll2008-10-22
| | | | | Just to prevent external programs from getting confused when they write to fd 1 or 2.
* Do not call close_listed_fds() in para_exec().Andre Noll2008-04-07
| | | | | | para_fade and para_gui, the only two users of exec.o, do not care about the close on fork list. So do not link close_on_fork.o into these executables.
* exec and fade cleanups.Andre Noll2008-04-07
| | | | | | Use para_open in exec.c and add error logging. fade.c: Add proper error return values and error checking.
* Trivial documentation cleanups.Andre Noll2008-02-09
|
* Change the type of the argv argument of all commands.Andre Noll2007-09-09
| | | | | | | | | The new type, char * const * const argv is what the exec functions also take. This avoids some warnings.
* replace standard GPL header by a one-line pointer to COPYINGAndre Noll2007-06-28
|
* improved version of split_args()Andre2006-04-10
| | | | | | | | Thanks to Lorenzo Bettini for pointing this out. This patch also fixes a bug with the default filter configuration which allocated too little memory for the array of filter configurations. Now we always allocate space for at least three entries.
* New source files: fd.c/fd.hAndre2006-04-07
| | | | | ATM, they only contain the file_exists() function which was pulled out from exec.c. More to follow.
* use const qualifiers where possibleAndre2006-03-26
|
* initial git commitAndre2006-02-20
Let's try if this works out.