Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygserver_pwdgrp.h « cygwin « winsup - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 52b9b42ba453bb19a79a721bb34da386e1cc7f94 (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
62
63
64
65
66
67
68
69
70
71
72
73
/* cygserver_pwdgrp.h: Request account information

   Copyright 2014 Red Hat, Inc.

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"

class transport_layer_base;
class process_cache;

#ifdef __INSIDE_CYGWIN__
#include "pwdgrp.h"
#else
/* Don't include pwdgrp.h, but keep this in sync. */
enum fetch_user_arg_type_t {
  SID_arg,
  NAME_arg,
  ID_arg
};
#endif

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__ */