blob: 5b5286e6811400a74a332b53ea38dac41c3402e8 [file] [log] [blame]
Deepak Panickal429222c2013-10-15 15:46:40 +00001//===-- Platform.cpp --------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// this file is only relevant for Visual C++
11#if defined( _MSC_VER )
12
13#include <process.h>
14#include <assert.h>
15
16#include "Platform.h"
17
18// index one of the variable arguments
19// presuming "(EditLine *el, ..." is first in the argument list
20#define GETARG( Y, X ) ( (void* ) *( ( (int**) &(Y) ) + (X) ) )
21
22// the control handler or SIGINT handler
23static sighandler_t _ctrlHandler = NULL;
24
25// the default console control handler
26BOOL
27WINAPI CtrlHandler (DWORD ctrlType)
28{
29 if ( _ctrlHandler != NULL )
30 {
31 _ctrlHandler( 0 );
32 return TRUE;
33 }
34 return FALSE;
35}
36
37int
38ioctl (int d, int request, ...)
39{
40 switch ( request )
41 {
42 // request the console windows size
43 case ( TIOCGWINSZ ):
44 {
45 // locate the window size structure on stack
46 winsize *ws = (winsize*) GETARG( d, 2 );
47 // get screen buffer information
48 CONSOLE_SCREEN_BUFFER_INFO info;
49 GetConsoleScreenBufferInfo( GetStdHandle( STD_OUTPUT_HANDLE ), &info );
50 // fill in the columns
51 ws->ws_col = info.dwMaximumWindowSize.X;
52 //
53 return 0;
54 }
55 break;
56 default:
57 assert( !"Not implemented!" );
58 }
59 return -1;
60}
61
62int
63kill (pid_t pid, int sig)
64{
65 // is the app trying to kill itself
66 if ( pid == getpid( ) )
67 exit( sig );
68 //
69 assert( !"Not implemented!" );
70 return -1;
71}
72
73int
74tcsetattr (int fd, int optional_actions, const struct termios *termios_p)
75{
76 assert( !"Not implemented!" );
77 return -1;
78}
79
80int
81tcgetattr (int fildes, struct termios *termios_p)
82{
83// assert( !"Not implemented!" );
84 // error return value (0=success)
85 return -1;
86}
87
88sighandler_t
89signal (int sig, sighandler_t sigFunc)
90{
91 switch ( sig )
92 {
93 case ( SIGINT ):
94 {
95 _ctrlHandler = sigFunc;
96 SetConsoleCtrlHandler( CtrlHandler, TRUE );
97 }
98 break;
99 case ( SIGPIPE ):
100 case ( SIGWINCH ):
101 case ( SIGTSTP ):
102 case ( SIGCONT ):
103 // ignore these for now
104 break;
105 default:
106 assert( !"Not implemented!" );
107 }
108 return 0;
109}
110
111#endif