OSDN Git Service

こっそり、気持ち程度の日本語化しました (UTF-8 / Windows 環境用)。
[ring-lang-081/annotated-ring-with-OmegaT.git] / source / src / ring_vmos.c
1 /*
2 **  Copyright (c) 2013-2019 Mahmoud Fayed <msfclipper@yahoo.com> 
3 **  Include Files 
4 */
5 #ifdef _WIN32
6 #include "windows.h"
7 typedef int (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); ;
8 LPFN_ISWOW64PROCESS fnCheckWindows64  ;
9 #endif
10 #include "ring.h"
11 #include "ring_vmos.h"
12 /* Functions */
13
14 void ring_vm_os_loadfunctions ( RingState *pRingState )
15 {
16         ring_vm_funcregister("ismsdos",ring_vm_os_ismsdos);
17         ring_vm_funcregister("iswindows",ring_vm_os_iswindows);
18         ring_vm_funcregister("iswindows64",ring_vm_os_iswindows64);
19         ring_vm_funcregister("isunix",ring_vm_os_isunix);
20         ring_vm_funcregister("ismacosx",ring_vm_os_ismacosx);
21         ring_vm_funcregister("islinux",ring_vm_os_islinux);
22         ring_vm_funcregister("isfreebsd",ring_vm_os_isfreebsd);
23         ring_vm_funcregister("isandroid",ring_vm_os_isandroid);
24         ring_vm_funcregister("windowsnl",ring_vm_os_windowsnl);
25         ring_vm_funcregister("currentdir",ring_vm_os_currentdir);
26         ring_vm_funcregister("exefilename",ring_vm_os_exefilename);
27         ring_vm_funcregister("chdir",ring_vm_os_chdir);
28         ring_vm_funcregister("exefolder",ring_vm_os_exefolder);
29 }
30
31 void ring_vm_os_ismsdos ( void *pPointer )
32 {
33         #if defined(MSDOS) || defined(__MSDOS__) || defined(_MSDOS) || defined(__DOS__)
34         RING_API_RETNUMBER(1);
35         #else
36         RING_API_RETNUMBER(0);
37         #endif
38 }
39
40 void ring_vm_os_iswindows ( void *pPointer )
41 {
42         #ifdef _WIN32
43         RING_API_RETNUMBER(1);
44         #else
45         RING_API_RETNUMBER(0);
46         #endif
47 }
48
49 void ring_vm_os_iswindows64 ( void *pPointer )
50 {
51         int lSystem64  ;
52         #ifdef _WIN32
53         HMODULE pModule  ;
54         lSystem64 = 0 ;
55         pModule = GetModuleHandle(TEXT("kernel32"));
56         if ( pModule != NULL ) {
57                 fnCheckWindows64 = (LPFN_ISWOW64PROCESS) GetProcAddress(pModule,"IsWow64Process") ;
58                 if ( fnCheckWindows64 != NULL ) {
59                         fnCheckWindows64(GetCurrentProcess(),&lSystem64);
60                         RING_API_RETNUMBER(lSystem64);
61                         return ;
62                 }
63         }
64         #endif
65         RING_API_RETNUMBER(0.0);
66 }
67
68 void ring_vm_os_isunix ( void *pPointer )
69 {
70         #if defined(unix) || defined(__unix__) || defined(__unix)
71         RING_API_RETNUMBER(1);
72         #else
73         RING_API_RETNUMBER(0);
74         #endif
75 }
76
77 void ring_vm_os_ismacosx ( void *pPointer )
78 {
79         #if defined(__APPLE__)  || defined(__MACH__)
80         RING_API_RETNUMBER(1);
81         #else
82         RING_API_RETNUMBER(0);
83         #endif
84 }
85
86 void ring_vm_os_islinux ( void *pPointer )
87 {
88         #ifdef __linux__
89         RING_API_RETNUMBER(1);
90         #else
91         RING_API_RETNUMBER(0);
92         #endif
93 }
94
95 void ring_vm_os_isfreebsd ( void *pPointer )
96 {
97         #ifdef __FreeBSD__
98         RING_API_RETNUMBER(1);
99         #else
100         RING_API_RETNUMBER(0);
101         #endif
102 }
103
104 void ring_vm_os_isandroid ( void *pPointer )
105 {
106         #ifdef __ANDROID__
107         RING_API_RETNUMBER(1);
108         #else
109         RING_API_RETNUMBER(0);
110         #endif
111 }
112
113 void ring_vm_os_windowsnl ( void *pPointer )
114 {
115         RING_API_RETSTRING("\r\n");
116 }
117
118 void ring_vm_os_currentdir ( void *pPointer )
119 {
120         char cDirPath[RING_PATHSIZE]  ;
121         ring_currentdir(cDirPath);
122         RING_API_RETSTRING(cDirPath);
123 }
124
125 void ring_vm_os_exefilename ( void *pPointer )
126 {
127         char cDirPath[RING_PATHSIZE]  ;
128         if ( ring_exefilename(cDirPath) ) {
129                 RING_API_RETSTRING(cDirPath);
130         }
131 }
132
133 void ring_vm_os_chdir ( void *pPointer )
134 {
135         RING_API_RETNUMBER(ring_chdir(RING_API_GETSTRING(1)));
136 }
137
138 void ring_vm_os_exefolder ( void *pPointer )
139 {
140         char cDirPath[RING_PATHSIZE]  ;
141         ring_exefolder(cDirPath);
142         RING_API_RETSTRING(cDirPath);
143 }