X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Fdirs.c;h=239248809daf0ac99630721b753c5499ba9e9d24;hb=e1ba02efc62b97a7430bdd6d22afe024ccdd7f1b;hp=2be4e528f9e0a25ba56c15f3f5d8355235ebdeda;hpb=5bf65105dbaf0bb3d6fb4ccb3d8790bda496d861;p=dump.git diff --git a/restore/dirs.c b/restore/dirs.c index 2be4e52..2392488 100644 --- a/restore/dirs.c +++ b/restore/dirs.c @@ -23,11 +23,7 @@ * 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. * @@ -46,10 +42,11 @@ #ifndef lint static const char rcsid[] = - "$Id: dirs.c,v 1.22 2003/01/10 14:42:51 stelian Exp $"; + "$Id: dirs.c,v 1.24 2003/10/26 16:05:47 stelian Exp $"; #endif /* not lint */ #include +#include #include #include #include @@ -62,8 +59,13 @@ static const char rcsid[] = #endif #include #else /* __linux__ */ +#ifdef sunos +#include +#include +#else #include #include +#endif #endif /* __linux__ */ #include @@ -77,8 +79,12 @@ static const char rcsid[] = #ifdef __linux__ #include #else +#ifdef sunos +#include +#else #include #endif +#endif #include "pathnames.h" #include "restore.h" @@ -155,6 +161,10 @@ static void rst_seekdir __P((RST_DIR *, long, long)); static long rst_telldir __P((RST_DIR *)); static struct direct *searchdir __P((dump_ino_t, char *)); +#ifdef sunos +extern int fdsmtc; +#endif + /* * Extract directory contents, building up a directory structure * on disk for extraction by name. @@ -663,8 +673,11 @@ setdirmodes(int flags) if (node.flags) #ifdef __linux__ (void) fsetflags(cp, node.flags); +#else +#ifdef sunos #else (void) chflags(cp, node.flags); +#endif #endif utimes(cp, node.timep); ep->e_flags &= ~NEW; @@ -731,7 +744,7 @@ inodetype(dump_ino_t ino) * If requested, save its pertinent mode, owner, and time info. */ static struct inotab * -#ifdef __linux__ +#if defined(__linux__) || defined(sunos) allocinotab(dump_ino_t ino, struct new_bsd_inode *dip, long seekpt) #else allocinotab(dump_ino_t ino, struct dinode *dip, long seekpt) @@ -750,17 +763,17 @@ allocinotab(dump_ino_t ino, struct dinode *dip, long seekpt) if (mf == NULL) return (itp); node.ino = ino; -#ifdef __linux__ +#if defined(__linux__) || defined(sunos) node.timep[0].tv_sec = dip->di_atime.tv_sec; node.timep[0].tv_usec = dip->di_atime.tv_usec; node.timep[1].tv_sec = dip->di_mtime.tv_sec; node.timep[1].tv_usec = dip->di_mtime.tv_usec; -#else /* __linux__ */ +#else /* __linux__ || sunos */ node.timep[0].tv_sec = dip->di_atime; node.timep[0].tv_usec = dip->di_atimensec / 1000; node.timep[1].tv_sec = dip->di_mtime; node.timep[1].tv_usec = dip->di_mtimensec / 1000; -#endif /* __linux__ */ +#endif /* __linux__ || sunos */ node.mode = dip->di_mode; node.flags = dip->di_flags; node.uid = dip->di_uid;