summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/cygserver_pwdgrp.h
blob: fb22858dc931574401e82d24d1e771fef520935f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* cygserver_pwdgrp.h: Request account information

This file is part of Cygwin.

This software is a copyrighted work licensed under the terms of the
Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
details. */

#ifndef __CYGSERVER_PWDGRP_H__
#define __CYGSERVER_PWDGRP_H__

#include <sys/types.h>
#include "cygserver.h"
#include "userinfo.h"

class transport_layer_base;
class process_cache;

class client_request_pwdgrp : public client_request
{
  friend class client_request;

private:
  union _pwdgrp_param_t
  {
    struct _pwdgrp_in_t
    {
      bool group;
      fetch_user_arg_type_t type;
      union
      {
      	BYTE sid[40];
	char name[UNLEN + 1];
	uint32_t id;
      } arg;
    } in;

    struct
    {
      char line[1024];
    } out;
  } _parameters;

#ifndef __INSIDE_CYGWIN__
  client_request_pwdgrp ();
  virtual void serve (transport_layer_base *, process_cache *);
  void pwd_serve ();
  void grp_serve ();
#endif

public:

#ifdef __INSIDE_CYGWIN__
  client_request_pwdgrp (fetch_user_arg_t &arg, bool group);
#endif

  const char *line () const { return (msglen () > 0) ? _parameters.out.line
						     : NULL; }
};

#endif /* __CYGSERVER_PWDGRP_H__ */