2012-06-04 Yaakov Selkowitz * cygwin.din (getmntent_r): Export. * mount.cc (getmntent_r): New function. * posix.sgml (std-gnu): Add getmntent_r. * include/mntent.h (getmntent_r): Declare. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. Index: mount.cc =================================================================== RCS file: /cvs/src/src/winsup/cygwin/mount.cc,v retrieving revision 1.90 diff -u -p -r1.90 mount.cc --- mount.cc 3 Jun 2012 16:46:53 -0000 1.90 +++ mount.cc 5 Jun 2012 03:38:45 -0000 @@ -1900,6 +1900,35 @@ getmntent (FILE *) return mount_table->getmntent (_my_tls.locals.iteration++); } +extern "C" struct mntent * +getmntent_r (FILE *, struct mntent *mntbuf, char *buf, int buflen) +{ + struct mntent *mnt = mount_table->getmntent (_my_tls.locals.iteration++); + char *tmpbuf; + int len = 0, maxlen; + + if (!mnt) + { + mntbuf = NULL; + return NULL; + } + + maxlen = strlen (mnt->mnt_fsname) + strlen (mnt->mnt_dir) + + strlen (mnt->mnt_type) + strlen (mnt->mnt_opts) + 30; + tmpbuf = (char *) alloca (maxlen); + memset (tmpbuf, '\0', maxlen); + + len += __small_sprintf (tmpbuf, "%s", mnt->mnt_fsname) + 1; + len += __small_sprintf (tmpbuf + len, "%s", mnt->mnt_dir) + 1; + len += __small_sprintf (tmpbuf + len, "%s", mnt->mnt_type) + 1; + len += __small_sprintf (tmpbuf + len, "%s", mnt->mnt_opts) + 1; + len += __small_sprintf (tmpbuf + len, "%d %d", mnt->mnt_freq, mnt->mnt_passno); + + memcpy (buf, tmpbuf, buflen); + memcpy (mntbuf, mnt, sizeof (struct mntent)); + return mnt; +} + extern "C" int endmntent (FILE *) { Index: posix.sgml =================================================================== RCS file: /cvs/src/src/winsup/cygwin/posix.sgml,v retrieving revision 1.78 diff -u -p -r1.78 posix.sgml --- posix.sgml 10 May 2012 08:35:22 -0000 1.78 +++ posix.sgml 5 Jun 2012 03:38:45 -0000 @@ -1115,6 +1115,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008) get_phys_pages get_nprocs get_nprocs_conf + getmntent_r getopt_long getopt_long_only getpt Index: cygwin.din =================================================================== RCS file: /cvs/src/src/winsup/cygwin/cygwin.din,v retrieving revision 1.255 diff -u -p -r1.255 cygwin.din --- cygwin.din 10 May 2012 08:35:22 -0000 1.255 +++ cygwin.din 5 Jun 2012 03:38:45 -0000 @@ -738,6 +738,7 @@ _getlogin = getlogin NOSIGFE getlogin_r NOSIGFE getmntent SIGFE _getmntent = getmntent SIGFE +getmntent_r SIGFE getmode SIGFE _getmode = getmode SIGFE getnameinfo = cygwin_getnameinfo SIGFE Index: include/mntent.h =================================================================== RCS file: /cvs/src/src/winsup/cygwin/include/mntent.h,v retrieving revision 1.6 diff -u -p -r1.6 mntent.h --- include/mntent.h 2 Feb 2010 11:17:54 -0000 1.6 +++ include/mntent.h 5 Jun 2012 03:38:45 -0000 @@ -31,6 +31,7 @@ struct mntent #include FILE *setmntent (const char *__filep, const char *__type); struct mntent *getmntent (FILE *__filep); +struct mntent *getmntent_r (FILE *, struct mntent *, char *, int); int endmntent (FILE *__filep); #endif Index: include/cygwin/version.h =================================================================== RCS file: /cvs/src/src/winsup/cygwin/include/cygwin/version.h,v retrieving revision 1.370 diff -u -p -r1.370 version.h --- include/cygwin/version.h 10 May 2012 08:35:22 -0000 1.370 +++ include/cygwin/version.h 5 Jun 2012 03:38:45 -0000 @@ -430,12 +430,13 @@ details. */ 259: Export pthread_sigqueue. 260: Export scandirat. 261: Export memrchr. + 262: Export getmntent_r. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 261 +#define CYGWIN_VERSION_API_MINOR 262 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible Index: release/1.7.16 =================================================================== RCS file: /cvs/src/src/winsup/cygwin/release/1.7.16,v retrieving revision 1.8 diff -u -p -r1.8 1.7.16 --- release/1.7.16 3 Jun 2012 16:47:57 -0000 1.8 +++ release/1.7.16 5 Jun 2012 03:38:45 -0000 @@ -1,7 +1,7 @@ What's new: ----------- -- New API: memrchr. +- New API: getmntent_r, memrchr. - Support ReFS.