undel2 official patch 11
Jonathan I. Kamens
jik at athena.mit.edu
Thu Dec 6 08:05:39 AEST 1990
Below is official patch number 11 for undel2, in volume 22 of the
comp.sources.unix archives. It was submitted to comp.sources.unix on October
15, but it hasn't been posted there yet, so I am making it available
elsewhere. When the shar archive below is unpacked, it will produce the file
delete.patch11, which should be applied in the undel source directory using
"patch -p0".
The following changes have been made for patch 11. Fred Hucht
(fred at hal9000.uni-duisburg.de) gets credit for the changes which are marked by
"(fred)", although if there's anything wrong with any of them, it's my fault.
1. One minor change to the Makefile's AFS support. If you don't use
AFS, this shouldn't matter to you.
2. Delete will now recognize when it is linked to "rm", "rmdir" or
"rd" (equivalent to "rmdir") and set command-line options
accordingly. (fred)
3. If the above link emulation is in effect, the usage message printed
by delete changes to reflect what it is being invoked as.
4. When determining how old a file is in lsdel and expunge, the ctime
of the file is used, rather than the mtime. This way, time to
expunge is measured from the time the file was "delete"d, rather
than from the time it was last modified by the user. (fred)
5. One declaration of "char *realloc()" should have been "extern char
*realloc()". (fred)
6. Lsdel had a bug in file counting similar to a bug which was fixed
in expunge over a year ago; this bug might cause it to miss some
files. (fred)
7. Some variants of malloc() et al return NULL if you realloc() to
size 0, and delete et al will not cope well with that at all.
Special casing of error-checking for 0-sized data fixes this.
(fred)
8. A typo in the expunge man page -- "too" should have been "to".
9. The expunge and lsdel man pages are updated to reflect the choice
of ctime over mtime.
--
Jonathan Kamens USnail:
MIT Project Athena 11 Ashford Terrace
jik at Athena.MIT.EDU Allston, MA 02134
Office: 617-253-8085 Home: 617-782-0710
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: delete.patch11
# Wrapped by jik at pit-manager on Wed Dec 5 16:04:47 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'delete.patch11' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'delete.patch11'\"
else
echo shar: Extracting \"'delete.patch11'\" \(8024 characters\)
sed "s/^X//" >'delete.patch11' <<'END_OF_FILE'
X*** /tmp/delete/Makefile Mon Oct 15 22:35:41 1990
X--- Makefile Mon Oct 15 22:57:50 1990
X***************
X*** 22,28 ****
X # These variables apply only if you want this program to recognize
X # Andrew File System mount points. If you don't want to support AFS,
X # then set all the variables starting with "AFS" to nothing.
X! AFSBLD= bld
X AFSINC= /afs/athena.mit.edu/astaff/project/afsdev/sandbox/$(AFSBLD)/dest/include
X AFSLIB= /afs/athena.mit.edu/astaff/project/afsdev/sandbox/$(AFSBLD)/dest/lib
X AFSINCS= -I$(AFSINC)
X--- 22,28 ----
X # These variables apply only if you want this program to recognize
X # Andrew File System mount points. If you don't want to support AFS,
X # then set all the variables starting with "AFS" to nothing.
X! AFSBLD= bld.3.0
X AFSINC= /afs/athena.mit.edu/astaff/project/afsdev/sandbox/$(AFSBLD)/dest/include
X AFSLIB= /afs/athena.mit.edu/astaff/project/afsdev/sandbox/$(AFSBLD)/dest/lib
X AFSINCS= -I$(AFSINC)
X*** /tmp/delete/delete.c Mon Oct 15 22:35:42 1990
X--- delete.c Mon Oct 15 22:57:55 1990
X***************
X*** 73,79 ****
X
X
X int force, interactive, recursive, noop, verbose, filesonly, directoriesonly;
X! int emulate_rm;
X extern int errno;
X
X main(argc, argv)
X--- 73,79 ----
X
X
X int force, interactive, recursive, noop, verbose, filesonly, directoriesonly;
X! int emulate_rm, linked_to_rm, linked_to_rmdir;
X extern int errno;
X
X main(argc, argv)
X***************
X*** 89,95 ****
X initialize_del_error_table();
X
X force = interactive = recursive = noop = verbose = filesonly =
X! directoriesonly = emulate_rm = 0;
X while ((arg = getopt(argc, argv, "efirnvFD")) != -1) {
X switch (arg) {
X case 'r':
X--- 89,101 ----
X initialize_del_error_table();
X
X force = interactive = recursive = noop = verbose = filesonly =
X! directoriesonly = emulate_rm = linked_to_rm = linked_to_rmdir = 0;
X!
X! if (!strcmp(whoami, "rm"))
X! emulate_rm++, filesonly++, linked_to_rm++;
X! if (!strcmp(whoami, "rmdir") || !strcmp(whoami, "rd"))
X! emulate_rm++, directoriesonly++, linked_to_rmdir++;
X!
X while ((arg = getopt(argc, argv, "efirnvFD")) != -1) {
X switch (arg) {
X case 'r':
X***************
X*** 168,183 ****
X {
X printf("Usage: %s [ options ] filename ...\n", whoami);
X printf("Options are:\n");
X! printf(" -r recursive\n");
X printf(" -i interactive\n");
X printf(" -f force\n");
X printf(" -n noop\n");
X printf(" -v verbose\n");
X! printf(" -F files only\n");
X! printf(" -D directories only\n");
X printf(" -- end options and start filenames\n");
X! printf("-r and -D are mutually exclusive\n");
X! printf("-F and -D are mutually exclusive\n");
X }
X
X
X--- 174,195 ----
X {
X printf("Usage: %s [ options ] filename ...\n", whoami);
X printf("Options are:\n");
X! if (! linked_to_rmdir)
X! printf(" -r recursive\n");
X printf(" -i interactive\n");
X printf(" -f force\n");
X printf(" -n noop\n");
X printf(" -v verbose\n");
X! if (! (linked_to_rmdir || linked_to_rm)) {
X! printf(" -e emulate rm/rmdir\n");
X! printf(" -F files only\n");
X! printf(" -D directories only\n");
X! }
X printf(" -- end options and start filenames\n");
X! if (! (linked_to_rmdir || linked_to_rm)) {
X! printf("-r and -D are mutually exclusive\n");
X! printf("-F and -D are mutually exclusive\n");
X! }
X }
X
X
X*** /tmp/delete/util.c Mon Oct 15 22:35:46 1990
X--- util.c Mon Oct 15 22:58:22 1990
X***************
X*** 239,245 ****
X filerec *file_ent;
X time_t current_time, min_days;
X {
X! if ((current_time - file_ent->specs.st_mtime) / 86400 >= min_days)
X return(1);
X else
X return(0);
X--- 239,245 ----
X filerec *file_ent;
X time_t current_time, min_days;
X {
X! if ((current_time - file_ent->specs.st_ctime) / 86400 >= min_days)
X return(1);
X else
X return(0);
X*** /tmp/delete/lsdel.c Mon Oct 15 22:35:48 1990
X--- lsdel.c Mon Oct 15 22:58:06 1990
X***************
X*** 41,47 ****
X #include "delete_errs.h"
X #include "errors.h"
X
X! char *realloc();
X extern time_t current_time;
X extern int errno;
X
X--- 41,47 ----
X #include "delete_errs.h"
X #include "errors.h"
X
X! extern char *realloc();
X extern time_t current_time;
X extern int errno;
X
X***************
X*** 233,239 ****
X char **files;
X int num;
X {
X! int i;
X filerec *leaf;
X
X for (i = 0; i < num; i++) {
X--- 233,239 ----
X char **files;
X int num;
X {
X! int i, skipped = 0;
X filerec *leaf;
X
X for (i = 0; i < num; i++) {
X***************
X*** 244,256 ****
X free(files[i]);
X if (! timed_out(leaf, current_time, timev)) {
X free_leaf(leaf);
X! num--;
X continue;
X }
X block_total += leaf->specs.st_blocks;
X }
X free((char *) files);
X! return(num);
X }
X
X
X--- 244,256 ----
X free(files[i]);
X if (! timed_out(leaf, current_time, timev)) {
X free_leaf(leaf);
X! skipped++;
X continue;
X }
X block_total += leaf->specs.st_blocks;
X }
X free((char *) files);
X! return(num-skipped);
X }
X
X
X***************
X*** 343,349 ****
X *number -= offset;
X files = (char **) realloc((char *) files,
X (unsigned) (sizeof(char *) * *number));
X! if (! files) {
X set_error(errno);
X error("realloc");
X return errno;
X--- 343,349 ----
X *number -= offset;
X files = (char **) realloc((char *) files,
X (unsigned) (sizeof(char *) * *number));
X! if ((*number != 0) && (! files)) {
X set_error(errno);
X error("realloc");
X return errno;
X*** /tmp/delete/stack.c Mon Oct 15 22:35:49 1990
X--- stack.c Mon Oct 15 22:58:16 1990
X***************
X*** 119,125 ****
X if (newsize < size) {
X size = newsize;
X stack = (caddr_t) realloc((char *) stack, (unsigned) size);
X! if (! stack) {
X set_error(errno);
X error("realloc");
X #ifdef STACK_DEBUG
X--- 119,125 ----
X if (newsize < size) {
X size = newsize;
X stack = (caddr_t) realloc((char *) stack, (unsigned) size);
X! if ((size != 0) && (! stack)) {
X set_error(errno);
X error("realloc");
X #ifdef STACK_DEBUG
X*** /tmp/delete/man1/expunge.1 Mon Oct 15 22:33:01 1990
X--- man1/expunge.1 Mon Oct 15 22:56:30 1990
X***************
X*** 99,110 ****
X option, this option prevents
X .I expunge
X from prompting for confirmation after listing all the files that are
X! too be deleted. Furthermore, it prevents the printing of error
X messages.
X .TP
X .B \-t\fIn\fR
X Specifies the minimum age (in days) of files to be expunged, measured
X! as the length of time since the last file modification.
X .TP
X .B \-n
X No file expunges are performed. Instead,
X--- 99,111 ----
X option, this option prevents
X .I expunge
X from prompting for confirmation after listing all the files that are
X! to be deleted. Furthermore, it prevents the printing of error
X messages.
X .TP
X .B \-t\fIn\fR
X Specifies the minimum age (in days) of files to be expunged, measured
X! as the length of time since the file was
X! .IR delete d.
X .TP
X .B \-n
X No file expunges are performed. Instead,
X*** /tmp/delete/man1/lsdel.1 Mon Oct 15 22:33:02 1990
X--- man1/lsdel.1 Mon Oct 15 22:56:32 1990
X***************
X*** 55,62 ****
X The
X .BR \-t
X option allows the user to specify a minimum age, in days, of files to
X! list. Only files that have not been modified in \fIn\fR days or more
X! will be listed.
X .PP
X The
X .BR \-s
X--- 55,63 ----
X The
X .BR \-t
X option allows the user to specify a minimum age, in days, of files to
X! list. Only files that were
X! .IR delete d
X! \fIn\fR days or more ago will be listed.
X .PP
X The
X .BR \-s
X*** /tmp/,RCSt1005570 Mon Oct 15 23:27:06 1990
X--- PATCHLEVEL Mon Oct 15 23:03:35 1990
X***************
X*** 1 ****
X! 10
X--- 1 ----
X! 11
END_OF_FILE
if test 8024 -ne `wc -c <'delete.patch11'`; then
echo shar: \"'delete.patch11'\" unpacked with wrong size!
fi
# end of 'delete.patch11'
fi
echo shar: End of shell archive.
exit 0
More information about the Comp.sources.bugs
mailing list