ReactOS  0.4.12-dev-51-ge94618b
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 {
103  userlist(argc, argv);
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
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:47
int optind
Definition: getopt.c:47
__u16 time
Definition: mkdosfs.c:366
int mflag
Definition: finger.c:66
static char ** argv
Definition: ServiceArgs.c:11
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
time_t now
Definition: finger.c:65
static void userlist(int, char **)
Definition: finger.c:117
int pplan
Definition: finger.c:66
int sflag
Definition: finger.c:66
int lflag
Definition: finger.c:66
int getopt(int nargc, char *const *nargv, const char *ostr)
Definition: getopt.c:55
#define EOF
Definition: stdio.h:24
void usage()
Definition: finger.c:170
FILE * stderr
void exit(int exitcode)
Definition: _exit.c:33

◆ usage()

void usage ( void  )

Definition at line 170 of file finger.c.

Referenced by main().

171 {
173  "usage: finger [-lmps] login [...]\n");
174  exit(1);
175 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:47
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
FILE * stderr
void exit(int exitcode)
Definition: _exit.c:33

◆ userlist()

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

Definition at line 117 of file finger.c.

Referenced by main().

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 argc
Definition: ServiceArgs.c:12
#define MAKEWORD(a, b)
Definition: typedefs.h:247
#define free
Definition: debug_ros.c:5
INT WSAAPI WSACleanup(VOID)
Definition: startup.c:60
static char ** argv
Definition: ServiceArgs.c:11
void netfinger(char *name)
Definition: net.c:40
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
Definition: startup.c:113
smooth NULL
Definition: ftsmooth.c:416
c used
Definition: write.c:2876
unsigned short WORD
Definition: ntddk_ex.h:93
#define index(s, c)
Definition: various.h:29
#define err(...)
#define calloc
Definition: rosglue.h:14
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
FILE * stderr
#define malloc
Definition: debug_ros.c:4
void exit(int exitcode)
Definition: _exit.c:33
GLfloat GLfloat p
Definition: glext.h:8902

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 getit(), main(), mdelete(), mget(), mls(), mput(), and remglob().

◆ now

time_t now

Definition at line 65 of file finger.c.

Referenced by _Dispatch_type_(), add_special_defines(), adns__must_gettimeofday(), adns__procdgram(), adns__query_send(), adns__tcp_tryconnect(), CertDllVerifyRevocation(), ClasspRetryRequestDpc(), 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(), file_create2(), FTPGetOneF(), FTPUpdateIOTimer(), get_test_year(), GetStartSpoolDate(), gettimeofday(), InitLsMonths(), LogOpen(), look_for_roots(), LsCacheLookup(), main(), MediaControl_Run(), mknod(), move_across_subvols(), NetBTWaitForNameResponse(), open_file(), print_ttl(), QualityControlRender_WaitFor(), query_usetcp(), queue_current_time(), queue_timer_expire(), recvd_subvol(), NotifyArea::Refresh(), run_child_process(), SClose(), Scramble(), set_basic_information(), set_file_security(), set_link_information(), set_rename_information(), set_reparse_point(), set_symlink(), set_zero_data(), SnmpSvcGetUptime(), SRead(), SRecv(), SRecvfrom(), SSend(), SSendto(), SSendtoByName(), stream_set_end_of_file_information(), SWaitUntilReadyForReading(), SWaitUntilReadyForWriting(), SWrite(), tcp_events(), test_buffer(), test_buffer8(), test_cache_read(), test_get_state(), test_urlcacheA(), UnDate(), UnLslR(), UnMDTMDate(), update_chunk_cache(), update_chunk_caches(), urlcache_entry_is_expired(), warp_check(), write_file2(), 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().