* Ported to Linux's Second Extended File System as part of the
* dump and restore backup suit
* Remy Card <card@Linux.EU.Org>, 1994-1997
- * Stelian Pop <pop@cybercable.fr>, 1999-2000
+ * Stelian Pop <stelian@popies.net>, 1999-2000
+ * Stelian Pop <stelian@popies.net> - AlcĂ´ve <www.alcove.com>, 2000-2002
*/
/*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
#ifndef lint
static const char rcsid[] =
- "$Id: symtab.c,v 1.9 2000/06/25 18:42:39 stelian Exp $";
+ "$Id: symtab.c,v 1.21 2003/03/30 15:40:40 stelian Exp $";
#endif /* not lint */
/*
* are needed, by calling "myname".
*/
+#include <config.h>
#include <sys/param.h>
#include <sys/stat.h>
#ifdef __linux__
#include <sys/time.h>
+#include <time.h>
+#ifdef HAVE_EXT2FS_EXT2_FS_H
+#include <ext2fs/ext2_fs.h>
+#else
#include <linux/ext2_fs.h>
+#endif
#include <bsdcompat.h>
#else /* __linux__ */
#include <ufs/ufs/dinode.h>
static struct entry **entry;
static long entrytblsize;
-static void addino __P((ino_t, struct entry *));
+static void addino __P((dump_ino_t, struct entry *));
static struct entry *lookupparent __P((char *));
static void removeentry __P((struct entry *));
* Look up an entry by inode number
*/
struct entry *
-lookupino(ino_t inum)
+lookupino(dump_ino_t inum)
{
- register struct entry *ep;
+ struct entry *ep;
if (inum < WINO || inum >= maxino)
return (NULL);
* Add an entry into the entry table
*/
static void
-addino(ino_t inum, struct entry *np)
+addino(dump_ino_t inum, struct entry *np)
{
struct entry **epp;
* Delete an entry from the entry table
*/
void
-deleteino(ino_t inum)
+deleteino(dump_ino_t inum)
{
- register struct entry *next;
+ struct entry *next;
struct entry **prev;
if (inum < WINO || inum >= maxino)
struct entry *
lookupname(char *name)
{
- register struct entry *ep;
- register char *np, *cp;
+ struct entry *ep;
+ char *np, *cp;
char buf[MAXPATHLEN];
cp = name;
char *
myname(struct entry *ep)
{
- register char *cp;
+ char *cp;
static char namebuf[MAXPATHLEN];
for (cp = &namebuf[MAXPATHLEN - 2]; cp > &namebuf[ep->e_namlen]; ) {
* add an entry to the symbol table
*/
struct entry *
-addentry(char *name, ino_t inum, int type)
+addentry(char *name, dump_ino_t inum, int type)
{
- register struct entry *np, *ep;
+ struct entry *np, *ep;
if (freelist != NULL) {
np = freelist;
void
freeentry(struct entry *ep)
{
- register struct entry *np;
- ino_t inum;
+ struct entry *np;
+ dump_ino_t inum;
if (ep->e_flags != REMOVED)
badentry(ep, "not marked REMOVED");
static void
removeentry(struct entry *ep)
{
- register struct entry *np;
+ struct entry *np;
np = ep->e_parent;
if (np->e_entries == ep) {
int32_t entrytblsize;
time_t dumptime;
time_t dumpdate;
- ino_t maxino;
+ dump_ino_t maxino;
int32_t ntrec;
+ int32_t zflag;
};
/*
void
dumpsymtable(char *filename, long checkpt)
{
- register struct entry *ep, *tep;
- register ino_t i;
+ struct entry *ep, *tep;
+ dump_ino_t i;
struct entry temp, *tentry;
long mynum = 1, stroff = 0;
FILE *fd;
/*
* Convert entry pointers to indexes, and output
*/
- for (i = 0; i < entrytblsize; i++) {
+ for (i = 0; (long)i < entrytblsize; i++) {
if (entry[i] == NULL)
tentry = NULL;
else
hdr.dumptime = dumptime;
hdr.dumpdate = dumpdate;
hdr.ntrec = ntrec;
+ hdr.zflag = zflag;
(void) fwrite((char *)&hdr, sizeof(struct symtableheader), 1, fd);
if (ferror(fd)) {
warn("fwrite");
{
char *base;
long tblsize;
- register struct entry *ep;
+ struct entry *ep;
struct entry *baseep, *lep;
struct symtableheader hdr;
struct stat stbuf;
- register long i;
+ long i;
int fd;
Vprintf(stdout, "Initialize symbol table.\n");
curfile.action = SKIP;
dumptime = hdr.dumptime;
dumpdate = hdr.dumpdate;
+ zflag = hdr.zflag;
if (!bflag)
newtapebuf(hdr.ntrec);
getvol(hdr.volno);
panic("initsymtable called from command %c\n", command);
break;
}
+ resizemaps(maxino, hdr.maxino);
maxino = hdr.maxino;
entrytblsize = hdr.entrytblsize;
entry = (struct entry **)