# undef OPT_XTHREADS
# define OPT_CONST_CORRECT
+#elif defined(__NetBSD__)
+# undef OPT_UNIX_SOCKET_RPC
+# undef OPT_TLI
+# undef OPT_DLOPEN_X11
+# undef OPT_DLOPEN_CE
+# undef OPT_ADDMSG_DIRECT
+# undef OPT_SECURE_RPC
+# undef OPT_CLASSING_ENGINE
+# undef OPT_PATCH
+# define OPT_POSIX_SIGNAL
+# undef OPT_BSD_WAIT
+# undef OPT_DGETTEXT
+# define OPT_CATGETS
+# undef OPT_GETDTABLESIZE
+# undef OPT_SYSINFO
+# define OPT_CPP_PATH "/usr/bin/cpp"
+# define OPT_CPP_OPTIONS ""
+# define OPT_STRERROR
+# undef OPT_SVR4_GETMNTENT
+# undef OPT_LOCKF_MNTENT
+# define OPT_LOCAL_MOUNT_TYPE MNTTYPE_UFS
+# undef OPT_OLD_RPC
+# define OPT_DEFINE_SIG_PF
+# define OPT_TAR_HAS_EXCLUDE_OPTION
+# define OPT_HAS_REALPATH
+# define OPT_AUTOMOUNT_PATH_FIX
+# define OPT_BUG_RPCINTR
+# undef OPT_XTHREADS
+# define OPT_CONST_CORRECT
+# define HAS_STATVFS
+
#else
/* Unknown configuration, complain */
}}}} You must edit lib/tt_options.h and add a section defining the options for your configuration.
#elif defined(__osf__) || defined(CSRG_BASED)
# include <sys/types.h>
# include <sys/mount.h>
-# ifdef __osf__
+
+
+#if defined(HAS_STATVFS)
+ extern "C" int getfsstat(struct statvfs *, long, int);
+#elif defined(__osf__)
extern "C" int getfsstat(struct statfs *, long, int);
# endif
+
# define MNTTYPE_NFS "nfs"
# define ttOpenMntTbl(path,mode) ((FILE *) 1)
-# define TtMntEntry struct statfs *
+
+# if defined(HAS_STATVFS)
+# include <sys/statvfs.h>
+# define TtMntEntry struct statvfs *
+# else
+# define TtMntEntry struct statfs *
+# endif
+
# ifdef __osf__
# define ttFsType(e) \
(((e)->f_type == MOUNT_UFS) ? "ufs" \
for (entry = (TtMntEntry)tmpbuf; rc > 0; --rc,
entry = (TtMntEntry)((char *) entry + entry->vmt_length))
+
+#elif defined(HAS_STATVFS)
+ int numfs,i;
+ struct statvfs *buf;
+ long bufsize;
+ int flags = MNT_NOWAIT;
+ char *s, *host, path[MNAMELEN] ;
+
+ numfs = getvfsstat ( (struct statvfs *)0, 0, 0 );
+
+ bufsize = numfs * sizeof ( struct statvfs );
+ buf = (struct statvfs *) malloc ( bufsize );
+ memset ((void *)buf,0,bufsize);
+
+ getvfsstat ( buf, bufsize, flags );
+
+ for ( i=0; i<numfs; i++ )
+ {
+ // convert path@host to host:/path
+ s = strchr(buf[i].f_mntfromname,'@');
+ if (s != NULL) {
+ host = s + 1 ;
+ memset((char*)path,0,MNAMELEN);
+ strncpy(path,buf[i].f_mntfromname, (strlen(buf[i].f_mntfromname)
+ - strlen(s))) ;
+ strcpy(buf[i].f_mntfromname,host) ;
+ strcat(buf[i].f_mntfromname,":") ;
+ strcat(buf[i].f_mntfromname,path) ;
+ }
+ entry = &buf[i];
+
#elif defined(__osf__) || defined(CSRG_BASED)
int numfs,i;
struct statfs *buf;