diff options
| author | Peter S. Mazinger <ps.m@gmx.net> | 2011-03-15 15:29:14 +0100 | 
|---|---|---|
| committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2012-06-15 14:00:24 +0200 | 
| commit | 84135275cfeebc0b233c1c96eeada4d4178a0b18 (patch) | |
| tree | e733a09d70c81dcaaac73d25fd24cee8bd77a622 /libc | |
| parent | a1281bdca476155f51bd5427c10ac1bb3e889423 (diff) | |
utent.c, wtent.c: move functions from utxent.c
before the change (threads enabled)
   text	   data	    bss	    dec	    hex	filename
   1107	      8	    408	   1523	    5f3	libc/misc/utmp/utent.os
    152	      0	      0	    152	     98	libc/misc/utmp/wtent.os
    240	      0	      0	    240	     f0	libc/misc/utmp/utxent.os
after the change
   text	   data	    bss	    dec	    hex	filename
   1072	      8	    408	   1488	    5d0	libc/misc/utmp/utent.os
    157	      0	      0	    157	     9d	libc/misc/utmp/wtent.os
    200	      0	      0	    200	     c8	libc/misc/utmp/utxent.os
The smaller size on utent.os is unexpected, could be due to better inlining/not inlining
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/misc/utmp/utent.c | 80 | ||||
| -rw-r--r-- | libc/misc/utmp/utxent.c | 4 | ||||
| -rw-r--r-- | libc/misc/utmp/wtent.c | 14 | 
3 files changed, 76 insertions, 22 deletions
diff --git a/libc/misc/utmp/utent.c b/libc/misc/utmp/utent.c index 07ca44eb2..a35bb2b84 100644 --- a/libc/misc/utmp/utent.c +++ b/libc/misc/utmp/utent.c @@ -19,6 +19,9 @@  #include <errno.h>  #include <string.h>  #include <utmp.h> +#ifdef __UCLIBC_HAS_UTMPX__ +# include <utmpx.h> +#endif  #include <not-cancel.h>  #include <bits/uClibc_mutex.h> @@ -31,7 +34,7 @@ static const char default_file_name[] = _PATH_UTMP;  static const char *static_ut_name = default_file_name;  /* This function must be called with the LOCK held */ -static void __setutent(void) +static void __setutent_unlocked(void)  {      if (static_fd < 0) {  	static_fd = open_not_cancel_2(static_ut_name, O_RDWR | O_CLOEXEC); @@ -50,19 +53,24 @@ static void __setutent(void)      lseek(static_fd, 0, SEEK_SET);  }  #if defined __UCLIBC_HAS_THREADS__ -void setutent(void) +static void __setutent(void)  {      __UCLIBC_MUTEX_LOCK(utmplock); -    __setutent(); +    __setutent_unlocked();      __UCLIBC_MUTEX_UNLOCK(utmplock);  }  #else +static void __setutent(void); +strong_alias(__setutent_unlocked,__setutent) +#endif  strong_alias(__setutent,setutent) + +#ifdef __UCLIBC_HAS_UTMPX__ +strong_alias(__setutent,setutxent)  #endif -libc_hidden_def(setutent)  /* This function must be called with the LOCK held */ -static struct utmp *__getutent(void) +static struct utmp *__getutent_unlocked(void)  {      if (static_fd < 0) {  	__setutent(); @@ -78,19 +86,27 @@ static struct utmp *__getutent(void)      return NULL;  }  #if defined __UCLIBC_HAS_THREADS__ -struct utmp *getutent(void) +static struct utmp *__getutent(void)  {      struct utmp *ret;      __UCLIBC_MUTEX_LOCK(utmplock); -    ret = __getutent(); +    ret = __getutent_unlocked();      __UCLIBC_MUTEX_UNLOCK(utmplock);      return ret;  }  #else +static struct utmp *__getutent(void); +strong_alias(__getutent_unlocked,__getutent) +#endif  strong_alias(__getutent,getutent) + +#ifdef __UCLIBC_HAS_UTMPX__ +struct utmpx *getutxent(void) +{ +	return (struct utmpx *) __getutent (); +}  #endif -libc_hidden_def(getutent)  static void __endutent(void)  { @@ -101,10 +117,13 @@ static void __endutent(void)      __UCLIBC_MUTEX_UNLOCK(utmplock);  }  strong_alias(__endutent,endutent) -libc_hidden_def(endutent) + +#ifdef __UCLIBC_HAS_UTMPX__ +strong_alias(__endutent,endutxent) +#endif  /* This function must be called with the LOCK held */ -static struct utmp *__getutid(const struct utmp *utmp_entry) +static struct utmp *__getutid_unlocked(const struct utmp *utmp_entry)  {      struct utmp *lutmp;      unsigned type; @@ -114,7 +133,7 @@ static struct utmp *__getutid(const struct utmp *utmp_entry)      type = utmp_entry->ut_type - 1;      type /= 4; -    while ((lutmp = __getutent()) != NULL) { +    while ((lutmp = __getutent_unlocked()) != NULL) {  	if (type == 0 && lutmp->ut_type == utmp_entry->ut_type)	{  	    /* one of RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME */  	    return lutmp; @@ -128,26 +147,34 @@ static struct utmp *__getutid(const struct utmp *utmp_entry)      return NULL;  }  #if defined __UCLIBC_HAS_THREADS__ -struct utmp *getutid(const struct utmp *utmp_entry) +static struct utmp *__getutid(const struct utmp *utmp_entry)  {      struct utmp *ret;      __UCLIBC_MUTEX_LOCK(utmplock); -    ret = __getutid(utmp_entry); +    ret = __getutid_unlocked(utmp_entry);      __UCLIBC_MUTEX_UNLOCK(utmplock);      return ret;  }  #else +static struct utmp *__getutid(const struct utmp *utmp_entry); +strong_alias(__getutid_unlocked,__getutid) +#endif  strong_alias(__getutid,getutid) + +#ifdef __UCLIBC_HAS_UTMPX__ +struct utmpx *getutxid(const struct utmpx *utmp_entry) +{ +	return (struct utmpx *) __getutid ((const struct utmp *) utmp_entry); +}  #endif -libc_hidden_def(getutid)  static struct utmp *__getutline(const struct utmp *utmp_entry)  {      struct utmp *lutmp;      __UCLIBC_MUTEX_LOCK(utmplock); -    while ((lutmp = __getutent()) != NULL) { +    while ((lutmp = __getutent_unlocked()) != NULL) {  	if (lutmp->ut_type == USER_PROCESS || lutmp->ut_type == LOGIN_PROCESS) {  	    if (strncmp(lutmp->ut_line, utmp_entry->ut_line, sizeof(lutmp->ut_line)) == 0) {  		break; @@ -158,7 +185,13 @@ static struct utmp *__getutline(const struct utmp *utmp_entry)      return lutmp;  }  strong_alias(__getutline,getutline) -libc_hidden_def(getutline) + +#ifdef __UCLIBC_HAS_UTMPX__ +struct utmpx *getutxline(const struct utmpx *utmp_entry) +{ +	return (struct utmpx *) __getutline ((const struct utmp *) utmp_entry); +} +#endif  static struct utmp *__pututline(const struct utmp *utmp_entry)  { @@ -167,7 +200,7 @@ static struct utmp *__pututline(const struct utmp *utmp_entry)         the file pointer where they want it, everything will work out. */      lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR); -    if (__getutid(utmp_entry) != NULL) +    if (__getutid_unlocked(utmp_entry) != NULL)  	lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR);      else  	lseek(static_fd, (off_t) 0, SEEK_END); @@ -178,7 +211,13 @@ static struct utmp *__pututline(const struct utmp *utmp_entry)      return (struct utmp *)utmp_entry;  }  strong_alias(__pututline,pututline) -libc_hidden_def(pututline) + +#ifdef __UCLIBC_HAS_UTMPX__ +struct utmpx *pututxline (const struct utmpx *utmp_entry) +{ +	return (struct utmpx *) __pututline ((const struct utmp *) utmp_entry); +} +#endif  static int __utmpname(const char *new_ut_name)  { @@ -202,4 +241,7 @@ static int __utmpname(const char *new_ut_name)      return 0; /* or maybe return -(static_ut_name != new_ut_name)? */  }  strong_alias(__utmpname,utmpname) -libc_hidden_def(utmpname) + +#ifdef __UCLIBC_HAS_UTMPX__ +strong_alias(__utmpname,utmpxname) +#endif diff --git a/libc/misc/utmp/utxent.c b/libc/misc/utmp/utxent.c index a0e80a662..71157ccd8 100644 --- a/libc/misc/utmp/utxent.c +++ b/libc/misc/utmp/utxent.c @@ -13,6 +13,7 @@  #include <utmpx.h>  #include <utmp.h> +#if 0 /* moved to utent.c */  void setutxent(void)  {  	setutent (); @@ -48,10 +49,12 @@ int utmpxname (const char *new_ut_name)  	return utmpname (new_ut_name);  } +/* moved to wtent.c */  void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)  {  	updwtmp (wtmpx_file, (const struct utmp *) utmpx);  } +#endif  /* Copy the information in UTMPX to UTMP. */  void getutmp (const struct utmpx *utmpx, struct utmp *utmp) @@ -104,4 +107,3 @@ void getutmpx (const struct utmp *utmp, struct utmpx *utmpx)  	utmpx->ut_time = utmp->ut_time;  #endif  } - diff --git a/libc/misc/utmp/wtent.c b/libc/misc/utmp/wtent.c index c97f89cff..97254262f 100644 --- a/libc/misc/utmp/wtent.c +++ b/libc/misc/utmp/wtent.c @@ -11,6 +11,9 @@  #include <time.h>  #include <unistd.h>  #include <utmp.h> +#ifdef __UCLIBC_HAS_UTMPX__ +# include <utmpx.h> +#endif  #include <fcntl.h>  #include <sys/file.h>  #include <not-cancel.h> @@ -33,7 +36,7 @@ void logwtmp (const char *line, const char *name, const char *host)  }  #endif -void updwtmp(const char *wtmp_file, const struct utmp *lutmp) +static void __updwtmp(const char *wtmp_file, const struct utmp *lutmp)  {      int fd; @@ -46,4 +49,11 @@ void updwtmp(const char *wtmp_file, const struct utmp *lutmp)  	}      }  } -libc_hidden_def(updwtmp) +strong_alias(__updwtmp,updwtmp) + +#ifdef __UCLIBC_HAS_UTMPX__ +void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx) +{ +	__updwtmp (wtmpx_file, (const struct utmp *) utmpx); +} +#endif  | 
