move several applets to more correct ex-project. No code changes.
This commit is contained in:
@@ -65,13 +65,6 @@ config CKSUM
|
||||
help
|
||||
cksum is used to calculate the CRC32 checksum of a file.
|
||||
|
||||
config CMP
|
||||
bool "cmp"
|
||||
default n
|
||||
help
|
||||
cmp is used to compare two files and returns the result
|
||||
to standard output.
|
||||
|
||||
config COMM
|
||||
bool "comm"
|
||||
default n
|
||||
@@ -142,38 +135,6 @@ config DF
|
||||
df reports the amount of disk space used and available
|
||||
on filesystems.
|
||||
|
||||
config DIFF
|
||||
bool "diff"
|
||||
default n
|
||||
help
|
||||
diff compares two files or directories and outputs the
|
||||
differences between them in a form that can be given to
|
||||
the patch command.
|
||||
|
||||
config FEATURE_DIFF_BINARY
|
||||
bool "Enable checks for binary files"
|
||||
default y
|
||||
depends on DIFF
|
||||
help
|
||||
This option enables support for checking for binary files
|
||||
before a comparison is carried out.
|
||||
|
||||
config FEATURE_DIFF_DIR
|
||||
bool "Enable directory support"
|
||||
default y
|
||||
depends on DIFF
|
||||
help
|
||||
This option enables support for directory and subdirectory
|
||||
comparison.
|
||||
|
||||
config FEATURE_DIFF_MINIMAL
|
||||
bool "Enable -d option to find smaller sets of changes"
|
||||
default n
|
||||
depends on DIFF
|
||||
help
|
||||
Enabling this option allows the use of -d to make diff
|
||||
try hard to find the smallest possible set of changes.
|
||||
|
||||
config DIRNAME
|
||||
bool "dirname"
|
||||
default n
|
||||
@@ -474,6 +435,20 @@ config PWD
|
||||
help
|
||||
pwd is used to print the current directory.
|
||||
|
||||
config READLINK
|
||||
bool "readlink"
|
||||
default n
|
||||
help
|
||||
This program reads a symbolic link and returns the name
|
||||
of the file it points to
|
||||
|
||||
config FEATURE_READLINK_FOLLOW
|
||||
bool "Enable canonicalization by following all symlinks (-f)"
|
||||
default n
|
||||
depends on READLINK
|
||||
help
|
||||
Enable the readlink option (-f).
|
||||
|
||||
config REALPATH
|
||||
bool "realpath"
|
||||
default n
|
||||
@@ -704,14 +679,6 @@ config UUENCODE
|
||||
help
|
||||
uuencode is used to uuencode a file.
|
||||
|
||||
config WATCH
|
||||
bool "watch"
|
||||
default n
|
||||
select DATE
|
||||
help
|
||||
watch is used to execute a program periodically, showing
|
||||
output to the screen.
|
||||
|
||||
config WC
|
||||
bool "wc"
|
||||
default n
|
||||
|
||||
@@ -18,14 +18,12 @@ lib-$(CONFIG_CHMOD) += chmod.o
|
||||
lib-$(CONFIG_CHOWN) += chown.o
|
||||
lib-$(CONFIG_CHROOT) += chroot.o
|
||||
lib-$(CONFIG_CKSUM) += cksum.o
|
||||
lib-$(CONFIG_CMP) += cmp.o
|
||||
lib-$(CONFIG_COMM) += comm.o
|
||||
lib-$(CONFIG_CP) += cp.o
|
||||
lib-$(CONFIG_CUT) += cut.o
|
||||
lib-$(CONFIG_DATE) += date.o
|
||||
lib-$(CONFIG_DD) += dd.o
|
||||
lib-$(CONFIG_DF) += df.o
|
||||
lib-$(CONFIG_DIFF) += diff.o
|
||||
lib-$(CONFIG_DIRNAME) += dirname.o
|
||||
lib-$(CONFIG_DOS2UNIX) += dos2unix.o
|
||||
lib-$(CONFIG_DU) += du.o
|
||||
@@ -54,6 +52,7 @@ lib-$(CONFIG_OD) += od.o
|
||||
lib-$(CONFIG_PRINTENV) += printenv.o
|
||||
lib-$(CONFIG_PRINTF) += printf.o
|
||||
lib-$(CONFIG_PWD) += pwd.o
|
||||
lib-$(CONFIG_READLINK) += readlink.o
|
||||
lib-$(CONFIG_REALPATH) += realpath.o
|
||||
lib-$(CONFIG_RM) += rm.o
|
||||
lib-$(CONFIG_RMDIR) += rmdir.o
|
||||
@@ -79,7 +78,6 @@ lib-$(CONFIG_UNIQ) += uniq.o
|
||||
lib-$(CONFIG_USLEEP) += usleep.o
|
||||
lib-$(CONFIG_UUDECODE) += uudecode.o
|
||||
lib-$(CONFIG_UUENCODE) += uuencode.o
|
||||
lib-$(CONFIG_WATCH) += watch.o
|
||||
lib-$(CONFIG_WC) += wc.o
|
||||
lib-$(CONFIG_WHO) += who.o
|
||||
lib-$(CONFIG_WHOAMI) += whoami.o
|
||||
|
||||
145
coreutils/cmp.c
145
coreutils/cmp.c
@@ -1,145 +0,0 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Mini cmp implementation for busybox
|
||||
*
|
||||
* Copyright (C) 2000,2001 by Matt Kraai <kraai@alumni.carnegiemellon.edu>
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
/* BB_AUDIT SUSv3 (virtually) compliant -- uses nicer GNU format for -l. */
|
||||
/* http://www.opengroup.org/onlinepubs/007904975/utilities/cmp.html */
|
||||
|
||||
/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org)
|
||||
*
|
||||
* Original version majorly reworked for SUSv3 compliance, bug fixes, and
|
||||
* size optimizations. Changes include:
|
||||
* 1) Now correctly distinguishes between errors and actual file differences.
|
||||
* 2) Proper handling of '-' args.
|
||||
* 3) Actual error checking of i/o.
|
||||
* 4) Accept SUSv3 -l option. Note that we use the slightly nicer gnu format
|
||||
* in the '-l' case.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
static FILE *cmp_xfopen_input(const char *filename)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen_or_warn_stdin(filename);
|
||||
if (fp)
|
||||
return fp;
|
||||
xfunc_die(); /* We already output an error message. */
|
||||
}
|
||||
|
||||
static const char fmt_eof[] = "cmp: EOF on %s\n";
|
||||
static const char fmt_differ[] = "%s %s differ: char %"OFF_FMT"d, line %d\n";
|
||||
// This fmt_l_opt uses gnu-isms. SUSv3 would be "%.0s%.0s%"OFF_FMT"d %o %o\n"
|
||||
static const char fmt_l_opt[] = "%.0s%.0s%"OFF_FMT"d %3o %3o\n";
|
||||
|
||||
static const char opt_chars[] = "sl";
|
||||
#define CMP_OPT_s (1<<0)
|
||||
#define CMP_OPT_l (1<<1)
|
||||
|
||||
int cmp_main(int argc, char **argv);
|
||||
int cmp_main(int argc, char **argv)
|
||||
{
|
||||
FILE *fp1, *fp2, *outfile = stdout;
|
||||
const char *filename1, *filename2 = "-";
|
||||
USE_DESKTOP(off_t skip1 = 0, skip2 = 0;)
|
||||
off_t char_pos = 0;
|
||||
int line_pos = 1; /* Hopefully won't overflow... */
|
||||
const char *fmt;
|
||||
int c1, c2;
|
||||
unsigned opt;
|
||||
int retval = 0;
|
||||
|
||||
xfunc_error_retval = 2; /* 1 is returned if files are different. */
|
||||
|
||||
opt_complementary = "?:-1"
|
||||
USE_DESKTOP(":?4")
|
||||
SKIP_DESKTOP(":?2")
|
||||
":l--s:s--l";
|
||||
opt = getopt32(argc, argv, opt_chars);
|
||||
argv += optind;
|
||||
|
||||
filename1 = *argv;
|
||||
fp1 = cmp_xfopen_input(filename1);
|
||||
|
||||
if (*++argv) {
|
||||
filename2 = *argv;
|
||||
#if ENABLE_DESKTOP
|
||||
if (*++argv) {
|
||||
skip1 = XATOOFF(*argv);
|
||||
if (*++argv) {
|
||||
skip2 = XATOOFF(*argv);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
fp2 = cmp_xfopen_input(filename2);
|
||||
if (fp1 == fp2) { /* Paranoia check... stdin == stdin? */
|
||||
/* Note that we don't bother reading stdin. Neither does gnu wc.
|
||||
* But perhaps we should, so that other apps down the chain don't
|
||||
* get the input. Consider 'echo hello | (cmp - - && cat -)'.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (opt & CMP_OPT_l)
|
||||
fmt = fmt_l_opt;
|
||||
else
|
||||
fmt = fmt_differ;
|
||||
|
||||
#if ENABLE_DESKTOP
|
||||
while (skip1) { getc(fp1); skip1--; }
|
||||
while (skip2) { getc(fp2); skip2--; }
|
||||
#endif
|
||||
do {
|
||||
c1 = getc(fp1);
|
||||
c2 = getc(fp2);
|
||||
++char_pos;
|
||||
if (c1 != c2) { /* Remember: a read error may have occurred. */
|
||||
retval = 1; /* But assume the files are different for now. */
|
||||
if (c2 == EOF) {
|
||||
/* We know that fp1 isn't at EOF or in an error state. But to
|
||||
* save space below, things are setup to expect an EOF in fp1
|
||||
* if an EOF occurred. So, swap things around.
|
||||
*/
|
||||
fp1 = fp2;
|
||||
filename1 = filename2;
|
||||
c1 = c2;
|
||||
}
|
||||
if (c1 == EOF) {
|
||||
die_if_ferror(fp1, filename1);
|
||||
fmt = fmt_eof; /* Well, no error, so it must really be EOF. */
|
||||
outfile = stderr;
|
||||
/* There may have been output to stdout (option -l), so
|
||||
* make sure we fflush before writing to stderr. */
|
||||
xfflush_stdout();
|
||||
}
|
||||
if (!(opt & CMP_OPT_s)) {
|
||||
if (opt & CMP_OPT_l) {
|
||||
line_pos = c1; /* line_pos is unused in the -l case. */
|
||||
}
|
||||
fprintf(outfile, fmt, filename1, filename2, char_pos, line_pos, c2);
|
||||
if (opt) { /* This must be -l since not -s. */
|
||||
/* If we encountered an EOF,
|
||||
* the while check will catch it. */
|
||||
continue;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (c1 == '\n') {
|
||||
++line_pos;
|
||||
}
|
||||
} while (c1 != EOF);
|
||||
|
||||
die_if_ferror(fp1, filename1);
|
||||
die_if_ferror(fp2, filename2);
|
||||
|
||||
fflush_stdout_and_exit(retval);
|
||||
}
|
||||
1282
coreutils/diff.c
1282
coreutils/diff.c
File diff suppressed because it is too large
Load Diff
50
coreutils/readlink.c
Normal file
50
coreutils/readlink.c
Normal file
@@ -0,0 +1,50 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Mini readlink implementation for busybox
|
||||
*
|
||||
* Copyright (C) 2000,2001 Matt Kraai <kraai@alumni.carnegiemellon.edu>
|
||||
*
|
||||
* Licensed under GPL v2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
int readlink_main(int argc, char **argv);
|
||||
int readlink_main(int argc, char **argv)
|
||||
{
|
||||
char *buf;
|
||||
char *fname;
|
||||
|
||||
USE_FEATURE_READLINK_FOLLOW(
|
||||
unsigned opt;
|
||||
/* We need exactly one non-option argument. */
|
||||
opt_complementary = "=1";
|
||||
opt = getopt32(argc, argv, "f");
|
||||
fname = argv[optind];
|
||||
)
|
||||
SKIP_FEATURE_READLINK_FOLLOW(
|
||||
const unsigned opt = 0;
|
||||
if (argc != 2) bb_show_usage();
|
||||
fname = argv[1];
|
||||
)
|
||||
|
||||
/* compat: coreutils readlink reports errors silently via exit code */
|
||||
logmode = LOGMODE_NONE;
|
||||
|
||||
if (opt) {
|
||||
buf = realpath(fname, bb_common_bufsiz1);
|
||||
} else {
|
||||
buf = xmalloc_readlink_or_warn(fname);
|
||||
}
|
||||
|
||||
if (!buf)
|
||||
return EXIT_FAILURE;
|
||||
puts(buf);
|
||||
|
||||
if (ENABLE_FEATURE_CLEAN_UP && !opt)
|
||||
free(buf);
|
||||
|
||||
fflush_stdout_and_exit(EXIT_SUCCESS);
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Mini watch implementation for busybox
|
||||
*
|
||||
* Copyright (C) 2001 by Michael Habermann <mhabermann@gmx.de>
|
||||
* Copyrigjt (C) Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org)
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
|
||||
*/
|
||||
|
||||
/* BB_AUDIT SUSv3 N/A */
|
||||
/* BB_AUDIT GNU defects -- only option -n is supported. */
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
// procps 2.0.18:
|
||||
// watch [-d] [-n seconds]
|
||||
// [--differences[=cumulative]] [--interval=seconds] command
|
||||
//
|
||||
// procps-3.2.3:
|
||||
// watch [-dt] [-n seconds]
|
||||
// [--differences[=cumulative]] [--interval=seconds] [--no-title] command
|
||||
//
|
||||
// (procps 3.x and procps 2.x are forks, not newer/older versions of the same)
|
||||
|
||||
int watch_main(int argc, char **argv);
|
||||
int watch_main(int argc, char **argv)
|
||||
{
|
||||
unsigned opt;
|
||||
unsigned period = 2;
|
||||
unsigned cmdlen = 1; // 1 for terminal NUL
|
||||
char *header = NULL;
|
||||
char *cmd;
|
||||
char *tmp;
|
||||
char **p;
|
||||
|
||||
opt_complementary = "-1"; // at least one param please
|
||||
opt = getopt32(argc, argv, "+dtn:", &tmp);
|
||||
//if (opt & 0x1) // -d (ignore)
|
||||
//if (opt & 0x2) // -t
|
||||
if (opt & 0x4) period = xatou(tmp);
|
||||
argv += optind;
|
||||
|
||||
p = argv;
|
||||
while (*p)
|
||||
cmdlen += strlen(*p++) + 1;
|
||||
tmp = cmd = xmalloc(cmdlen);
|
||||
while (*argv) {
|
||||
tmp += sprintf(tmp, " %s", *argv);
|
||||
argv++;
|
||||
}
|
||||
cmd++; // skip initial space
|
||||
|
||||
while (1) {
|
||||
printf("\033[H\033[J");
|
||||
if (!(opt & 0x2)) { // no -t
|
||||
int width, len;
|
||||
char *thyme;
|
||||
time_t t;
|
||||
|
||||
get_terminal_width_height(STDOUT_FILENO, &width, 0);
|
||||
header = xrealloc(header, width--);
|
||||
// '%-*s' pads header with spaces to the full width
|
||||
snprintf(header, width, "Every %ds: %-*s", period, width, cmd);
|
||||
time(&t);
|
||||
thyme = ctime(&t);
|
||||
len = strlen(thyme);
|
||||
if (len < width)
|
||||
strcpy(header + width - len, thyme);
|
||||
puts(header);
|
||||
}
|
||||
fflush(stdout);
|
||||
// TODO: 'real' watch pipes cmd's output to itself
|
||||
// and does not allow it to overflow the screen
|
||||
// (taking into account linewrap!)
|
||||
system(cmd);
|
||||
sleep(period);
|
||||
}
|
||||
return 0; // gcc thinks we can reach this :)
|
||||
}
|
||||
Reference in New Issue
Block a user