no matter what value f_bsize has. */
#define convert_blocks(b) (b)
#ifndef _SEQUENT_ /* _SEQUENT_ is DYNIX/ptx. */
+#ifndef DOLPHIN /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
#define f_bavail f_bfree
#endif
#endif
+#endif
#ifdef STAT_STATVFS /* SVR4. */
struct statvfs fsd;
#include <sys/vfs.h>
#endif
+#ifdef DOLPHIN
+/* So special that it's not worth putting this in autoconf. */
+#undef MOUNTED_FREAD_FSTYP
+#define MOUNTED_GETMNTTBL
+#endif
+
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
/* Return the value of the hexadecimal number represented by CP.
No prefix (like '0x') or suffix (like 'h') is expected to be
}
#endif /* MOUNTED_FREAD || MOUNTED_FREAD_FSTYP. */
+#ifdef MOUNTED_GETMNTTBL /* DolphinOS goes it's own way */
+ {
+ struct mntent **mnttbl=getmnttbl(),**ent;
+ for (ent=mnttbl;*ent;ent++)
+ {
+ me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
+ me->me_devname = xstrdup ( (*ent)->mt_resource);
+ me->me_mountdir = xstrdup( (*ent)->mt_directory);
+ me->me_type = xstrdup ((*ent)->mt_fstype);
+ me->me_dev = -1; /* Magic; means not known yet. */
+ me->me_next = NULL;
+
+ /* Add to the linked list. */
+ mtail->me_next = me;
+ mtail = me;
+ }
+ endmnttbl();
+ }
+#endif
+
#ifdef MOUNTED_GETMNTENT2 /* SVR4. */
{
struct mnttab mnt;
char *from;
char *to;
{
- struct stat from_stats;
+ struct stat from_stats, to_stats;
int pid, status;
if (stat (from, &from_stats))
return -1;
- if (unlink (to) && errno != ENOENT)
- return -1;
+ /* Be careful not to unlink `from' if it happens to be equal to `to' or
+ (on filesystems that silently truncate filenames after 14 characters)
+ if `from' and `to' share the significant characters. */
+ if (stat (to, &to_stats))
+ {
+ if (errno != ENOENT)
+ return -1;
+ }
+ else
+ {
+ if ((from_stats.st_dev == to_stats.st_dev)
+ && (from_stats.st_ino == to_stats.st_dev))
+ /* `from' and `to' designate the same file on that filesystem. */
+ return 0;
+
+ if (unlink (to) && errno != ENOENT)
+ return -1;
+ }
if (S_ISDIR (from_stats.st_mode))
{