Convert utmp{x}name to int, return useful value. Define _PATH_UTMPX
* syscalls.cc (utmpname): Convert to int. Return 0 if strdup worked, -1 otherwise. * include/utmpx.h (_PATH_UTMPX): Define as _PATH_UTMP. (utmpxname): Declare as int function. * include/sys/utmp.h (utmpname): Ditto. * include/cygwin/version.h: Bump API minor version. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
		| @@ -474,13 +474,14 @@ details. */ | |||||||
|       290: Add sysconf cache handling. |       290: Add sysconf cache handling. | ||||||
|       291: Export aligned_alloc, at_quick_exit, quick_exit. |       291: Export aligned_alloc, at_quick_exit, quick_exit. | ||||||
|       292: Export rpmatch. |       292: Export rpmatch. | ||||||
|  |       293: Convert utmpname/utmpxname to int. | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
|      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull, |      /* Note that we forgot to bump the api for ualarm, strtoll, strtoull, | ||||||
| 	sigaltstack, sethostname. */ | 	sigaltstack, sethostname. */ | ||||||
|  |  | ||||||
| #define CYGWIN_VERSION_API_MAJOR 0 | #define CYGWIN_VERSION_API_MAJOR 0 | ||||||
| #define CYGWIN_VERSION_API_MINOR 292 | #define CYGWIN_VERSION_API_MINOR 293 | ||||||
|  |  | ||||||
|      /* There is also a compatibity version number associated with the |      /* There is also a compatibity version number associated with the | ||||||
| 	shared memory regions.  It is incremented when incompatible | 	shared memory regions.  It is incremented when incompatible | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ extern struct utmp *getutline (const struct utmp *); | |||||||
| extern struct utmp *pututline (const struct utmp *); | extern struct utmp *pututline (const struct utmp *); | ||||||
| extern void endutent (void); | extern void endutent (void); | ||||||
| extern void setutent (void); | extern void setutent (void); | ||||||
| extern void utmpname (const char *); | extern int utmpname (const char *); | ||||||
|  |  | ||||||
| void login (const struct utmp *); | void login (const struct utmp *); | ||||||
| int logout (const char *); | int logout (const char *); | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ | |||||||
| #include <cygwin/utmp.h> | #include <cygwin/utmp.h> | ||||||
| #include <sys/time.h> | #include <sys/time.h> | ||||||
|  |  | ||||||
|  | #define _PATH_UTMPX _PATH_UTMP | ||||||
| #define UTMPX_FILE _PATH_UTMP | #define UTMPX_FILE _PATH_UTMP | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| @@ -46,7 +47,7 @@ extern struct utmpx *getutxid (const struct utmpx *id); | |||||||
| extern struct utmpx *getutxline (const struct utmpx *line); | extern struct utmpx *getutxline (const struct utmpx *line); | ||||||
| extern struct utmpx *pututxline (const struct utmpx *utmpx); | extern struct utmpx *pututxline (const struct utmpx *utmpx); | ||||||
| extern void setutxent (void); | extern void setutxent (void); | ||||||
| extern void utmpxname (const char *file); | extern int utmpxname (const char *file); | ||||||
| extern void updwtmpx (const char *file, const struct utmpx *utmpx); | extern void updwtmpx (const char *file, const struct utmpx *utmpx); | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
|   | |||||||
| @@ -42,6 +42,9 @@ What changed: | |||||||
| - Fix (numeric and monetary) decimal point and thousands separator in | - Fix (numeric and monetary) decimal point and thousands separator in | ||||||
|   fa_IR and ps_AF locales to be aligned with Linux. |   fa_IR and ps_AF locales to be aligned with Linux. | ||||||
|  |  | ||||||
|  | - utmpname/utmpxname are now defined as int functions as on Linux. | ||||||
|  |   Addresses: https://cygwin.com/ml/cygwin/2015-12/msg00320.html | ||||||
|  |  | ||||||
|  |  | ||||||
| Bug Fixes | Bug Fixes | ||||||
| --------- | --------- | ||||||
|   | |||||||
| @@ -3955,7 +3955,7 @@ endutent () | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| extern "C" void | extern "C" int | ||||||
| utmpname (const char *file) | utmpname (const char *file) | ||||||
| { | { | ||||||
|   __try |   __try | ||||||
| @@ -3964,13 +3964,17 @@ utmpname (const char *file) | |||||||
| 	{ | 	{ | ||||||
| 	  endutent (); | 	  endutent (); | ||||||
| 	  utmp_file = strdup (file); | 	  utmp_file = strdup (file); | ||||||
|  | 	  if (utmp_file) | ||||||
|  | 	    { | ||||||
| 	      debug_printf ("New UTMP file: %s", utmp_file); | 	      debug_printf ("New UTMP file: %s", utmp_file); | ||||||
| 	  return; | 	      return 0; | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
|   __except (NO_ERROR) {} |     } | ||||||
|  |   __except (EFAULT) {} | ||||||
|   __endtry |   __endtry | ||||||
|   debug_printf ("Invalid file"); |   debug_printf ("Setting UTMP file failed"); | ||||||
|  |   return -1; | ||||||
| } | } | ||||||
|  |  | ||||||
| EXPORT_ALIAS (utmpname, utmpxname) | EXPORT_ALIAS (utmpname, utmpxname) | ||||||
|   | |||||||
| @@ -52,6 +52,10 @@ Fix (numeric and monetary) decimal point and thousands separator in | |||||||
| fa_IR and ps_AF locales to be aligned with Linux. | fa_IR and ps_AF locales to be aligned with Linux. | ||||||
| </para></listitem> | </para></listitem> | ||||||
|  |  | ||||||
|  | <listitem><para> | ||||||
|  | utmpname/utmpxname are now defined as int functions as on Linux. | ||||||
|  | </para></listitem> | ||||||
|  |  | ||||||
| </itemizedlist> | </itemizedlist> | ||||||
|  |  | ||||||
| </sect2> | </sect2> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user