1 //===-- Platform.cpp --------------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // this file is only relevant for Visual C++
10 #if defined(_WIN32)
11 
12 #include <cassert>
13 #include <cstdlib>
14 #include <process.h>
15 
16 #include "Platform.h"
17 #include "llvm/Support/ErrorHandling.h"
18 
19 int ioctl(int d, int request, ...) {
20   switch (request) {
21   // request the console windows size
22   case (TIOCGWINSZ): {
23     va_list vl;
24     va_start(vl, request);
25     // locate the window size structure on stack
26     winsize *ws = va_arg(vl, winsize *);
27     // get screen buffer information
28     CONSOLE_SCREEN_BUFFER_INFO info;
29     if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info) ==
30         TRUE)
31       // fill in the columns
32       ws->ws_col = info.dwMaximumWindowSize.X;
33     va_end(vl);
34     return 0;
35   } break;
36   default:
37     llvm_unreachable("Not implemented!");
38   }
39 }
40 
41 int kill(pid_t pid, int sig) {
42   // is the app trying to kill itself
43   if (pid == getpid())
44     exit(sig);
45   //
46   llvm_unreachable("Not implemented!");
47 }
48 
49 int tcsetattr(int fd, int optional_actions, const struct termios *termios_p) {
50   llvm_unreachable("Not implemented!");
51 }
52 
53 int tcgetattr(int fildes, struct termios *termios_p) {
54   //  assert( !"Not implemented!" );
55   // error return value (0=success)
56   return -1;
57 }
58 
59 #endif
60