| /* Test case by Horst von Brand <vonbrand@sleipnir.valparaiso.cl> | 
 |    and Ulrich Drepper <drepper@cygnus.com>.  */ | 
 | #include <mntent.h> | 
 | #include <stdio.h> | 
 | #include <string.h> | 
 |  | 
 |  | 
 | static int | 
 | do_test (void) | 
 | { | 
 |   int result = 0; | 
 |   struct mntent mef; | 
 |   struct mntent *mnt = &mef; | 
 |   FILE *fp; | 
 |  | 
 |   mef.mnt_fsname = strdupa ("/dev/hda1"); | 
 |   mef.mnt_dir = strdupa ("/some dir"); | 
 |   mef.mnt_type = strdupa ("ext2"); | 
 |   mef.mnt_opts = strdupa ("defaults"); | 
 |   mef.mnt_freq = 1; | 
 |   mef.mnt_passno = 2; | 
 |  | 
 |   if (hasmntopt (mnt, "defaults")) | 
 |     printf ("Found!\n"); | 
 |   else | 
 |     { | 
 |       printf ("Didn't find it\n"); | 
 |       result = 1; | 
 |     } | 
 |  | 
 |   fp = tmpfile (); | 
 |   if (fp == NULL) | 
 |     { | 
 |       printf ("Cannot open temporary file: %m\n"); | 
 |       result = 1; | 
 |     } | 
 |   else | 
 |     { | 
 |       char buf[1024]; | 
 |  | 
 |       /* Write the name entry.  */ | 
 |       addmntent (fp, &mef); | 
 |  | 
 |       /* Prepare for reading.  */ | 
 |       rewind (fp); | 
 |  | 
 |       /* First, read it raw.  */ | 
 |       if (fgets (buf, sizeof (buf), fp) == NULL) | 
 | 	{ | 
 | 	  printf ("Cannot read temporary file: %m"); | 
 | 	  result = 1; | 
 | 	} | 
 |       else | 
 | 	if (strcmp (buf, "/dev/hda1 /some\\040dir ext2 defaults 1 2\n") != 0) | 
 | 	  { | 
 | 	    puts ("Raw file data not correct"); | 
 | 	    result = 1; | 
 | 	  } | 
 |  | 
 |       /* Prepare for reading, part II.  */ | 
 |       rewind (fp); | 
 |  | 
 |       /* Now read it cooked.  */ | 
 |       mnt = getmntent (fp); | 
 |  | 
 |       if (strcmp (mnt->mnt_fsname, "/dev/hda1") != 0 | 
 | 	  || strcmp (mnt->mnt_dir, "/some dir") != 0 | 
 | 	  || strcmp (mnt->mnt_type, "ext2") != 0 | 
 | 	  || strcmp (mnt->mnt_opts, "defaults") != 0 | 
 | 	  || mnt->mnt_freq != 1 | 
 | 	  || mnt->mnt_passno != 2) | 
 | 	{ | 
 | 	  puts ("Error while reading written entry back in"); | 
 | 	  result = 1; | 
 | 	} | 
 |    } | 
 |  | 
 |   return result; | 
 | } | 
 |  | 
 | #define TEST_FUNCTION do_test () | 
 | #include "../test-skeleton.c" |