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 <assert.h>
13#include <process.h>
14#include <stdlib.h>
15
16#include "Platform.h"
17#include "llvm/Support/ErrorHandling.h"
18
19int 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
41int 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
49int tcsetattr(int fd, int optional_actions, const struct termios *termios_p) {
50  llvm_unreachable("Not implemented!");
51}
52
53int 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