From 63f7cb448b3958d7520d7eab6d092d7e6f11f1d9 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 26 Jul 1999 01:47:15 +0000 Subject: Update. * misc/tst-mntent.c: Add test case for addmntent and getmntent. --- misc/mntent_r.c | 8 +++++--- misc/tst-mntent.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 6 deletions(-) (limited to 'misc') diff --git a/misc/mntent_r.c b/misc/mntent_r.c index 43cb3f7..6d46abb 100644 --- a/misc/mntent_r.c +++ b/misc/mntent_r.c @@ -162,14 +162,18 @@ weak_alias (__getmntent_r, getmntent_r) while (*rp != '\0') \ if (*rp == ' ' || *rp == '\t' || *rp == '\\') \ break; \ + else \ + ++rp; \ \ if (*rp != '\0') \ { \ /* In the worst case the length of the string can increase to \ founr times the current length. */ \ - char *wp = (char *) alloca (strlen (name) * 4 + 1); \ + char *wp; \ \ rp = name; \ + name = wp = (char *) alloca (strlen (name) * 4 + 1); \ + \ do \ if (*rp == ' ') \ { \ @@ -193,8 +197,6 @@ weak_alias (__getmntent_r, getmntent_r) else \ *wp++ = *rp; \ while (*rp++ != '\0'); \ - \ - name = wp; \ } \ } while (0) diff --git a/misc/tst-mntent.c b/misc/tst-mntent.c index d6f3743..ae96767 100644 --- a/misc/tst-mntent.c +++ b/misc/tst-mntent.c @@ -1,4 +1,5 @@ -/* Test case by Horst von Brand . */ +/* Test case by Horst von Brand + and Ulrich Drepper . */ #include #include #include @@ -10,13 +11,15 @@ main (int argc, char *argv[]) int result = 0; struct mntent mef; struct mntent *mnt = &mef; + char *name; + FILE *fp; mef.mnt_fsname = strdupa ("/dev/hda1"); - mef.mnt_dir = strdupa ("/"); + mef.mnt_dir = strdupa ("/some dir"); mef.mnt_type = strdupa ("ext2"); mef.mnt_opts = strdupa ("defaults"); mef.mnt_freq = 1; - mef.mnt_passno = 1; + mef.mnt_passno = 2; if (hasmntopt (mnt, "defaults")) printf ("Found!\n"); @@ -26,5 +29,55 @@ main (int argc, char *argv[]) result = 1; } + name = tmpnam (NULL); + fp = fopen (name, "w+"); + 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; + } + + remove (name); + } + return result; } -- cgit v1.1