diff -cr /tmp/tct-1.05/CHANGES ./CHANGES *** /tmp/tct-1.05/CHANGES Tue Jan 23 19:39:43 2001 --- ./CHANGES Sat Mar 17 11:03:55 2001 *************** *** 1,3 **** --- 1,25 ---- + Fri Mar 16 14:25:11 EST 2001 + + o Fixed rpm root directory when running on a corpse. + Marco Walter (SUN). + + o Fixed file(1) output parsing problem with multiple : + characters. Marco Walter (SUN) + + Thu Feb 22 11:16:40 EST 2001 + + o Patch by Brian Carrier (Purdue) so that fs_read_random() + properly maintains file offset information. + + Thu Feb 8 10:40:02 EST 2001 + + o grave-robber dies silently when no group file is found. + This bites when examining a partial machine corpse + (bin/grave-robber). Klaus-Peter Kossakowski. + + o The "do first looks" code did not relocate to $TCT_HOME + (lib/tree.pl). Klaus-Peter Kossakowski. + Tue Jan 23 18:44:36 EST 2001 o The grave-robber did not correctly handle multi-line df diff -cr /tmp/tct-1.05/bin/grave-robber ./bin/grave-robber *** /tmp/tct-1.05/bin/grave-robber Tue Jan 23 18:44:00 2001 --- ./bin/grave-robber Sat Mar 17 11:16:19 2001 *************** *** 338,345 **** # # Load the password/group stuff # ! &'load_passwd_info(0,$PASSWD); ! &'load_group_info(0,$GROUP); # # grab network and host info --- 338,345 ---- # # Load the password/group stuff # ! &'load_passwd_info(0,$PASSWD) if -e $PASSWD; ! &'load_group_info(0,$GROUP) if -e $GROUP; # # grab network and host info diff -cr /tmp/tct-1.05/conf/paths.pl ./conf/paths.pl *** /tmp/tct-1.05/conf/paths.pl Tue Jan 23 18:44:00 2001 --- ./conf/paths.pl Sat Mar 17 11:16:05 2001 *************** *** 23,29 **** $IPCS="/usr/bin/ipcs"; $LAST="/usr/bin/last"; ! $LSOF="/usr/local/bin/lsof"; $MKDIR="/bin/mkdir"; $NETSTAT="/usr/bin/netstat"; $PS="/bin/ps"; --- 23,29 ---- $IPCS="/usr/bin/ipcs"; $LAST="/usr/bin/last"; ! $LSOF="/usr/local/sbin/lsof"; $MKDIR="/bin/mkdir"; $NETSTAT="/usr/bin/netstat"; $PS="/bin/ps"; diff -cr /tmp/tct-1.05/lazarus/lazarus ./lazarus/lazarus *** /tmp/tct-1.05/lazarus/lazarus Tue Jan 23 18:44:00 2001 --- ./lazarus/lazarus Sat Mar 17 11:16:19 2001 *************** *** 1111,1117 **** $file_res = &what_the_heck($_); } ! $file_res =~ s/^.*:\s*//; print "Resu is $file_res\n" if $debug; unlink $tmp, "$tmp.$$"; --- 1111,1117 ---- $file_res = &what_the_heck($_); } ! $file_res =~ s/^[^:]*:\s*//; print "Resu is $file_res\n" if $debug; unlink $tmp, "$tmp.$$"; diff -cr /tmp/tct-1.05/lib/linux.pl ./lib/linux.pl *** /tmp/tct-1.05/lib/linux.pl Sun Jul 30 19:39:20 2000 --- ./lib/linux.pl Fri Mar 16 14:25:04 2001 *************** *** 270,276 **** } else { &date_stamp("$COMM_OUT/rpm"); ! &redirect_command($RPM, "--root", "$CORPSE/var/lib/rpm", "-a", "-q", ">>$COMM_OUT/rpm"); &sign_it("$COMM_OUT/rpm"); } } --- 270,276 ---- } else { &date_stamp("$COMM_OUT/rpm"); ! &redirect_command($RPM, "--root", "$CORPSE", "-a", "-q", ">>$COMM_OUT/rpm"); &sign_it("$COMM_OUT/rpm"); } } diff -cr /tmp/tct-1.05/lib/pass.cache.pl ./lib/pass.cache.pl *** /tmp/tct-1.05/lib/pass.cache.pl Sun Jul 30 19:39:20 2000 --- ./lib/pass.cache.pl Sat Mar 3 12:31:23 2001 *************** *** 310,316 **** $passwd_loaded = 1; ! print "Getting password ($PASSWD) info via $GET_PASSWD\n" if $debug; if (@GET_PASSWD) { # open(GFILE, "$'GET_PASSWD|") || die "can't $'GET_PASSWD"; --- 310,316 ---- $passwd_loaded = 1; ! print "Getting password ($PASSWD) info via @GET_PASSWD\n" if $debug; if (@GET_PASSWD) { # open(GFILE, "$'GET_PASSWD|") || die "can't $'GET_PASSWD"; diff -cr /tmp/tct-1.05/lib/tree.pl ./lib/tree.pl *** /tmp/tct-1.05/lib/tree.pl Sun Jul 30 19:39:20 2000 --- ./lib/tree.pl Thu Feb 22 11:19:40 2001 *************** *** 150,158 **** print "\nStarting preprocessing paths and filenames on $hostname...\n"; ! die "Can't open conf/paths.pl (in do_first_looks())!\n" unless open (PATHS, "conf/paths.pl"); ! print "\tpreprocessing conf/paths.pl\n" if $verbose; while () { next if (/^\s*#/ || /^\s*$/); --- 150,158 ---- print "\nStarting preprocessing paths and filenames on $hostname...\n"; ! die "Can't open $TCT_HOME/conf/paths.pl (in do_first_looks())!\n" unless open (PATHS, "$TCT_HOME/conf/paths.pl"); ! print "\tpreprocessing $TCT_HOME/conf/paths.pl\n" if $verbose; while () { next if (/^\s*#/ || /^\s*$/); diff -cr /tmp/tct-1.05/src/fstools/ext2fs.c ./src/fstools/ext2fs.c *** /tmp/tct-1.05/src/fstools/ext2fs.c Sat Aug 12 11:11:10 2000 --- ./src/fstools/ext2fs.c Thu Feb 22 11:16:00 2001 *************** *** 62,68 **** * reads instead of cacheing group descriptors in a large buffer. */ offs = ext2fs->group_offset + grpnum * sizeof(*gd); ! fs_read_random(ext2fs->fs_info.fd, (char *) gd, sizeof(*gd), offs, "group descriptor"); ext2fs->grpnum = grpnum; if (verbose) --- 62,68 ---- * reads instead of cacheing group descriptors in a large buffer. */ offs = ext2fs->group_offset + grpnum * sizeof(*gd); ! fs_read_random(&ext2fs->fs_info, (char *) gd, sizeof(*gd), offs, "group descriptor"); ext2fs->grpnum = grpnum; if (verbose) *************** *** 103,109 **** /* * Look up the block allocation bitmap. */ ! fs_read_random(ext2fs->fs_info.fd, (char *) ext2fs->block_map, ext2fs->fs_info.block_size, (OFF_T) gd->bg_block_bitmap * ext2fs->fs_info.block_size, --- 103,109 ---- /* * Look up the block allocation bitmap. */ ! fs_read_random(&ext2fs->fs_info, (char *) ext2fs->block_map, ext2fs->fs_info.block_size, (OFF_T) gd->bg_block_bitmap * ext2fs->fs_info.block_size, *************** *** 130,136 **** /* * Look up the inode allocation bitmap. */ ! fs_read_random(ext2fs->fs_info.fd, (char *) ext2fs->inode_map, ext2fs->fs_info.block_size, (OFF_T) gd->bg_inode_bitmap * ext2fs->fs_info.block_size, --- 130,136 ---- /* * Look up the inode allocation bitmap. */ ! fs_read_random(&ext2fs->fs_info, (char *) ext2fs->inode_map, ext2fs->fs_info.block_size, (OFF_T) gd->bg_inode_bitmap * ext2fs->fs_info.block_size, *************** *** 172,178 **** offs = (inum - 1) - ext2fs->fs.s_inodes_per_group * grpnum; addr = (OFF_T) gd->bg_inode_table * ext2fs->fs_info.block_size + offs * sizeof(struct ext2_inode); ! fs_read_random(ext2fs->fs_info.fd, (char *) dino, sizeof(*dino), addr, "inode block"); ext2fs->inum = inum; if (verbose) --- 172,178 ---- offs = (inum - 1) - ext2fs->fs.s_inodes_per_group * grpnum; addr = (OFF_T) gd->bg_inode_table * ext2fs->fs_info.block_size + offs * sizeof(struct ext2_inode); ! fs_read_random(&ext2fs->fs_info, (char *) dino, sizeof(*dino), addr, "inode block"); ext2fs->inum = inum; if (verbose) diff -cr /tmp/tct-1.05/src/fstools/fs_io.c ./src/fstools/fs_io.c *** /tmp/tct-1.05/src/fstools/fs_io.c Tue Sep 26 10:15:41 2000 --- ./src/fstools/fs_io.c Sat Mar 17 11:09:38 2001 *************** *** 13,20 **** /* DADDR_T addr; /* const char *comment; /* ! /* void fs_read_random(fd, buf, len, offs, comment) ! /* int fd; /* char *buf; /* int len; /* OFF_T offs; --- 13,20 ---- /* DADDR_T addr; /* const char *comment; /* ! /* void fs_read_random(fs, buf, len, offs, comment) ! /* FS_INFO *fs; /* char *buf; /* int len; /* OFF_T offs; *************** *** 96,102 **** /* fs_read_random - random-access read */ ! void fs_read_random(int fd, char *buf, int len, OFF_T offs, const char *comment) { char *myname = "fs_read_random"; --- 96,102 ---- /* fs_read_random - random-access read */ ! void fs_read_random(FS_INFO *fs, char *buf, int len, OFF_T offs, const char *comment) { char *myname = "fs_read_random"; *************** *** 105,112 **** if (verbose) fprintf(logfp, "%s: read offs %.0f len %d (%s)\n", myname, (double) offs, len, comment); ! if (LSEEK(fd, offs, SEEK_SET) != offs) error("seek offset %lu: %m", (ULONG) offs); ! if ((count = read(fd, buf, len)) != len) error("read: %m"); } --- 105,114 ---- if (verbose) fprintf(logfp, "%s: read offs %.0f len %d (%s)\n", myname, (double) offs, len, comment); ! if (LSEEK(fs->fd, offs, SEEK_SET) != offs) error("seek offset %lu: %m", (ULONG) offs); ! if ((count = read(fs->fd, buf, len)) != len) error("read: %m"); + + fs->seek_pos = offs + len; } diff -cr /tmp/tct-1.05/src/fstools/fs_tools.h ./src/fstools/fs_tools.h *** /tmp/tct-1.05/src/fstools/fs_tools.h Fri Aug 11 21:49:20 2000 --- ./src/fstools/fs_tools.h Thu Feb 22 11:16:01 2001 *************** *** 293,299 **** */ extern FS_INFO *fs_open(const char *, const char *); extern void fs_read_block(FS_INFO *, FS_BUF *, int, DADDR_T, const char *); ! extern void fs_read_random(int, char *, int, OFF_T, const char *); extern void fs_copy_file(FS_INFO *, INUM_T, int); /* --- 293,299 ---- */ extern FS_INFO *fs_open(const char *, const char *); extern void fs_read_block(FS_INFO *, FS_BUF *, int, DADDR_T, const char *); ! extern void fs_read_random(FS_INFO *, char *, int, OFF_T, const char *); extern void fs_copy_file(FS_INFO *, INUM_T, int); /*