2 * Copyright (c) 1989, 1993
3 * The Regents of the University of California. All rights reserved.
5 * This code is derived from software contributed to Berkeley by
6 * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by the University of
19 * California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * 8/2/97 - Ted Felix <tfelix@fred.net>
37 * Ported to Win32 from 4.4BSD-LITE2 at wcarchive.
38 * NT Workstation already has finger, and it runs fine under
39 * Win95. Thought I'd do this anyways since not everyone has
41 * Had to remove local handling. Otherwise, same as whois.
45 static char copyright
[] =
46 "@(#) Copyright (c) 1989, 1993\n\
47 The Regents of the University of California. All rights reserved.\n";
51 static char sccsid
[] = "@(#)finger.c 8.5 (Berkeley) 5/4/95";
55 * Finger prints out information about users. It is not portable since
56 * certain fields (e.g. the full user name, office, and phone numbers) are
57 * extracted from the gecos field of the passwd file which other UNIXes
58 * may not have or may use for other things.
60 * There are currently two output formats; the short format is one line
61 * per user and displays login name, tty, login time, real name, idle time,
62 * and office location/phone number. The long format gives the same
63 * information (in a more legible format) as well as home directory, shell,
64 * mail info, and .plan/.project files.
83 int lflag
, mflag
, pplan
, sflag
;
85 static void userlist(int, char **);
87 void netfinger(char *);
90 main(int argc
, char **argv
)
94 while ((ch
= getopt(argc
, argv
, "lmps")) != EOF
)
97 lflag
= 1; /* long format */
100 mflag
= 1; /* force exact match of names */
103 pplan
= 1; /* don't show .plan/.project */
106 sflag
= 1; /* short format */
110 (void)fprintf(stderr
,
111 "usage: finger [-lmps] login [...]\n");
121 userlist(argc
, argv
);
123 * Assign explicit "large" format if names given and -s not
124 * explicitly stated. Force the -l AFTER we get names so any
125 * remote finger attempts specified won't be mishandled.
128 lflag
= 1; /* if -s not explicit, force -l */
135 userlist(int argc
, char **argv
)
138 char **ap
, **nargv
, **np
, **p
;
139 WORD wVersionRequested
;
144 if ((nargv
= malloc((argc
+1) * sizeof(char *))) == NULL
||
145 (used
= calloc(argc
, sizeof(int))) == NULL
)
148 /* Pull out all network requests into nargv. */
149 for (ap
= p
= argv
, np
= nargv
; *p
; ++p
)
158 /* If there are local requests */
161 fprintf(stderr
, "Warning: Can't do local finger\n");
165 wVersionRequested
= MAKEWORD( 1, 1 );
166 iErr
= WSAStartup( wVersionRequested
, &wsaData
);
169 /* Tell the user that we couldn't find a usable */
171 fprintf(stderr
, "WSAStartup failed\n");
175 /* Handle network requests. */
179 /* Bring down winsock */
186 (void)fprintf(stderr
,
187 "usage: finger [-lmps] login [...]\n");