1 /* Helper function for utmp functions to see if two entries are equal.
2    Copyright (C) 1996-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #include <string.h>
20 #include <utmp.h>
21 
22 #include "utmp-private.h"
23 
24 /* Test whether two entries match.  */
25 static int
__utmp_equal(const struct utmp * entry,const struct utmp * match)26 __utmp_equal (const struct utmp *entry, const struct utmp *match)
27 {
28   return (entry->ut_type == INIT_PROCESS
29           || entry->ut_type == LOGIN_PROCESS
30           || entry->ut_type == USER_PROCESS
31           || entry->ut_type == DEAD_PROCESS)
32     && (match->ut_type == INIT_PROCESS
33         || match->ut_type == LOGIN_PROCESS
34         || match->ut_type == USER_PROCESS
35         || match->ut_type == DEAD_PROCESS)
36     && (entry->ut_id[0] && match->ut_id[0]
37         ? strncmp (entry->ut_id, match->ut_id, sizeof match->ut_id) == 0
38         : (strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line)
39            == 0));
40 }
41