While this seems to work fine when used in a simple program, when I load it in ghci, it segfaults about half the time. Don't know why, and seems ghci specific, but if I get reports of crashes, I'll need to look into that.
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			762 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			762 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
/* Include appropriate headers for the OS, and define what will be used. */
 | 
						|
#if defined (__FreeBSD__) || defined (__APPLE__)
 | 
						|
# include <sys/param.h>
 | 
						|
# include <sys/ucred.h>
 | 
						|
# include <sys/mount.h>
 | 
						|
# define GETMNTINFO
 | 
						|
#else
 | 
						|
#if defined (__linux__) || defined (__FreeBSD_kernel__)
 | 
						|
/* Linux or Debian kFreeBSD */
 | 
						|
#include <mntent.h>
 | 
						|
# define GETMNTENT
 | 
						|
#else
 | 
						|
# warning mounts listing code not available for this OS
 | 
						|
# define UNKNOWN
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
 | 
						|
#ifndef GETMNTENT
 | 
						|
struct mntent {
 | 
						|
	char *mnt_fsname;
 | 
						|
	char *mnt_dir;
 | 
						|
	char *mnt_type;
 | 
						|
	char *mnt_opts; /* not filled in */
 | 
						|
	int mnt_freq; /* not filled in */
 | 
						|
	int mnt_passno; /* not filled in */
 | 
						|
};
 | 
						|
#endif
 | 
						|
 | 
						|
FILE *mounts_start (void);
 | 
						|
int mounts_end (FILE *fp);
 | 
						|
struct mntent *mounts_next (FILE *fp);
 |