Prepare for license switch by (regrettably) removing Charlie Shepherd's code, at...
authorRob Landley <rob@landley.net>
Mon, 14 Nov 2011 02:02:47 +0000 (20:02 -0600)
committerRob Landley <rob@landley.net>
Mon, 14 Nov 2011 02:02:47 +0000 (20:02 -0600)
Charlie's @gentoo address bounces, and he hasn't replied to his @gmail address.
I welcome him as a contributor but can't _find_ him, so I can't ship his
basename, dirname, mkfifo, touch, and tty command code  under a non-GPL license.
This essentially reverts the following commits:

147: implement touch
157: implement mkfifo
160: tweak touch
161: touch bugfix
162: touch -l
176: implement basename, dirname
179: implement tty

I also looked at these commits, which Charlie contributed to but which
don't need to be reverted.  (Mostly whitespace changes and typo fixes,
plus some minor changes to build infrastructure that don't affect the
resulting code.)

*149: add null pointer check
*154: add .hgignore
*155: whitespace
*156: whitespace (the rest is by me)
*158: add toys/help.h to makefile dependencies
*159: fix typo in description
*164: typo in df (dereference pointer)
*180: .hgignore
*182: whitespace in error messages
*183: add headers to make dependencies
*244: comment and whitespace cleanups
*247: build tweak: error checking
*248: typo in comment
*249: .hgignore
*250: wrong word in comment
*251: whitespace
*252: whitespace

Several files in the "scripts" directory are still GPLv2 (kconfig,
bloat-o-meter, Robert Foglietta's bash version of config2help.sh), but
they're just build infrastructure that doesn't wind up in the resulting
binary.  I plan to address this later on general principles, but it's
"mere aggregation" and not an immediate priority.)

toys/basename.c [deleted file]
toys/dirname.c [deleted file]
toys/mkfifo.c [deleted file]
toys/touch.c [deleted file]
toys/tty.c [deleted file]

diff --git a/toys/basename.c b/toys/basename.c
deleted file mode 100644 (file)
index 70ffe5b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* vi: set sw=4 ts=4:
- *
- * basename.c - print non-directory portion of path
- *
- * Copyright 2007 Charlie Shepherd <masterdriverz@gentoo.org>
- *
- * See http://www.opengroup.org/onlinepubs/009695399/utilities/basename.html
-
-USE_BASENAME(NEWTOY(basename, "<1>2", TOYFLAG_BIN))
-
-config BASENAME
-       bool "basename"
-       default y
-       help
-         usage: basename path [suffix]
-
-         Print the part of path after the last slash, optionally minus suffix.
-*/
-
-#include "toys.h"
-
-void basename_main(void)
-{
-       char *name = basename(*toys.optargs);
-       char *suffix = toys.optargs[1];
-       if (suffix) {
-               char *end = name+strlen(name)-strlen(suffix);
-               if (end>name && !strcmp(end,suffix)) *end=0;
-       }
-       puts(name);
-}
diff --git a/toys/dirname.c b/toys/dirname.c
deleted file mode 100644 (file)
index 759cee7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* vi: set sw=4 ts=4:
- *
- * dirname.c - print directory portion of path, or "." if none.
- *
- * Copyright 2007 Charlie Shepherd <masterdriverz@gentoo.org>
- *
- * See http://www.opengroup.org/onlinepubs/009695399/utilities/dirname.html
-
-USE_DIRNAME(NEWTOY(dirname, "<1>1", TOYFLAG_BIN))
-
-config DIRNAME
-       bool "dirname"
-       default y
-       help
-         usage: dirname path
-
-         Print the part of path up to the last slash.
-*/
-
-#include "toys.h"
-#include <libgen.h>
-
-void dirname_main(void)
-{
-       puts(dirname(*toys.optargs));
-}
diff --git a/toys/mkfifo.c b/toys/mkfifo.c
deleted file mode 100644 (file)
index 39ec51a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* vi: set sw=4 ts=4:
- *
- * mkfifo.c: Create a named pipe.
- *
- * See http://www.opengroup.org/onlinepubs/009695399/utilities/mkfifo.html
-
-USE_MKFIFO(NEWTOY(mkfifo, "<1m:", TOYFLAG_BIN|TOYFLAG_UMASK))
-
-config MKFIFO
-       bool "mkfifo"
-       default y
-       help
-         usage: mkfifo [-m mode] name...
-
-         Makes a named pipe at name.
-
-         -m mode       The mode of the pipe(s) created by mkfifo. It defaults
-                       to 0644.  This number is in octal, optionally preceded
-                       by a leading zero.
-*/
-
-#include "toys.h"
-
-DEFINE_GLOBALS(
-       char *mode;
-)
-
-#define TT this.mkfifo
-
-void mkfifo_main(void)
-{
-       char *arg;
-       int i;
-       mode_t mode;
-
-       if (toys.optflags) {
-               char *end;
-               mode = (mode_t)strtol(TT.mode, &end, 8);
-               if (end<=TT.mode || *end || mode<0 || mode>0777)
-                       error_exit("Invalid mode");
-       } else mode = 0644;
-
-       for (i = 0; (arg = toys.optargs[i]); i++)
-               if (mkfifo(arg, mode))
-                       perror_exit(arg);
-}
diff --git a/toys/touch.c b/toys/touch.c
deleted file mode 100644 (file)
index bead28f..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/* vi: set sw=4 ts=4:
- *
- * touch.c - Modify a file's timestamps.
- *
- * Copyright (C) 2007 Charlie Shepherd <masterdriverz@gentoo.org>
- *
- * See http://www.opengroup.org/onlinepubs/009695399/utilities/touch.html
-
-USE_TOUCH(NEWTOY(touch, "l#t:r:mca", TOYFLAG_BIN|TOYFLAG_UMASK))
-
-config TOUCH
-       bool "touch"
-       default y
-       help
-         usage: touch [-acm] [-r FILE] [-t MMDDhhmm] [-l bytes] FILE...
-
-         Change file timestamps, ensure file existance and change file length.
-
-         -a    Only change the access time.
-         -c    Do not create the file if it doesn't exist.
-         -l    Length to truncate (or sparsely extend) file to.
-         -m    Only change the modification time.
-         -r    Reference file to take timestamps from.
-         -t    Time to change {a,m}time to.
-*/
-
-#include "toys.h"
-
-DEFINE_GLOBALS(
-       char *ref_file;
-       char *time;
-       long length;
-)
-
-#define TT this.touch
-
-#define OPT_MTIME       0x01
-#define OPT_NOCREATE    0x02
-#define OPT_ATIME       0x04
-#define OPT_REFERENCE   0x08
-#define OPT_TIME        0x10
-#define OPT_LENGTH      0x20
-
-void touch_main(void)
-{
-       char *arg;
-       int i, set_a, set_m;
-       time_t curr_a, curr_m;
-
-       set_a = !!(toys.optflags & OPT_ATIME);
-       set_m = !!(toys.optflags & OPT_MTIME);
-
-       // Use timestamp on a file
-       if (toys.optflags & OPT_REFERENCE) {
-               struct stat sb;
-
-               if (toys.optflags & OPT_TIME)
-                       error_exit("Redundant time source");
-               xstat(TT.ref_file, &sb);
-               curr_m = sb.st_mtime;
-               curr_a = sb.st_atime;
-
-       // Use time specified on command line.
-       } else if (toys.optflags & OPT_TIME) {
-               struct tm t;
-               time_t curr;
-               char *c;
-
-               curr = time(NULL);
-               if (localtime_r(&curr, &t)
-                       || !(c = strptime(TT.time, "%m%d%H%M", &t))
-                       || *c || -1==(curr_a = curr_m = mktime(&t)))
-               {
-                       error_exit("Unknown time %s", TT.time);
-               }
-
-       // use current time
-       } else curr_m = curr_a = time(NULL);
-
-       for (i = 0; (arg = toys.optargs[i]); i++) {
-               struct utimbuf buf;
-               struct stat sb;
-
-               buf.modtime = curr_m;
-               buf.actime = curr_a;
-
-               if (stat(arg, &sb)) {
-                       if (!(toys.optflags & OPT_NOCREATE)) {
-                               xcreate(arg, O_CREAT, 0644);
-                               if (stat(arg, &sb))
-                                       goto error;
-                       }
-               }
-
-               if ((set_a+set_m) == 1) {
-                       /* We've been asked to only change one */
-                       if (set_a) buf.modtime = sb.st_mtime;
-                       else if (set_m) buf.actime = sb.st_atime;
-               }
-
-               if (toys.optflags & OPT_LENGTH)
-                       if (truncate(arg, TT.length))
-                               goto error;
-               if (utime(arg, &buf))
-error:
-                       perror_exit(arg);
-       }
-}
diff --git a/toys/tty.c b/toys/tty.c
deleted file mode 100644 (file)
index 6bc9cd3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* vi: set sw=4 ts=4:
- * tty.c - print terminal name of stdin
- *
- * Copyright 2007 Charlie Shepherd <masterdriverz@gentoo.org>
- *
- * See http://www.opengroup.org/onlinepubs/009695399/utilities/tty.html
-
-USE_TTY(NEWTOY(tty, "s", TOYFLAG_BIN))
-
-config TTY
-       bool "tty"
-       default y
-       help
-         Print the filename of the terminal connected to standard input.
-
-         -s    Don't print anything, only return an exit status.
-*/
-
-#include "toys.h"
-
-void tty_main(void)
-{
-       char *name = ttyname(0);
-       if (!toys.optflags) {
-               if (name) puts(name);
-               else puts("Not a tty");
-       }
-       toys.exitval = !name;
-}