aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFerass El Hafidi <vitali64pmemail@protonmail.com>2023-04-08 18:10:24 +0200
committerFerass El Hafidi <vitali64pmemail@protonmail.com>2023-04-08 18:22:07 +0200
commit3d9ffb8f179f9462525efd5183dc1d2fd7b086d0 (patch)
treedcb8ce5f490e41feb3bef65d531722efd04d6cf3
parent050b8c37e66115f1d054d6f4c2285cfee149ebdc (diff)
downloadfases-3d9ffb8f179f9462525efd5183dc1d2fd7b086d0.tar.gz
fases-3d9ffb8f179f9462525efd5183dc1d2fd7b086d0.zip
core/ln: fix error handling!
Signed-off-by: Ferass El Hafidi <vitali64pmemail@protonmail.com>
-rw-r--r--core/ln.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/ln.c b/core/ln.c
index 45c8055..301ba7d 100644
--- a/core/ln.c
+++ b/core/ln.c
@@ -27,10 +27,10 @@ int main(int argc, char *const argv[]) {
}
param[argument] = argument;
} argc -= optind; argv += optind;
- /* TODO: Fix error handling. */
- for (int i = 0; i < argc; i++) {
+ for (int i = 0; i < (argc - 1); i++) {
if (param['f']) remove(argv[argc - 1]);
- if (errno) return errprint(argv0, argv[i], errno);
+ if (errno && errno != ENOENT) return errprint(argv0, argv[i], errno);
+ errno = 0; /* Not reached if errno == ENOENT (no such file) */
if (param['s']) symlink(argv[i], argv[argc - 1]);
/* The -P option is the default behavior (at least on musl),
* so no if statement.