aboutsummaryrefslogtreecommitdiffhomepage
path: root/libslang/slsh/scripts/badlinks
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2011-10-14 04:55:05 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2011-10-14 04:55:05 +0200
commit6aa0e0017d7d0cddc006da885946934b06949a91 (patch)
tree66b688ec32e2f91266db760b1762f2a50cc52036 /libslang/slsh/scripts/badlinks
parenta966db5b71328f6adf9dd767e64b322a3bd7ed9c (diff)
downloaderlang-slang-fork-6aa0e0017d7d0cddc006da885946934b06949a91.tar.gz
include libslang-1.4.9 and automatically build it and link erlang-slang against it
few (erlang) people will still have libslang-1.4.9 installed or spend time to get it to link against the driver
Diffstat (limited to 'libslang/slsh/scripts/badlinks')
-rwxr-xr-xlibslang/slsh/scripts/badlinks78
1 files changed, 78 insertions, 0 deletions
diff --git a/libslang/slsh/scripts/badlinks b/libslang/slsh/scripts/badlinks
new file mode 100755
index 0000000..77409bd
--- /dev/null
+++ b/libslang/slsh/scripts/badlinks
@@ -0,0 +1,78 @@
+#!/usr/bin/env slsh
+% Find links that point to non-existent files
+
+static define warn ()
+{
+ variable args = __pop_args (_NARGS-1);
+ variable err = ();
+ variable msg;
+
+ msg = sprintf (__push_args (args));
+
+ if (err)
+ err = ": " + errno_string (err);
+ else
+ err == "";
+
+ () = fprintf (stderr, "%s: %s%s\n",
+ __argv[0], msg, err);
+}
+
+static define badlinks (dir)
+{
+ variable files, file;
+ variable st;
+
+ files = listdir (dir);
+ if (files == NULL)
+ {
+ warn (errno, dir);
+ return;
+ }
+
+ foreach (files)
+ {
+ file = ();
+
+ file = path_concat (dir, file);
+ st = stat_file (file);
+ if (st != NULL)
+ continue;
+
+ if (errno != ENOENT)
+ {
+ warn (errno, file);
+ continue;
+ }
+
+ if (-1 == fprintf (stdout, "%s\n", file))
+ break;
+ }
+}
+
+define main (argc, argv)
+{
+ if (argc > 1)
+ {
+ if (argv[1] == "--help")
+ {
+ () = fprintf (stdout, "Usage: %s [--help] [dirs....]\n",
+ __argv[0]);
+ exit (1);
+ }
+ }
+
+ if (argc == 1)
+ {
+ badlinks (".");
+ exit (0);
+ }
+
+ foreach (argv[[1:]])
+ badlinks ();
+
+ exit (0);
+}
+
+main (__argc, __argv);
+