mirror of
https://github.com/sheumann/hush.git
synced 2024-07-07 10:28:56 +00:00
More stuff.
This commit is contained in:
parent
9d3aba7b37
commit
17d49efd8c
30
Makefile
30
Makefile
@ -1,30 +1,38 @@
|
|||||||
|
|
||||||
VERSION=0.29alpha1
|
VERSION=0.29alpha1
|
||||||
BUILDTIME=$(shell date "+%Y%m%d-%H%M")
|
BUILDTIME=$(shell date "+%Y%m%d-%H%M")
|
||||||
|
DODEBUG=true
|
||||||
|
|
||||||
#This will choke on a non-debian system
|
#This will choke on a non-debian system
|
||||||
ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'`
|
ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'`
|
||||||
|
|
||||||
|
|
||||||
STRIP= strip --remove-section=.note --remove-section=.comment busybox
|
|
||||||
LDFLAGS= -s
|
|
||||||
|
|
||||||
# -D_GNU_SOURCE is needed because environ is used in init.c
|
# -D_GNU_SOURCE is needed because environ is used in init.c
|
||||||
|
ifeq ($(DODEBUG),true)
|
||||||
|
CFLAGS=-Wall -g -D_GNU_SOURCE
|
||||||
|
STRIP=
|
||||||
|
else
|
||||||
CFLAGS=-Wall -O2 -fomit-frame-pointer -fno-builtin -D_GNU_SOURCE
|
CFLAGS=-Wall -O2 -fomit-frame-pointer -fno-builtin -D_GNU_SOURCE
|
||||||
# For debugging only
|
STRIP= strip --remove-section=.note --remove-section=.comment busybox
|
||||||
#CFLAGS=-Wall -g -D_GNU_SOURCE
|
endif
|
||||||
|
|
||||||
|
ifndef $(prefix)
|
||||||
|
prefix=`pwd`
|
||||||
|
endif
|
||||||
|
BINDIR=$(prefix)
|
||||||
|
|
||||||
|
LDFLAGS= -s
|
||||||
LIBRARIES=-lc
|
LIBRARIES=-lc
|
||||||
OBJECTS=$(shell ./busybox.sh) utility.o
|
OBJECTS=$(shell ./busybox.sh) utility.o
|
||||||
|
|
||||||
CFLAGS+= -DBB_VER='"$(VERSION)"'
|
CFLAGS+= -DBB_VER='"$(VERSION)"'
|
||||||
CFLAGS+= -DBB_BT='"$(BUILDTIME)"'
|
CFLAGS+= -DBB_BT='"$(BUILDTIME)"'
|
||||||
|
|
||||||
#all: busybox links
|
all: busybox links
|
||||||
all: busybox
|
#all: busybox
|
||||||
|
|
||||||
busybox: $(OBJECTS)
|
busybox: $(OBJECTS)
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o busybox $(OBJECTS) $(LIBRARIES)
|
$(CC) $(CFLAGS) $(LDFLAGS) -o busybox $(OBJECTS) $(LIBRARIES)
|
||||||
#$(STRIP)
|
$(STRIP)
|
||||||
|
|
||||||
links:
|
links:
|
||||||
- ./busybox.mkll | sort >busybox.links
|
- ./busybox.mkll | sort >busybox.links
|
||||||
@ -38,3 +46,7 @@ distclean: clean
|
|||||||
force:
|
force:
|
||||||
|
|
||||||
$(OBJECTS): busybox.def.h internal.h Makefile
|
$(OBJECTS): busybox.def.h internal.h Makefile
|
||||||
|
|
||||||
|
install: busybox
|
||||||
|
install.sh $(BINDIR)
|
||||||
|
|
||||||
|
@ -195,6 +195,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
int busybox_main(int argc, char **argv)
|
int busybox_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
int col=0;
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
@ -208,18 +209,19 @@ int busybox_main(int argc, char **argv)
|
|||||||
fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n",
|
fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n",
|
||||||
BB_VER, BB_BT);
|
BB_VER, BB_BT);
|
||||||
fprintf(stderr, "Usage: busybox [function] [arguments]...\n");
|
fprintf(stderr, "Usage: busybox [function] [arguments]...\n");
|
||||||
|
fprintf(stderr, "or\nUsage: [function] [arguments]...\n");
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n\tMost people will create a symlink to busybox for each\n"
|
"\n\tMost people will create a symlink to busybox for each\n"
|
||||||
"\tfunction name, and busybox will act like whatever you invoke it as.\n");
|
"\tfunction name, and busybox will act like whatever you invoke it as.\n");
|
||||||
fprintf(stderr, "\nCurrently defined functions:\n");
|
fprintf(stderr, "\nCurrently defined functions:\n");
|
||||||
|
|
||||||
if (a->name != 0) {
|
|
||||||
fprintf(stderr, "%s", a->name);
|
|
||||||
a++;
|
|
||||||
}
|
|
||||||
while (a->name != 0) {
|
while (a->name != 0) {
|
||||||
fprintf(stderr, ", %s", a->name);
|
col+=fprintf(stderr, "%s%s", ((col==0)? "\t":", "), a->name);
|
||||||
a++;
|
a++;
|
||||||
|
if (col>60) {
|
||||||
|
fprintf(stderr, ",\n");
|
||||||
|
col=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\n\n");
|
fprintf(stderr, "\n\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -2,16 +2,14 @@
|
|||||||
#Make busybox links list file
|
#Make busybox links list file
|
||||||
|
|
||||||
DF="busybox.def.h"
|
DF="busybox.def.h"
|
||||||
MF="main.c"
|
MF="busybox.c"
|
||||||
|
|
||||||
LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)"
|
LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)"
|
||||||
|
|
||||||
for def in ${LIST}; do
|
for def in ${LIST}; do
|
||||||
|
i=`sed -n 's/^#ifdef '$def'.*\/\/\(.*$\)/\/\1\//gp' $MF`
|
||||||
set -- $(sed -n '/^#ifdef '$def'[ +| +].*/,/^#endif/{s/.*\/\///p; /^{ /{ s/^{ "//; s/",.*$//p;}; }' $MF)
|
j=`sed -n '/^#ifdef '$def'.*/,/^#endif/{ s/.*\"\(.*\)\".*/\1/gp; }' $MF`
|
||||||
path=$1; shift
|
for k in $j; do
|
||||||
|
echo $i$k
|
||||||
for n in $@; do
|
|
||||||
echo "$path/$n"
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
@ -380,7 +380,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
# undef LZW
|
# undef LZW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* $Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
/* tailor.h -- target dependent definitions
|
/* tailor.h -- target dependent definitions
|
||||||
* Copyright (C) 1992-1993 Jean-loup Gailly.
|
* Copyright (C) 1992-1993 Jean-loup Gailly.
|
||||||
* This is free software; you can redistribute it and/or modify it under the
|
* This is free software; you can redistribute it and/or modify it under the
|
||||||
@ -391,7 +391,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
* The target dependent functions should be defined in tailor.c.
|
* The target dependent functions should be defined in tailor.c.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
|
|
||||||
#if defined(__MSDOS__) && !defined(MSDOS)
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
# define MSDOS
|
# define MSDOS
|
||||||
@ -767,7 +767,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -976,7 +976,7 @@ void copy_block(buf, len, header)
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -1592,7 +1592,7 @@ ulg deflate()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -1781,7 +1781,7 @@ static int (*work) OF((int infile, int outfile)) = zip; /* function to call */
|
|||||||
// int main (argc, argv)
|
// int main (argc, argv)
|
||||||
// int argc;
|
// int argc;
|
||||||
// char **argv;
|
// char **argv;
|
||||||
int gzip_main(struct FileInfo * i, int argc, char * * argv)
|
int gzip_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
||||||
if (foreground) {
|
if (foreground) {
|
||||||
@ -1925,7 +1925,7 @@ local void do_exit(int exitcode)
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -2943,7 +2943,7 @@ local void set_file_type()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -3142,7 +3142,7 @@ void display_ratio(num, den, file)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
167
archival/tar.c
167
archival/tar.c
@ -131,14 +131,10 @@ static void writeHeader(const char * fileName,
|
|||||||
static void writeTarFile(int fileCount, char ** fileTable);
|
static void writeTarFile(int fileCount, char ** fileTable);
|
||||||
static void writeTarBlock(const char * buf, int len);
|
static void writeTarBlock(const char * buf, int len);
|
||||||
static BOOL putOctal(char * cp, int len, long value);
|
static BOOL putOctal(char * cp, int len, long value);
|
||||||
extern const char * modeString(int mode);
|
|
||||||
extern const char * timeString(time_t timeVal);
|
|
||||||
extern int fullWrite(int fd, const char * buf, int len);
|
|
||||||
extern int fullRead(int fd, char * buf, int len);
|
|
||||||
|
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
tar_main(struct FileInfo *unused, int argc, char ** argv)
|
tar_main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
const char * options;
|
const char * options;
|
||||||
|
|
||||||
@ -1258,167 +1254,6 @@ wantFileName(const char * fileName, int fileCount, char ** fileTable)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return the standard ls-like mode string from a file mode.
|
|
||||||
* This is static and so is overwritten on each call.
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
modeString(int mode)
|
|
||||||
{
|
|
||||||
static char buf[12];
|
|
||||||
|
|
||||||
strcpy(buf, "----------");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Fill in the file type.
|
|
||||||
*/
|
|
||||||
if (S_ISDIR(mode))
|
|
||||||
buf[0] = 'd';
|
|
||||||
if (S_ISCHR(mode))
|
|
||||||
buf[0] = 'c';
|
|
||||||
if (S_ISBLK(mode))
|
|
||||||
buf[0] = 'b';
|
|
||||||
if (S_ISFIFO(mode))
|
|
||||||
buf[0] = 'p';
|
|
||||||
#ifdef S_ISLNK
|
|
||||||
if (S_ISLNK(mode))
|
|
||||||
buf[0] = 'l';
|
|
||||||
#endif
|
|
||||||
#ifdef S_ISSOCK
|
|
||||||
if (S_ISSOCK(mode))
|
|
||||||
buf[0] = 's';
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Now fill in the normal file permissions.
|
|
||||||
*/
|
|
||||||
if (mode & S_IRUSR)
|
|
||||||
buf[1] = 'r';
|
|
||||||
if (mode & S_IWUSR)
|
|
||||||
buf[2] = 'w';
|
|
||||||
if (mode & S_IXUSR)
|
|
||||||
buf[3] = 'x';
|
|
||||||
if (mode & S_IRGRP)
|
|
||||||
buf[4] = 'r';
|
|
||||||
if (mode & S_IWGRP)
|
|
||||||
buf[5] = 'w';
|
|
||||||
if (mode & S_IXGRP)
|
|
||||||
buf[6] = 'x';
|
|
||||||
if (mode & S_IROTH)
|
|
||||||
buf[7] = 'r';
|
|
||||||
if (mode & S_IWOTH)
|
|
||||||
buf[8] = 'w';
|
|
||||||
if (mode & S_IXOTH)
|
|
||||||
buf[9] = 'x';
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Finally fill in magic stuff like suid and sticky text.
|
|
||||||
*/
|
|
||||||
if (mode & S_ISUID)
|
|
||||||
buf[3] = ((mode & S_IXUSR) ? 's' : 'S');
|
|
||||||
if (mode & S_ISGID)
|
|
||||||
buf[6] = ((mode & S_IXGRP) ? 's' : 'S');
|
|
||||||
if (mode & S_ISVTX)
|
|
||||||
buf[9] = ((mode & S_IXOTH) ? 't' : 'T');
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the time string to be used for a file.
|
|
||||||
* This is down to the minute for new files, but only the date for old files.
|
|
||||||
* The string is returned from a static buffer, and so is overwritten for
|
|
||||||
* each call.
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
timeString(time_t timeVal)
|
|
||||||
{
|
|
||||||
time_t now;
|
|
||||||
char * str;
|
|
||||||
static char buf[26];
|
|
||||||
|
|
||||||
time(&now);
|
|
||||||
|
|
||||||
str = ctime(&timeVal);
|
|
||||||
|
|
||||||
strcpy(buf, &str[4]);
|
|
||||||
buf[12] = '\0';
|
|
||||||
|
|
||||||
if ((timeVal > now) || (timeVal < now - 365*24*60*60L))
|
|
||||||
{
|
|
||||||
strcpy(&buf[7], &str[20]);
|
|
||||||
buf[11] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write all of the supplied buffer out to a file.
|
|
||||||
* This does multiple writes as necessary.
|
|
||||||
* Returns the amount written, or -1 on an error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
fullWrite(int fd, const char * buf, int len)
|
|
||||||
{
|
|
||||||
int cc;
|
|
||||||
int total;
|
|
||||||
|
|
||||||
total = 0;
|
|
||||||
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
cc = write(fd, buf, len);
|
|
||||||
|
|
||||||
if (cc < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
buf += cc;
|
|
||||||
total+= cc;
|
|
||||||
len -= cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Read all of the supplied buffer from a file.
|
|
||||||
* This does multiple reads as necessary.
|
|
||||||
* Returns the amount read, or -1 on an error.
|
|
||||||
* A short read is returned on an end of file.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
fullRead(int fd, char * buf, int len)
|
|
||||||
{
|
|
||||||
int cc;
|
|
||||||
int total;
|
|
||||||
|
|
||||||
total = 0;
|
|
||||||
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
cc = read(fd, buf, len);
|
|
||||||
|
|
||||||
if (cc < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (cc == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
buf += cc;
|
|
||||||
total+= cc;
|
|
||||||
len -= cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* END CODE */
|
/* END CODE */
|
||||||
|
|
||||||
|
12
busybox.c
12
busybox.c
@ -195,6 +195,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
int busybox_main(int argc, char **argv)
|
int busybox_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
int col=0;
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
@ -208,18 +209,19 @@ int busybox_main(int argc, char **argv)
|
|||||||
fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n",
|
fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n",
|
||||||
BB_VER, BB_BT);
|
BB_VER, BB_BT);
|
||||||
fprintf(stderr, "Usage: busybox [function] [arguments]...\n");
|
fprintf(stderr, "Usage: busybox [function] [arguments]...\n");
|
||||||
|
fprintf(stderr, "or\nUsage: [function] [arguments]...\n");
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n\tMost people will create a symlink to busybox for each\n"
|
"\n\tMost people will create a symlink to busybox for each\n"
|
||||||
"\tfunction name, and busybox will act like whatever you invoke it as.\n");
|
"\tfunction name, and busybox will act like whatever you invoke it as.\n");
|
||||||
fprintf(stderr, "\nCurrently defined functions:\n");
|
fprintf(stderr, "\nCurrently defined functions:\n");
|
||||||
|
|
||||||
if (a->name != 0) {
|
|
||||||
fprintf(stderr, "%s", a->name);
|
|
||||||
a++;
|
|
||||||
}
|
|
||||||
while (a->name != 0) {
|
while (a->name != 0) {
|
||||||
fprintf(stderr, ", %s", a->name);
|
col+=fprintf(stderr, "%s%s", ((col==0)? "\t":", "), a->name);
|
||||||
a++;
|
a++;
|
||||||
|
if (col>60) {
|
||||||
|
fprintf(stderr, ",\n");
|
||||||
|
col=0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\n\n");
|
fprintf(stderr, "\n\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -14,15 +14,14 @@
|
|||||||
#define BB_DATE
|
#define BB_DATE
|
||||||
#define BB_DD
|
#define BB_DD
|
||||||
//#define BB_DESCEND
|
//#define BB_DESCEND
|
||||||
//#define BB_DF
|
#define BB_DF
|
||||||
#define BB_DMESG
|
#define BB_DMESG
|
||||||
//#define BB_DUTMP
|
//#define BB_DUTMP
|
||||||
//#define BB_DYADIC
|
//#define BB_DYADIC
|
||||||
#define BB_FALSE
|
#define BB_FALSE
|
||||||
//#define BB_FDFLUSH
|
//#define BB_FDFLUSH
|
||||||
//#define BB_FIND
|
#define BB_FIND
|
||||||
//#define BB_FINDMOUNT
|
#define BB_GREP
|
||||||
//#define BB_GREP
|
|
||||||
////#define BB_HALT
|
////#define BB_HALT
|
||||||
//#define BB_INIT
|
//#define BB_INIT
|
||||||
//#define BB_KILL
|
//#define BB_KILL
|
||||||
@ -53,11 +52,11 @@
|
|||||||
////#define BB_SWAPOFF
|
////#define BB_SWAPOFF
|
||||||
//#define BB_SWAPON
|
//#define BB_SWAPON
|
||||||
//#define BB_SYNC
|
//#define BB_SYNC
|
||||||
//#define BB_TAR
|
#define BB_TAR
|
||||||
//#define BB_TOUCH
|
//#define BB_TOUCH
|
||||||
#define BB_TRUE
|
#define BB_TRUE
|
||||||
//#define BB_UMOUNT
|
//#define BB_UMOUNT
|
||||||
//#define BB_UPDATE
|
//#define BB_UPDATE
|
||||||
//#define BB_UTILITY
|
//#define BB_UTILITY
|
||||||
//#define BB_ZCAT
|
#define BB_ZCAT
|
||||||
//#define BB_GZIP
|
#define BB_GZIP
|
||||||
|
12
busybox.mkll
12
busybox.mkll
@ -2,16 +2,14 @@
|
|||||||
#Make busybox links list file
|
#Make busybox links list file
|
||||||
|
|
||||||
DF="busybox.def.h"
|
DF="busybox.def.h"
|
||||||
MF="main.c"
|
MF="busybox.c"
|
||||||
|
|
||||||
LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)"
|
LIST="$(sed -n '/^#define/{s/^#define //p;}' $DF)"
|
||||||
|
|
||||||
for def in ${LIST}; do
|
for def in ${LIST}; do
|
||||||
|
i=`sed -n 's/^#ifdef '$def'.*\/\/\(.*$\)/\/\1\//gp' $MF`
|
||||||
set -- $(sed -n '/^#ifdef '$def'[ +| +].*/,/^#endif/{s/.*\/\///p; /^{ /{ s/^{ "//; s/",.*$//p;}; }' $MF)
|
j=`sed -n '/^#ifdef '$def'.*/,/^#endif/{ s/.*\"\(.*\)\".*/\1/gp; }' $MF`
|
||||||
path=$1; shift
|
for k in $j; do
|
||||||
|
echo $i$k
|
||||||
for n in $@; do
|
|
||||||
echo "$path/$n"
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
@ -17,7 +17,7 @@ df(const char * device, const char * mountPoint)
|
|||||||
long blocks_percent_used;
|
long blocks_percent_used;
|
||||||
|
|
||||||
if ( statfs(mountPoint, &s) != 0 ) {
|
if ( statfs(mountPoint, &s) != 0 ) {
|
||||||
name_and_error(mountPoint);
|
perror(mountPoint);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ df(const char * device, const char * mountPoint)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
df_main(struct FileInfo * i, int argc, char * * argv)
|
df_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
static const char header[] =
|
static const char header[] =
|
||||||
"Filesystem 1024-blocks Used Available Capacity Mounted on\n";
|
"Filesystem 1024-blocks Used Available Capacity Mounted on\n";
|
||||||
@ -63,11 +63,9 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
while ( argc > 1 ) {
|
while ( argc > 1 ) {
|
||||||
if ( (mountEntry = findMountPoint(argv[1], "/etc/mtab")) == 0
|
if ( (mountEntry = findMountPoint(argv[1], "/proc/mounts")) == 0 )
|
||||||
&& (mountEntry = findMountPoint(argv[1], "/proc/mounts")) == 0 )
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: can't find mount point.\n"
|
fprintf(stderr, "%s: can't find mount point.\n" ,argv[1]);
|
||||||
,argv[1]);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
status = df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
|
status = df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
|
||||||
@ -82,10 +80,8 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
FILE * mountTable;
|
FILE * mountTable;
|
||||||
struct mntent * mountEntry;
|
struct mntent * mountEntry;
|
||||||
|
|
||||||
if ( (mountTable = setmntent("/etc/mtab", "r")) == 0
|
if ( (mountTable = setmntent("/proc/mounts", "r")) == 0) {
|
||||||
&& (mountTable = setmntent("/proc/mounts", "r")) == 0
|
perror("/proc/mounts");
|
||||||
) {
|
|
||||||
name_and_error("/etc/mtab");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,3 +97,48 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Given a block device, find the mount table entry if that block device
|
||||||
|
* is mounted.
|
||||||
|
*
|
||||||
|
* Given any other file (or directory), find the mount table entry for its
|
||||||
|
* filesystem.
|
||||||
|
*/
|
||||||
|
extern struct mntent *
|
||||||
|
findMountPoint(const char * name, const char * table)
|
||||||
|
{
|
||||||
|
struct stat s;
|
||||||
|
dev_t mountDevice;
|
||||||
|
FILE * mountTable;
|
||||||
|
struct mntent * mountEntry;
|
||||||
|
|
||||||
|
if ( stat(name, &s) != 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if ( (s.st_mode & S_IFMT) == S_IFBLK )
|
||||||
|
mountDevice = s.st_rdev;
|
||||||
|
else
|
||||||
|
mountDevice = s.st_dev;
|
||||||
|
|
||||||
|
|
||||||
|
if ( (mountTable = setmntent(table, "r")) == 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
while ( (mountEntry = getmntent(mountTable)) != 0 ) {
|
||||||
|
if ( strcmp(name, mountEntry->mnt_dir) == 0
|
||||||
|
|| strcmp(name, mountEntry->mnt_fsname) == 0 ) /* String match. */
|
||||||
|
break;
|
||||||
|
if ( stat(mountEntry->mnt_fsname, &s) == 0
|
||||||
|
&& s.st_rdev == mountDevice ) /* Match the device. */
|
||||||
|
break;
|
||||||
|
if ( stat(mountEntry->mnt_dir, &s) == 0
|
||||||
|
&& s.st_dev == mountDevice ) /* Match the directory's mount point. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
endmntent(mountTable);
|
||||||
|
return mountEntry;
|
||||||
|
}
|
||||||
|
61
df.c
61
df.c
@ -17,7 +17,7 @@ df(const char * device, const char * mountPoint)
|
|||||||
long blocks_percent_used;
|
long blocks_percent_used;
|
||||||
|
|
||||||
if ( statfs(mountPoint, &s) != 0 ) {
|
if ( statfs(mountPoint, &s) != 0 ) {
|
||||||
name_and_error(mountPoint);
|
perror(mountPoint);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ df(const char * device, const char * mountPoint)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
df_main(struct FileInfo * i, int argc, char * * argv)
|
df_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
static const char header[] =
|
static const char header[] =
|
||||||
"Filesystem 1024-blocks Used Available Capacity Mounted on\n";
|
"Filesystem 1024-blocks Used Available Capacity Mounted on\n";
|
||||||
@ -63,11 +63,9 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
while ( argc > 1 ) {
|
while ( argc > 1 ) {
|
||||||
if ( (mountEntry = findMountPoint(argv[1], "/etc/mtab")) == 0
|
if ( (mountEntry = findMountPoint(argv[1], "/proc/mounts")) == 0 )
|
||||||
&& (mountEntry = findMountPoint(argv[1], "/proc/mounts")) == 0 )
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: can't find mount point.\n"
|
fprintf(stderr, "%s: can't find mount point.\n" ,argv[1]);
|
||||||
,argv[1]);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
status = df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
|
status = df(mountEntry->mnt_fsname, mountEntry->mnt_dir);
|
||||||
@ -82,10 +80,8 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
FILE * mountTable;
|
FILE * mountTable;
|
||||||
struct mntent * mountEntry;
|
struct mntent * mountEntry;
|
||||||
|
|
||||||
if ( (mountTable = setmntent("/etc/mtab", "r")) == 0
|
if ( (mountTable = setmntent("/proc/mounts", "r")) == 0) {
|
||||||
&& (mountTable = setmntent("/proc/mounts", "r")) == 0
|
perror("/proc/mounts");
|
||||||
) {
|
|
||||||
name_and_error("/etc/mtab");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,3 +97,48 @@ df_main(struct FileInfo * i, int argc, char * * argv)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Given a block device, find the mount table entry if that block device
|
||||||
|
* is mounted.
|
||||||
|
*
|
||||||
|
* Given any other file (or directory), find the mount table entry for its
|
||||||
|
* filesystem.
|
||||||
|
*/
|
||||||
|
extern struct mntent *
|
||||||
|
findMountPoint(const char * name, const char * table)
|
||||||
|
{
|
||||||
|
struct stat s;
|
||||||
|
dev_t mountDevice;
|
||||||
|
FILE * mountTable;
|
||||||
|
struct mntent * mountEntry;
|
||||||
|
|
||||||
|
if ( stat(name, &s) != 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if ( (s.st_mode & S_IFMT) == S_IFBLK )
|
||||||
|
mountDevice = s.st_rdev;
|
||||||
|
else
|
||||||
|
mountDevice = s.st_dev;
|
||||||
|
|
||||||
|
|
||||||
|
if ( (mountTable = setmntent(table, "r")) == 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
while ( (mountEntry = getmntent(mountTable)) != 0 ) {
|
||||||
|
if ( strcmp(name, mountEntry->mnt_dir) == 0
|
||||||
|
|| strcmp(name, mountEntry->mnt_fsname) == 0 ) /* String match. */
|
||||||
|
break;
|
||||||
|
if ( stat(mountEntry->mnt_fsname, &s) == 0
|
||||||
|
&& s.st_rdev == mountDevice ) /* Match the device. */
|
||||||
|
break;
|
||||||
|
if ( stat(mountEntry->mnt_dir, &s) == 0
|
||||||
|
&& s.st_dev == mountDevice ) /* Match the directory's mount point. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
endmntent(mountTable);
|
||||||
|
return mountEntry;
|
||||||
|
}
|
||||||
|
6
dmesg.c
6
dmesg.c
@ -28,7 +28,7 @@ static inline _syscall3(int,klog,int,type,char *,b,int,len)
|
|||||||
const char dmesg_usage[] = "dmesg";
|
const char dmesg_usage[] = "dmesg";
|
||||||
|
|
||||||
int
|
int
|
||||||
dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
dmesg_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
@ -50,7 +50,7 @@ dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
|||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
default:
|
default:
|
||||||
usage(dmesg_usage);
|
fprintf(stderr, "%s\n", dmesg_usage);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
|||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
usage(dmesg_usage);
|
fprintf(stderr, "%s\n", dmesg_usage);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
133
find.c
133
find.c
@ -1,3 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Mini find implementation for busybox
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 by Erik Andersen <andersee@debian.org>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
|
||||||
|
static char* pattern=NULL;
|
||||||
|
static char* directory=NULL;
|
||||||
|
int dereferenceFlag=FALSE;
|
||||||
|
|
||||||
|
static const char find_usage[] = "find [path...] [expression]\n"
|
||||||
|
"default path is the current directory; default expression is -print\n"
|
||||||
|
"expression may consist of:\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int fileAction(const char *fileName)
|
||||||
|
{
|
||||||
|
if (pattern==NULL)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
else if (match(fileName, pattern) == TRUE)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
return( TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dirAction(const char *fileName)
|
||||||
|
{
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
|
if (pattern==NULL)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
else if (match(fileName, pattern) == TRUE)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
|
||||||
|
dir = opendir( fileName);
|
||||||
|
if (!dir) {
|
||||||
|
perror("Can't open directory");
|
||||||
|
exit(FALSE);
|
||||||
|
}
|
||||||
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
|
char dirName[NAME_MAX];
|
||||||
|
sprintf(dirName, "%s/%s", fileName, entry->d_name);
|
||||||
|
recursiveAction( dirName, TRUE, dereferenceFlag, fileAction, dirAction);
|
||||||
|
}
|
||||||
|
return( TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int find_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
if (argc <= 1) {
|
||||||
|
dirAction( ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* peel off the "find" */
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
|
||||||
|
if (**argv != '-') {
|
||||||
|
directory=*argv;
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse any options */
|
||||||
|
while (**argv == '-') {
|
||||||
|
int stopit=FALSE;
|
||||||
|
while (*++(*argv) && stopit==FALSE) switch (**argv) {
|
||||||
|
case 'f':
|
||||||
|
if (strcmp(*argv, "follow")==0) {
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
dereferenceFlag=TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
if (strcmp(*argv, "name")==0) {
|
||||||
|
if (argc-- > 1) {
|
||||||
|
pattern=*(++argv);
|
||||||
|
stopit=-TRUE;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Usage: %s\n", find_usage);
|
||||||
|
exit( FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
/* Ignore all long options */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Usage: %s\n", find_usage);
|
||||||
|
exit( FALSE);
|
||||||
|
}
|
||||||
|
if (argc-- > 1)
|
||||||
|
argv++;
|
||||||
|
if (**argv != '-')
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dirAction( directory);
|
||||||
|
exit(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef foobar
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -21,3 +151,6 @@ find_fn(const struct FileInfo * i)
|
|||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
133
findutils/find.c
133
findutils/find.c
@ -1,3 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Mini find implementation for busybox
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 by Erik Andersen <andersee@debian.org>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
|
||||||
|
static char* pattern=NULL;
|
||||||
|
static char* directory=NULL;
|
||||||
|
int dereferenceFlag=FALSE;
|
||||||
|
|
||||||
|
static const char find_usage[] = "find [path...] [expression]\n"
|
||||||
|
"default path is the current directory; default expression is -print\n"
|
||||||
|
"expression may consist of:\n";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int fileAction(const char *fileName)
|
||||||
|
{
|
||||||
|
if (pattern==NULL)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
else if (match(fileName, pattern) == TRUE)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
return( TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dirAction(const char *fileName)
|
||||||
|
{
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
|
if (pattern==NULL)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
else if (match(fileName, pattern) == TRUE)
|
||||||
|
fprintf(stdout, "%s\n", fileName);
|
||||||
|
|
||||||
|
dir = opendir( fileName);
|
||||||
|
if (!dir) {
|
||||||
|
perror("Can't open directory");
|
||||||
|
exit(FALSE);
|
||||||
|
}
|
||||||
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
|
char dirName[NAME_MAX];
|
||||||
|
sprintf(dirName, "%s/%s", fileName, entry->d_name);
|
||||||
|
recursiveAction( dirName, TRUE, dereferenceFlag, fileAction, dirAction);
|
||||||
|
}
|
||||||
|
return( TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
int find_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
if (argc <= 1) {
|
||||||
|
dirAction( ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* peel off the "find" */
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
|
||||||
|
if (**argv != '-') {
|
||||||
|
directory=*argv;
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse any options */
|
||||||
|
while (**argv == '-') {
|
||||||
|
int stopit=FALSE;
|
||||||
|
while (*++(*argv) && stopit==FALSE) switch (**argv) {
|
||||||
|
case 'f':
|
||||||
|
if (strcmp(*argv, "follow")==0) {
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
dereferenceFlag=TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
if (strcmp(*argv, "name")==0) {
|
||||||
|
if (argc-- > 1) {
|
||||||
|
pattern=*(++argv);
|
||||||
|
stopit=-TRUE;
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Usage: %s\n", find_usage);
|
||||||
|
exit( FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
/* Ignore all long options */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "Usage: %s\n", find_usage);
|
||||||
|
exit( FALSE);
|
||||||
|
}
|
||||||
|
if (argc-- > 1)
|
||||||
|
argv++;
|
||||||
|
if (**argv != '-')
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dirAction( directory);
|
||||||
|
exit(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef foobar
|
||||||
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -21,3 +151,6 @@ find_fn(const struct FileInfo * i)
|
|||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -36,7 +36,7 @@ static BOOL search
|
|||||||
|
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
grep_main(struct FileInfo * unused, int argc, char ** argv)
|
grep_main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
FILE * fp;
|
FILE * fp;
|
||||||
const char * word;
|
const char * word;
|
||||||
|
2
grep.c
2
grep.c
@ -36,7 +36,7 @@ static BOOL search
|
|||||||
|
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
grep_main(struct FileInfo * unused, int argc, char ** argv)
|
grep_main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
FILE * fp;
|
FILE * fp;
|
||||||
const char * word;
|
const char * word;
|
||||||
|
18
gzip.c
18
gzip.c
@ -380,7 +380,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
# undef LZW
|
# undef LZW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* $Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
/* tailor.h -- target dependent definitions
|
/* tailor.h -- target dependent definitions
|
||||||
* Copyright (C) 1992-1993 Jean-loup Gailly.
|
* Copyright (C) 1992-1993 Jean-loup Gailly.
|
||||||
* This is free software; you can redistribute it and/or modify it under the
|
* This is free software; you can redistribute it and/or modify it under the
|
||||||
@ -391,7 +391,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
* The target dependent functions should be defined in tailor.c.
|
* The target dependent functions should be defined in tailor.c.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
|
|
||||||
#if defined(__MSDOS__) && !defined(MSDOS)
|
#if defined(__MSDOS__) && !defined(MSDOS)
|
||||||
# define MSDOS
|
# define MSDOS
|
||||||
@ -767,7 +767,7 @@ extern int block_mode; /* block compress mode -C compatible with 2.0 */
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -976,7 +976,7 @@ void copy_block(buf, len, header)
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -1592,7 +1592,7 @@ ulg deflate()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -1781,7 +1781,7 @@ static int (*work) OF((int infile, int outfile)) = zip; /* function to call */
|
|||||||
// int main (argc, argv)
|
// int main (argc, argv)
|
||||||
// int argc;
|
// int argc;
|
||||||
// char **argv;
|
// char **argv;
|
||||||
int gzip_main(struct FileInfo * i, int argc, char * * argv)
|
int gzip_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
foreground = signal(SIGINT, SIG_IGN) != SIG_IGN;
|
||||||
if (foreground) {
|
if (foreground) {
|
||||||
@ -1925,7 +1925,7 @@ local void do_exit(int exitcode)
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ===========================================================================
|
/* ===========================================================================
|
||||||
@ -2943,7 +2943,7 @@ local void set_file_type()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -3142,7 +3142,7 @@ void display_ratio(num, den, file)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: gzip.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: gzip.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -183,6 +183,8 @@ int fullRead(int fd, char *buf, int len);
|
|||||||
int recursiveAction(const char *fileName, BOOL recurse, BOOL followLinks,
|
int recursiveAction(const char *fileName, BOOL recurse, BOOL followLinks,
|
||||||
int (*fileAction) (const char *fileName),
|
int (*fileAction) (const char *fileName),
|
||||||
int (*dirAction) (const char *fileName));
|
int (*dirAction) (const char *fileName));
|
||||||
|
BOOL match(const char* text, const char * pattern);
|
||||||
|
const char* timeString(time_t timeVal);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
167
tar.c
167
tar.c
@ -131,14 +131,10 @@ static void writeHeader(const char * fileName,
|
|||||||
static void writeTarFile(int fileCount, char ** fileTable);
|
static void writeTarFile(int fileCount, char ** fileTable);
|
||||||
static void writeTarBlock(const char * buf, int len);
|
static void writeTarBlock(const char * buf, int len);
|
||||||
static BOOL putOctal(char * cp, int len, long value);
|
static BOOL putOctal(char * cp, int len, long value);
|
||||||
extern const char * modeString(int mode);
|
|
||||||
extern const char * timeString(time_t timeVal);
|
|
||||||
extern int fullWrite(int fd, const char * buf, int len);
|
|
||||||
extern int fullRead(int fd, char * buf, int len);
|
|
||||||
|
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
tar_main(struct FileInfo *unused, int argc, char ** argv)
|
tar_main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
const char * options;
|
const char * options;
|
||||||
|
|
||||||
@ -1258,167 +1254,6 @@ wantFileName(const char * fileName, int fileCount, char ** fileTable)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Return the standard ls-like mode string from a file mode.
|
|
||||||
* This is static and so is overwritten on each call.
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
modeString(int mode)
|
|
||||||
{
|
|
||||||
static char buf[12];
|
|
||||||
|
|
||||||
strcpy(buf, "----------");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Fill in the file type.
|
|
||||||
*/
|
|
||||||
if (S_ISDIR(mode))
|
|
||||||
buf[0] = 'd';
|
|
||||||
if (S_ISCHR(mode))
|
|
||||||
buf[0] = 'c';
|
|
||||||
if (S_ISBLK(mode))
|
|
||||||
buf[0] = 'b';
|
|
||||||
if (S_ISFIFO(mode))
|
|
||||||
buf[0] = 'p';
|
|
||||||
#ifdef S_ISLNK
|
|
||||||
if (S_ISLNK(mode))
|
|
||||||
buf[0] = 'l';
|
|
||||||
#endif
|
|
||||||
#ifdef S_ISSOCK
|
|
||||||
if (S_ISSOCK(mode))
|
|
||||||
buf[0] = 's';
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Now fill in the normal file permissions.
|
|
||||||
*/
|
|
||||||
if (mode & S_IRUSR)
|
|
||||||
buf[1] = 'r';
|
|
||||||
if (mode & S_IWUSR)
|
|
||||||
buf[2] = 'w';
|
|
||||||
if (mode & S_IXUSR)
|
|
||||||
buf[3] = 'x';
|
|
||||||
if (mode & S_IRGRP)
|
|
||||||
buf[4] = 'r';
|
|
||||||
if (mode & S_IWGRP)
|
|
||||||
buf[5] = 'w';
|
|
||||||
if (mode & S_IXGRP)
|
|
||||||
buf[6] = 'x';
|
|
||||||
if (mode & S_IROTH)
|
|
||||||
buf[7] = 'r';
|
|
||||||
if (mode & S_IWOTH)
|
|
||||||
buf[8] = 'w';
|
|
||||||
if (mode & S_IXOTH)
|
|
||||||
buf[9] = 'x';
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Finally fill in magic stuff like suid and sticky text.
|
|
||||||
*/
|
|
||||||
if (mode & S_ISUID)
|
|
||||||
buf[3] = ((mode & S_IXUSR) ? 's' : 'S');
|
|
||||||
if (mode & S_ISGID)
|
|
||||||
buf[6] = ((mode & S_IXGRP) ? 's' : 'S');
|
|
||||||
if (mode & S_ISVTX)
|
|
||||||
buf[9] = ((mode & S_IXOTH) ? 't' : 'T');
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the time string to be used for a file.
|
|
||||||
* This is down to the minute for new files, but only the date for old files.
|
|
||||||
* The string is returned from a static buffer, and so is overwritten for
|
|
||||||
* each call.
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
timeString(time_t timeVal)
|
|
||||||
{
|
|
||||||
time_t now;
|
|
||||||
char * str;
|
|
||||||
static char buf[26];
|
|
||||||
|
|
||||||
time(&now);
|
|
||||||
|
|
||||||
str = ctime(&timeVal);
|
|
||||||
|
|
||||||
strcpy(buf, &str[4]);
|
|
||||||
buf[12] = '\0';
|
|
||||||
|
|
||||||
if ((timeVal > now) || (timeVal < now - 365*24*60*60L))
|
|
||||||
{
|
|
||||||
strcpy(&buf[7], &str[20]);
|
|
||||||
buf[11] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write all of the supplied buffer out to a file.
|
|
||||||
* This does multiple writes as necessary.
|
|
||||||
* Returns the amount written, or -1 on an error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
fullWrite(int fd, const char * buf, int len)
|
|
||||||
{
|
|
||||||
int cc;
|
|
||||||
int total;
|
|
||||||
|
|
||||||
total = 0;
|
|
||||||
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
cc = write(fd, buf, len);
|
|
||||||
|
|
||||||
if (cc < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
buf += cc;
|
|
||||||
total+= cc;
|
|
||||||
len -= cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Read all of the supplied buffer from a file.
|
|
||||||
* This does multiple reads as necessary.
|
|
||||||
* Returns the amount read, or -1 on an error.
|
|
||||||
* A short read is returned on an end of file.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
fullRead(int fd, char * buf, int len)
|
|
||||||
{
|
|
||||||
int cc;
|
|
||||||
int total;
|
|
||||||
|
|
||||||
total = 0;
|
|
||||||
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
cc = read(fd, buf, len);
|
|
||||||
|
|
||||||
if (cc < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (cc == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
buf += cc;
|
|
||||||
total+= cc;
|
|
||||||
len -= cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
/* END CODE */
|
/* END CODE */
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ static inline _syscall3(int,klog,int,type,char *,b,int,len)
|
|||||||
const char dmesg_usage[] = "dmesg";
|
const char dmesg_usage[] = "dmesg";
|
||||||
|
|
||||||
int
|
int
|
||||||
dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
dmesg_main(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
@ -50,7 +50,7 @@ dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
|||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
default:
|
default:
|
||||||
usage(dmesg_usage);
|
fprintf(stderr, "%s\n", dmesg_usage);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ dmesg_main(struct FileInfo * info, int argc, char * * argv)
|
|||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
usage(dmesg_usage);
|
fprintf(stderr, "%s\n", dmesg_usage);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
136
utility.c
136
utility.c
@ -405,6 +405,131 @@ freeChunks(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the time string to be used for a file.
|
||||||
|
* This is down to the minute for new files, but only the date for old files.
|
||||||
|
* The string is returned from a static buffer, and so is overwritten for
|
||||||
|
* each call.
|
||||||
|
*/
|
||||||
|
const char *
|
||||||
|
timeString(time_t timeVal)
|
||||||
|
{
|
||||||
|
time_t now;
|
||||||
|
char * str;
|
||||||
|
static char buf[26];
|
||||||
|
|
||||||
|
time(&now);
|
||||||
|
|
||||||
|
str = ctime(&timeVal);
|
||||||
|
|
||||||
|
strcpy(buf, &str[4]);
|
||||||
|
buf[12] = '\0';
|
||||||
|
|
||||||
|
if ((timeVal > now) || (timeVal < now - 365*24*60*60L))
|
||||||
|
{
|
||||||
|
strcpy(&buf[7], &str[20]);
|
||||||
|
buf[11] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine to see if a text string is matched by a wildcard pattern.
|
||||||
|
* Returns TRUE if the text is matched, or FALSE if it is not matched
|
||||||
|
* or if the pattern is invalid.
|
||||||
|
* * matches zero or more characters
|
||||||
|
* ? matches a single character
|
||||||
|
* [abc] matches 'a', 'b' or 'c'
|
||||||
|
* \c quotes character c
|
||||||
|
* Adapted from code written by Ingo Wilken.
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
match(const char * text, const char * pattern)
|
||||||
|
{
|
||||||
|
const char * retryPat;
|
||||||
|
const char * retryText;
|
||||||
|
int ch;
|
||||||
|
BOOL found;
|
||||||
|
|
||||||
|
retryPat = NULL;
|
||||||
|
retryText = NULL;
|
||||||
|
|
||||||
|
while (*text || *pattern)
|
||||||
|
{
|
||||||
|
ch = *pattern++;
|
||||||
|
|
||||||
|
switch (ch)
|
||||||
|
{
|
||||||
|
case '*':
|
||||||
|
retryPat = pattern;
|
||||||
|
retryText = text;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '[':
|
||||||
|
found = FALSE;
|
||||||
|
|
||||||
|
while ((ch = *pattern++) != ']')
|
||||||
|
{
|
||||||
|
if (ch == '\\')
|
||||||
|
ch = *pattern++;
|
||||||
|
|
||||||
|
if (ch == '\0')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (*text == ch)
|
||||||
|
found = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
pattern = retryPat;
|
||||||
|
text = ++retryText;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* fall into next case */
|
||||||
|
|
||||||
|
case '?':
|
||||||
|
if (*text++ == '\0')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '\\':
|
||||||
|
ch = *pattern++;
|
||||||
|
|
||||||
|
if (ch == '\0')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
/* fall into next case */
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (*text == ch)
|
||||||
|
{
|
||||||
|
if (*text)
|
||||||
|
text++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*text)
|
||||||
|
{
|
||||||
|
pattern = retryPat;
|
||||||
|
text = ++retryText;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pattern == NULL)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write all of the supplied buffer out to a file.
|
* Write all of the supplied buffer out to a file.
|
||||||
* This does multiple writes as necessary.
|
* This does multiple writes as necessary.
|
||||||
@ -543,3 +668,14 @@ recursiveAction( const char *fileName, BOOL recurse, BOOL followLinks,
|
|||||||
|
|
||||||
|
|
||||||
/* END CODE */
|
/* END CODE */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
14
zcat.c
14
zcat.c
@ -59,7 +59,7 @@ static char *license_msg[] = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -80,7 +80,7 @@ static char rcsid[] = "$Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
|||||||
* The target dependent functions should be defined in tailor.c.
|
* The target dependent functions should be defined in tailor.c.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
|
|
||||||
#define RECORD_IO 0
|
#define RECORD_IO 0
|
||||||
|
|
||||||
@ -436,7 +436,7 @@ extern int unlzw OF((int in, int out));
|
|||||||
# undef LZW
|
# undef LZW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* $Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $ */
|
/* $Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $ */
|
||||||
|
|
||||||
/* #include "getopt.h" */
|
/* #include "getopt.h" */
|
||||||
|
|
||||||
@ -698,7 +698,7 @@ int (*work) OF((int infile, int outfile)) = unzip; /* function to call */
|
|||||||
#define strequ(s1, s2) (strcmp((s1),(s2)) == 0)
|
#define strequ(s1, s2) (strcmp((s1),(s2)) == 0)
|
||||||
|
|
||||||
/* ======================================================================== */
|
/* ======================================================================== */
|
||||||
int zcat_main (struct FileInfo * i, int argc, char * * argv)
|
int zcat_main (int argc, char * * argv)
|
||||||
{
|
{
|
||||||
int file_count; /* number of files to precess */
|
int file_count; /* number of files to precess */
|
||||||
|
|
||||||
@ -895,7 +895,7 @@ RETSIGTYPE abort_gzip()
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* #include "crypt.h" */
|
/* #include "crypt.h" */
|
||||||
@ -1021,7 +1021,7 @@ int unzip(in, out)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -1408,7 +1408,7 @@ ulg crc_32_tab[] = {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef RCSID
|
#ifdef RCSID
|
||||||
static char rcsid[] = "$Id: zcat.c,v 1.1 1999/10/05 16:24:56 andersen Exp $";
|
static char rcsid[] = "$Id: zcat.c,v 1.2 1999/10/06 20:25:32 andersen Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user