ReactOS 0.4.16-dev-334-g4d9f67c
finger.c File Reference
#include "precomp.h"
#include <time.h>
#include "getopt.h"
Include dependency graph for finger.c:

Go to the source code of this file.

Functions

static void userlist (int, char **)
 
void usage ()
 
int main (int argc, char **argv)
 

Variables

char__progname
 
time_t now
 
int lflag
 
int mflag
 
int pplan
 
int sflag
 

Function Documentation

◆ main()

int main ( int argc  ,
char **  argv 
)

Definition at line 72 of file finger.c.

73{
74 int ch;
75
76 while ((ch = getopt(argc, argv, "lmps")) != EOF)
77 switch(ch) {
78 case 'l':
79 lflag = 1; /* long format */
80 break;
81 case 'm':
82 mflag = 1; /* force exact match of names */
83 break;
84 case 'p':
85 pplan = 1; /* don't show .plan/.project */
86 break;
87 case 's':
88 sflag = 1; /* short format */
89 break;
90 case '?':
91 default:
93 "usage: finger [-lmps] login [...]\n");
94 exit(1);
95 }
96 argc -= optind;
97 argv += optind;
98
99 (void)time(&now);
100 if (!*argv) {
101 usage();
102 } else {
104 /*
105 * Assign explicit "large" format if names given and -s not
106 * explicitly stated. Force the -l AFTER we get names so any
107 * remote finger attempts specified won't be mishandled.
108 */
109 if (!sflag)
110 lflag = 1; /* if -s not explicit, force -l */
111 }
112 return 0;
113}
static int argc
Definition: ServiceArgs.c:12
int getopt(int nargc, char *const *nargv, const char *ostr)
Definition: getopt.c:55
int optind
Definition: getopt.c:47
int pplan
Definition: finger.c:66
void usage()
Definition: finger.c:170
time_t now
Definition: finger.c:65
int lflag
Definition: finger.c:66
int mflag
Definition: finger.c:66
int sflag
Definition: finger.c:66
static void userlist(int, char **)
Definition: finger.c:117
#define EOF
Definition: stdio.h:24
#define stderr
Definition: stdio.h:100
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
__u16 time
Definition: mkdosfs.c:8
#define argv
Definition: mplay32.c:18
#define exit(n)
Definition: config.h:202

◆ usage()

void usage ( void  )

Definition at line 170 of file finger.c.

171{
173 "usage: finger [-lmps] login [...]\n");
174 exit(1);
175}

Referenced by main().

◆ userlist()

static void userlist ( int  argc,
char **  argv 
)
static

Definition at line 117 of file finger.c.

118{
119 int *used = NULL;
120 char **ap, **nargv, **np, **p;
121 WORD wVersionRequested;
122 WSADATA wsaData;
123 int iErr;
124
125
126 if ((nargv = (char**) malloc((argc+1) * sizeof(char *))) == NULL ||
127 (used = (int*) calloc(argc, sizeof(int))) == NULL)
128 err(1, NULL);
129
130 /* Pull out all network requests into nargv. */
131 for (ap = p = argv, np = nargv; *p; ++p)
132 if (index(*p, '@'))
133 *np++ = *p;
134 else
135 *ap++ = *p;
136
137 *np++ = NULL;
138 *ap++ = NULL;
139
140 /* If there are local requests */
141 if (*argv)
142 {
143 fprintf(stderr, "Warning: Can't do local finger\n");
144 }
145
146 /* Start winsock */
147 wVersionRequested = MAKEWORD( 1, 1 );
148 iErr = WSAStartup( wVersionRequested, &wsaData );
149 if ( iErr != 0 )
150 {
151 /* Tell the user that we couldn't find a usable */
152 /* WinSock DLL. */
153 fprintf(stderr, "WSAStartup failed\n");
154 free(nargv);
155 free(used);
156 return;
157 }
158
159 /* Handle network requests. */
160 for (p = nargv; *p;)
161 netfinger(*p++);
162
163 /* Bring down winsock */
164 WSACleanup();
165 free(nargv);
166 free(used);
167 exit(0);
168}
static int used
Definition: adh-main.c:39
void netfinger(char *name)
Definition: net.c:40
#define index(s, c)
Definition: various.h:29
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
Definition: startup.c:113
unsigned short WORD
Definition: ntddk_ex.h:93
GLfloat GLfloat p
Definition: glext.h:8902
#define err(...)
#define calloc
Definition: rosglue.h:14
#define MAKEWORD(a, b)
Definition: typedefs.h:248
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36
int PASCAL FAR WSACleanup(void)
Definition: startup.c:60

Referenced by main().

Variable Documentation

◆ __progname

char* __progname

Definition at line 63 of file finger.c.

◆ lflag

int lflag

Definition at line 66 of file finger.c.

Referenced by main(), and netfinger().

◆ mflag

int mflag

Definition at line 66 of file finger.c.

Referenced by main(), mdelete(), mget(), mls(), mput(), and remglob().

◆ now

time_t now

Definition at line 65 of file finger.c.

Referenced by __attribute__(), __drv_requiresIRQL(), _Dispatch_type_(), add_special_defines(), adns__fdevents(), adns__internal_submit(), adns__must_gettimeofday(), adns__procdgram(), adns__query_send(), adns__search_next(), adns__tcp_tryconnect(), adns__timeouts(), adns__update_expires(), adns_afterselect(), adns_beforeselect(), adns_check(), adns_firsttimeout(), adns_processany(), adns_processreadable(), adns_processtimeouts(), adns_processwriteable(), adns_submit(), authunix_create(), authunix_refresh(), CertDllVerifyRevocation(), ClasspRetryRequestDpc(), clnt_dg_create(), clnt_vc_create(), collect_connections(), connection_collector(), CoWaitForMultipleHandles(), create_cache_entry(), create_directory_fcb(), create_stream(), create_subvol(), delete_fileref(), delete_reparse_point(), do_create_snapshot(), DSoundRender_DoRenderSample(), duplicate_extents(), Ext2FirstUnusedMcb(), Ext2QueryUnusedBH(), Ext2QueryUnusedFcb(), fd_event(), file_create2(), FTPGetOneF(), FTPUpdateIOTimer(), get_test_year(), GetStartSpoolDate(), gettimeofday(), InitLsMonths(), inter_maxtoabs(), LogOpen(), look_for_roots(), LsCacheLookup(), main(), MediaControl_Run(), mknod(), move_across_subvols(), NetBTWaitForNameResponse(), open_file3(), print_ttl(), QualityControlRender_WaitFor(), query_alloc(), query_simple(), query_submit(), query_usetcp(), queue_current_time(), queue_timer_expire(), readclock_GetTime(), recvd_subvol(), NotifyArea::Refresh(), run_child_process(), SClose(), set_basic_information(), set_file_security(), set_link_information(), set_rename_information(), set_reparse_point2(), set_symlink(), set_zero_data(), SnmpSvcGetUptime(), SRead(), SRecv(), SRecvfrom(), SSend(), SSendto(), SSendtoByName(), stream_set_end_of_file_information(), sw_check_timers(), SWaitUntilReadyForReading(), SWaitUntilReadyForWriting(), SWrite(), tcp_connected(), tcp_events(), test_buffer(), test_buffer8(), test_cache_read(), test_get_state(), test_urlcacheA(), timeouts_queue(), UnDate(), UnLslR(), UnLslRLine(), UnMDTMDate(), UNUSED(), update_chunk_cache(), update_chunk_caches(), urlcache_entry_is_expired(), warp_check(), write_one_file(), write_volume_label(), and WriteDefaultFirewallPrefs().

◆ pplan

int pplan

Definition at line 66 of file finger.c.

Referenced by main().

◆ sflag

int sflag

Definition at line 66 of file finger.c.

Referenced by main().