mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-02 22:11:54 +02:00
40604: revert to the old method if getutent() is not available
This commit is contained in:
parent
1b0541c52f
commit
8328b79286
3 changed files with 28 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-02-23 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
|
||||
|
||||
* 40604: configure.ac, Src/watch.c: revert to the old method if
|
||||
getutent() is not available
|
||||
|
||||
2017-02-21 Barton E. Schaefer <schaefer@zsh.org>
|
||||
|
||||
* Julien Nicoulaud: 40586:
|
||||
|
|
26
Src/watch.c
26
Src/watch.c
|
@ -91,6 +91,9 @@
|
|||
# define setutent setutxent
|
||||
# define getutent getutxent
|
||||
# define endutent endutxent
|
||||
# ifndef HAVE_GETUTENT
|
||||
# define HAVE_GETUTENT 1
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/*
|
||||
|
@ -482,21 +485,32 @@ ucmp(WATCH_STRUCT_UTMP *u, WATCH_STRUCT_UTMP *v)
|
|||
static int
|
||||
readwtab(WATCH_STRUCT_UTMP **head, int initial_sz)
|
||||
{
|
||||
WATCH_STRUCT_UTMP *uptr, *tmp;
|
||||
WATCH_STRUCT_UTMP *uptr;
|
||||
int wtabmax = initial_sz < 2 ? 32 : initial_sz;
|
||||
int sz = 0;
|
||||
# ifdef HAVE_GETUTENT
|
||||
WATCH_STRUCT_UTMP *tmp;
|
||||
# else
|
||||
FILE *in;
|
||||
# endif
|
||||
|
||||
uptr = *head = (WATCH_STRUCT_UTMP *)
|
||||
zalloc(wtabmax * sizeof(WATCH_STRUCT_UTMP));
|
||||
# ifdef HAVE_GETUTENT
|
||||
setutent();
|
||||
while ((tmp = getutent()) != NULL) {
|
||||
memcpy(uptr, tmp, sizeof (WATCH_STRUCT_UTMP));
|
||||
# else
|
||||
if (!(in = fopen(WATCH_UTMP_FILE, "r")))
|
||||
return 0;
|
||||
while (fread(uptr, sizeof(WATCH_STRUCT_UTMP), 1, in)) {
|
||||
# endif
|
||||
# ifdef USER_PROCESS
|
||||
if (tmp->ut_type == USER_PROCESS)
|
||||
if (uptr->ut_type == USER_PROCESS)
|
||||
# else /* !USER_PROCESS */
|
||||
if (tmp->ut_name[0])
|
||||
if (uptr->ut_name[0])
|
||||
# endif /* !USER_PROCESS */
|
||||
{
|
||||
memcpy(uptr, tmp, sizeof (WATCH_STRUCT_UTMP));
|
||||
uptr++;
|
||||
if (++sz == wtabmax) {
|
||||
uptr = (WATCH_STRUCT_UTMP *)
|
||||
|
@ -512,7 +526,11 @@ readwtab(WATCH_STRUCT_UTMP **head, int initial_sz)
|
|||
}
|
||||
}
|
||||
}
|
||||
# ifdef HAVE_GETUTENT
|
||||
endutent();
|
||||
# else
|
||||
fclose(in);
|
||||
# endif
|
||||
|
||||
if (sz)
|
||||
qsort((void *) *head, sz, sizeof(WATCH_STRUCT_UTMP),
|
||||
|
|
|
@ -1325,7 +1325,7 @@ AC_CHECK_FUNCS(strftime strptime mktime timelocal \
|
|||
cygwin_conv_path \
|
||||
nanosleep \
|
||||
srand_deterministic \
|
||||
setutxent getutxent endutxent)
|
||||
setutxent getutxent endutxent getutent)
|
||||
AC_FUNC_STRCOLL
|
||||
|
||||
AH_TEMPLATE([REALPATH_ACCEPTS_NULL],
|
||||
|
|
Loading…
Reference in a new issue