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

dev_fd.cc « fhandler « cygwin « winsup - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 96ebd85ea7219e30aead97ad74b13d5079d948cf (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
/* fhandler_process_fd.cc: fhandler for the /dev/{fd,std{in,out,err}} symlinks

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

#include "winsup.h"
#include "path.h"
#include "fhandler.h"

fhandler_dev_fd::fhandler_dev_fd ():
  fhandler_virtual ()
{
}

virtual_ftype_t
fhandler_dev_fd::exists ()
{
  return virt_symlink;
}

int
fhandler_dev_fd::fstat (struct stat *buf)
{
  const char *path = get_name ();
  debug_printf ("fstat (%s)", path);

  fhandler_base::fstat (buf);

  buf->st_mode = S_IFLNK | STD_RBITS | S_IWUSR | S_IWGRP | S_IWOTH | STD_XBITS;
  buf->st_ino = get_ino ();

  return 0;
}

bool
fhandler_dev_fd::fill_filebuf ()
{
  const char *path = get_name ();
  debug_printf ("fill_filebuf (%s)", path);

  const char *native = get_native_name ();
  if (!native)
    {
      return false;
    }

  free(filebuf);
  filebuf = cstrdup (native);
  return true;
}