#include <stdlib.h>
#include <stddef.h>
+#include "map.h"
#include "mph.h"
-#ifdef HAVE_FSTAB_H
+#if defined (HAVE_CHECKLIST_H)
+#include <checklist.h>
+#elif defined (HAVE_FSTAB_H)
#include <fstab.h>
#endif /* def HAVE_FSTAB_H */
#include <sys/vfstab.h>
#endif /* def HAVE_SYS_VFSTAB_H */
-#ifdef HAVE_CHECKLIST_H
-#include <checklist.h>
-#endif /* def HAVE_CHECKLIST_H */
-
G_BEGIN_DECLS
-struct Mono_Posix_Syscall__Fstab {
- char *fs_spec; /* block device name */
- char *fs_file; /* mount point */
- char *fs_vfstype; /* filesystem type */
- char *fs_mntops; /* mount options */
- char *fs_type; /* rw/rq/ro/sw/xx option */
- int fs_freq; /* dump frequency, in days */
- int fs_passno; /* pass number on parallel dump */
-
- char *_fs_buf_;
-};
-
-#ifdef HAVE_FSTAB_H
+#ifdef HAVE_CHECKLIST_H
-typedef struct fstab mph_fstab;
+typedef struct checklist mph_fstab;
-static const size_t
+static const mph_string_offset_t
fstab_offsets[] = {
- offsetof (struct fstab, fs_spec),
- offsetof (struct fstab, fs_file),
- offsetof (struct fstab, fs_vfstype),
- offsetof (struct fstab, fs_mntops),
- offsetof (struct fstab, fs_type)
+ MPH_STRING_OFFSET (struct checklist, fs_spec, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct checklist, fs_dir, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct checklist, fs_type, MPH_STRING_OFFSET_PTR)
};
-static const size_t
+static const mph_string_offset_t
mph_fstab_offsets[] = {
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_spec),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_file),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_vfstype),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_mntops),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_type)
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_spec, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_file, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_type, MPH_STRING_OFFSET_PTR)
};
-#endif /* def HAVE_FSTAB_H */
+#elif defined (HAVE_FSTAB_H)
-#ifdef HAVE_CHECKLIST_H
-
-typedef struct checklist mph_fstab;
+typedef struct fstab mph_fstab;
-static const size_t
+static const mph_string_offset_t
fstab_offsets[] = {
- offsetof (struct checklist, fs_spec),
- offsetof (struct checklist, fs_dir),
- offsetof (struct checklist, fs_type)
+ MPH_STRING_OFFSET (struct fstab, fs_spec, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct fstab, fs_file, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct fstab, fs_vfstype, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct fstab, fs_mntops, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct fstab, fs_type, MPH_STRING_OFFSET_PTR)
};
-static const size_t
+static const mph_string_offset_t
mph_fstab_offsets[] = {
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_spec),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_file),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_type)
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_spec, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_file, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_vfstype, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_mntops, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_type, MPH_STRING_OFFSET_PTR)
};
-#endif /* def HAVE_CHECKLIST_H */
+#endif /* def HAVE_FSTAB_H */
#if defined (HAVE_CHECKLIST_H) || defined (HAVE_FSTAB_H)
typedef struct vfstab mph_fstab;
-static const size_t
+static const mph_string_offset_t
vfstab_offsets[] = {
- offsetof (struct vfstab, vfs_special),
- offsetof (struct vfstab, vfs_mountp),
- offsetof (struct vfstab, vfs_fstype),
- offsetof (struct vfstab, vfs_mntopts)
+ MPH_STRING_OFFSET (struct vfstab, vfs_special, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct vfstab, vfs_mountp, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct vfstab, vfs_fstype, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct vfstab, vfs_mntopts, MPH_STRING_OFFSET_PTR)
};
-static const size_t
+static const mph_string_offset_t
mph_fstab_offsets[] = {
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_spec),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_file),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_vfstype),
- offsetof (struct Mono_Posix_Syscall__Fstab, fs_mntops)
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_spec, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_file, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_vfstype, MPH_STRING_OFFSET_PTR),
+ MPH_STRING_OFFSET (struct Mono_Posix_Syscall__Fstab, fs_mntops, MPH_STRING_OFFSET_PTR)
};
/*
static int
setfsent (void)
{
+ /* protect from bad users calling setfsent(), setfsent(), ... endfsent() */
+ if (etc_fstab != NULL)
+ fclose (etc_fstab);
etc_fstab = fopen ("/etc/vfstab", "r");
if (etc_fstab != NULL)
return 1;
#endif /* def HAVE_SYS_VFSTAB_H */
-#if defined (HAVE_FSTAB_H) || defined (HAVE_SYS_VFSTAB_H)
+#if defined (HAVE_FSTAB_H) || defined (HAVE_CHECKPOINT_H) || defined (HAVE_SYS_VFSTAB_H)
-void
+int
Mono_Posix_Syscall_endfsent (void)
{
endfsent ();
+ return 0;
}
gint32
return setfsent ();
}
-#endif /* def HAVE_FSTAB_H || def HAVE_SYS_VFSTAB_H */
+#endif /* def HAVE_FSTAB_H || def HAVE_CHECKPOINT_H || def HAVE_SYS_VFSTAB_H */
G_END_DECLS