1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "common/napi_helper.cpp"
17 #include "common/native_common.h"
18 #include "napi/native_api.h"
19 #include <cstdlib>
20 #include <cstring>
21 #include <err.h>
22 #include <fcntl.h>
23 #include <getopt.h>
24 #include <glob.h>
25 #include <ifaddrs.h>
26 #include <js_native_api.h>
27 #include <js_native_api_types.h>
28 #include <linux/quota.h>
29 #include <net/if.h>
30 #include <node_api.h>
31 #include <sys/inotify.h>
32 #include <sys/random.h>
33 #include <sys/syscall.h>
34 #include <sys/sysinfo.h>
35 #include <unistd.h>
36 #include <utmp.h>
37 #include <uv.h>
38
39 #define BACKGROUND (0)
40 #define FOREGROUND (1)
41 #define TCGETPGRPERROR (-1)
42 #define ONEVAL 1
43 #define LASTONEVAL (-1)
44 #define THIRTEEN 13
45
46 #define SUCCESS 1
47 #define FAIL (-1)
48 #define ONE 1
49 #define LENGTH 64
50 #define TWO 2
51 #define SIZE_64 64
52 #define DEF_VALUE (-2)
53 #define PATH2 "/data/storage/el2/base/files/text2.txt"
54 #define FILEPATH "/data/storage/el2/base/files"
55 #define PATH "/data/storage/el2/base/files/test.txt"
56 #define PATH_DIR "/data/storage/el2/base/files/"
57
58 #define TEST_ALARM_TIME 2
59 #define NO_ERR 0
60 #define TEST_MODE 0666
61 #define TEST_0777 0777
62 #define TEST_ID_VALUE 100
63
64 #define PARAM_0 0
65 #define PARAM_1 1
66 #define MPARAM_1 (-1)
67 #define PARAM_2 2
68 #define PARAM_3 3
69 #define PARAM_10 10
70 #define PARAM_64 64
71 #define PARAM_32 32
72 #define PARAM_128 128
73 #define PARAM_256 256
74 #define PARAM_666 666
75 #define PARAM_127 127
76 #define PARAM_0x0 0x0
77 #define PARAM_5 5
78 #define PARAM_6 6
79 #define PARAM_0444 0444
80 #define PARAM_0777 0777
81 #define PARAM_UNNORMAL (-1)
82 #define RETURN_0 0
83 #define FAILD (-1)
84 #define ERRON_0 0
85 #define SIZE_10 10
86 #define SIZE_100 100
87 #define SIZE_50 50
88 #define SIZE_200 200
89 #define SIZE_4096 4096
90 #define SIZE_8192 8192
91 #define TIMEDIFF 2000
92 #define TEST_BUFFER_SIZE 64
93 #define TEST_DUP 35
94 #define MINUSONE (-1)
95 #define GROUPS_MAX 2
96 #define PARAM_20 20
97 extern "C" ssize_t __readlink_chk(const char *, char *, size_t, size_t);
98
Setpgid(napi_env env, napi_callback_info info)99 static napi_value Setpgid(napi_env env, napi_callback_info info)
100 {
101 size_t argc = PARAM_2;
102 napi_value args[PARAM_2] = {nullptr};
103 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
104 int first;
105 napi_get_value_int32(env, args[PARAM_0], &first);
106 int second;
107 napi_get_value_int32(env, args[PARAM_1], &second);
108 pid_t pid = first;
109 pid_t pgid = second;
110 int setpgidd = setpgid(pid, pgid);
111 napi_value result;
112 napi_create_int32(env, setpgidd, &result);
113 return result;
114 }
115
Setpgrp(napi_env env, napi_callback_info info)116 static napi_value Setpgrp(napi_env env, napi_callback_info info)
117 {
118 size_t argc = PARAM_1;
119 napi_value args[PARAM_1] = {nullptr};
120 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
121 int first;
122 napi_get_value_int32(env, args[PARAM_0], &first);
123 napi_value result;
124 pid_t pt = setpgrp();
125 if (first == LASTONEVAL) {
126 if (pt == LASTONEVAL && getpgrp() != getpid()) {
127 napi_create_double(env, pt, &result);
128 } else {
129 napi_create_double(env, ONEVAL, &result);
130 }
131 } else {
132 napi_create_double(env, pt, &result);
133 }
134 return result;
135 }
136
Setresuid(napi_env env, napi_callback_info info)137 static napi_value Setresuid(napi_env env, napi_callback_info info)
138 {
139 uid_t uid = LASTONEVAL;
140 int setval = setresuid(uid, uid, uid);
141 napi_value result;
142 napi_create_int32(env, setval, &result);
143 return result;
144 }
145
GetGroups(napi_env env, napi_callback_info info)146 static napi_value GetGroups(napi_env env, napi_callback_info info)
147 {
148 size_t argc = 1;
149 napi_value args[1] = {nullptr};
150 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
151
152 int valueZero;
153 napi_get_value_int32(env, args[0], &valueZero);
154
155 int getInfo = FAIL;
156 int size = valueZero;
157 gid_t list[PARAM_32];
158 getInfo = getgroups(sizeof(size), list);
159 if (getInfo != FAIL) {
160 getInfo = NO_ERR;
161 }
162 napi_value result = nullptr;
163 napi_create_int32(env, getInfo, &result);
164 return result;
165 }
166
GetPid(napi_env env, napi_callback_info info)167 static napi_value GetPid(napi_env env, napi_callback_info info)
168 {
169 pid_t getInfo = FAIL;
170 getInfo = getpid();
171 napi_value result = nullptr;
172 napi_create_int32(env, getInfo, &result);
173 return result;
174 }
GetPPid(napi_env env, napi_callback_info info)175 static napi_value GetPPid(napi_env env, napi_callback_info info)
176 {
177 pid_t getInfo = FAIL;
178 getInfo = getppid();
179 napi_value result = nullptr;
180 napi_create_int32(env, getInfo, &result);
181 return result;
182 }
GetPGrp(napi_env env, napi_callback_info info)183 static napi_value GetPGrp(napi_env env, napi_callback_info info)
184 {
185 int setResult = setpgrp();
186 pid_t getInfo = FAIL;
187 if (setResult == PARAM_0) {
188 getInfo = getpgrp();
189 }
190 if (getInfo != FAIL) {
191 getInfo = SUCCESS;
192 }
193 napi_value result = nullptr;
194 napi_create_int32(env, getInfo, &result);
195 return result;
196 }
Crypt(napi_env env, napi_callback_info info)197 static napi_value Crypt(napi_env env, napi_callback_info info)
198 {
199 size_t argc = PARAM_1;
200 napi_value args[PARAM_1] = {nullptr};
201 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
202 const char *key = "password";
203 size_t lenA;
204 size_t lenV = PARAM_32;
205 char *salt = static_cast<char *>(malloc(sizeof(char) * lenV));
206 napi_get_value_string_utf8(env, args[PARAM_0], salt, lenV, &lenA);
207 char *cryptResult = crypt(key, salt);
208 napi_value result = nullptr;
209 napi_create_string_utf8(env, cryptResult, NAPI_AUTO_LENGTH, &result);
210 return result;
211 }
GetPGid(napi_env env, napi_callback_info info)212 static napi_value GetPGid(napi_env env, napi_callback_info info)
213 {
214 int ret = FAIL;
215 pid_t getInfo = getpgid(getpid());
216 if (getInfo != FAIL) {
217 ret = SUCCESS;
218 }
219 napi_value result = nullptr;
220 napi_create_int32(env, ret, &result);
221 return result;
222 }
223
GetSid(napi_env env, napi_callback_info info)224 static napi_value GetSid(napi_env env, napi_callback_info info)
225 {
226 size_t argc = PARAM_1;
227 napi_value args[PARAM_1] = {nullptr};
228 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
229
230 double valueZero;
231 napi_get_value_double(env, args[PARAM_0], &valueZero);
232
233 pid_t getInfo = FAIL;
234 getInfo = getsid(valueZero);
235 if (FAIL != getInfo) {
236 getInfo = SUCCESS;
237 }
238
239 napi_value result = nullptr;
240 napi_create_int32(env, getInfo, &result);
241 return result;
242 }
243
GetUid(napi_env env, napi_callback_info info)244 static napi_value GetUid(napi_env env, napi_callback_info info)
245 {
246 uid_t uid = getuid();
247 int ret = FAIL;
248 if (uid != FAIL) {
249 ret = SUCCESS;
250 }
251 napi_value result = nullptr;
252 napi_create_int32(env, ret, &result);
253 return result;
254 }
255
GetLogin(napi_env env, napi_callback_info info)256 static napi_value GetLogin(napi_env env, napi_callback_info info)
257 {
258 char *getInfo = nullptr;
259 getInfo = getlogin();
260 int ret = FAIL;
261 if (getInfo == nullptr) {
262 setenv("LOGNAME", "newlogname", PARAM_1);
263 getInfo = getlogin();
264 unsetenv("LOGNAME");
265 }
266 if (getInfo != nullptr) {
267 ret = SUCCESS;
268 }
269 napi_value result = nullptr;
270 napi_create_int32(env, ret, &result);
271 return result;
272 }
273
GetLoginR(napi_env env, napi_callback_info info)274 static napi_value GetLoginR(napi_env env, napi_callback_info info)
275 {
276 char szUserName[256] = {0};
277 int ret = getlogin_r(szUserName, PARAM_256);
278 if (ret == PARAM_6) {
279 int senv = setenv("LOGNAME", "newlogname", SIZE_10);
280 if (senv == PARAM_0) {
281 ret = getlogin_r(szUserName, PARAM_256);
282 if (ret == PARAM_0) {
283 ret = PARAM_1;
284 }
285 }
286 unsetenv("LOGNAME");
287 }
288 napi_value result = nullptr;
289 napi_create_int32(env, ret, &result);
290 return result;
291 }
292
GetOpt(napi_env env, napi_callback_info info)293 static napi_value GetOpt(napi_env env, napi_callback_info info)
294 {
295 size_t argc = PARAM_1;
296 napi_value args[PARAM_1] = {nullptr};
297 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
298
299 size_t length = LENGTH;
300 size_t strResult = PARAM_0;
301 char *strTemp = static_cast<char *>(malloc(sizeof(char) * length));
302
303 napi_get_value_string_utf8(env, args[PARAM_0], strTemp, length, &strResult);
304 optind = PARAM_0;
305 int optArgc = PARAM_3;
306 char cmdline[SIZE_50] = "./parse_cmdline";
307 char para[SIZE_100] = "100";
308 char *optArgv[] = {cmdline, strTemp, para};
309 char optString[SIZE_50] = "a:b:c:d";
310 int getInfo = getopt(optArgc, optArgv, optString);
311
312 napi_value result = nullptr;
313 napi_create_int32(env, getInfo, &result);
314 return result;
315 }
316
GetTid(napi_env env, napi_callback_info info)317 static napi_value GetTid(napi_env env, napi_callback_info info)
318 {
319 pid_t getInfo = FAIL;
320 getInfo = gettid();
321 napi_value result = nullptr;
322 napi_create_int32(env, getInfo, &result);
323 return result;
324 }
325
GetEUid(napi_env env, napi_callback_info info)326 static napi_value GetEUid(napi_env env, napi_callback_info info)
327 {
328 uid_t getInfo = PARAM_0;
329 getInfo = geteuid();
330 napi_value result = nullptr;
331 napi_create_int32(env, getInfo, &result);
332 return result;
333 }
334
GetGid(napi_env env, napi_callback_info info)335 static napi_value GetGid(napi_env env, napi_callback_info info)
336 {
337 uid_t getInfo = PARAM_0;
338 getInfo = getgid();
339 napi_value result = nullptr;
340 napi_create_int32(env, getInfo, &result);
341 return result;
342 }
343
GetEGid(napi_env env, napi_callback_info info)344 static napi_value GetEGid(napi_env env, napi_callback_info info)
345 {
346 uid_t getInfo = PARAM_0;
347 getInfo = getegid();
348 napi_value result = nullptr;
349 napi_create_int32(env, getInfo, &result);
350 return result;
351 }
352
GetHostName(napi_env env, napi_callback_info info)353 static napi_value GetHostName(napi_env env, napi_callback_info info)
354 {
355 char name[65];
356 int getInfo = gethostname(name, sizeof(name));
357 napi_value result = nullptr;
358 napi_create_int32(env, getInfo, &result);
359 return result;
360 }
GetPageSize(napi_env env, napi_callback_info info)361 static napi_value GetPageSize(napi_env env, napi_callback_info info)
362 {
363 int getInfo = getpagesize();
364 napi_value result = nullptr;
365 napi_create_int32(env, getInfo, &result);
366 return result;
367 }
368
GetDTableSize(napi_env env, napi_callback_info info)369 static napi_value GetDTableSize(napi_env env, napi_callback_info info)
370 {
371 int getInfo = getdtablesize();
372 napi_value result = nullptr;
373 napi_create_int32(env, getInfo, &result);
374 return result;
375 }
GetReSuid(napi_env env, napi_callback_info info)376 static napi_value GetReSuid(napi_env env, napi_callback_info info)
377 {
378 uid_t ruid = THIRTEEN;
379 uid_t euid = THIRTEEN;
380 uid_t suid = THIRTEEN;
381
382 int getInfo = getresuid(&ruid, &euid, &suid);
383
384 napi_value result = nullptr;
385 napi_create_int32(env, getInfo, &result);
386 return result;
387 }
388
GetResGid(napi_env env, napi_callback_info info)389 static napi_value GetResGid(napi_env env, napi_callback_info info)
390 {
391 gid_t rgid = THIRTEEN;
392 gid_t egid = THIRTEEN;
393 gid_t sgid = THIRTEEN;
394 int getInfo = getresgid(&rgid, &egid, &sgid);
395 napi_value result = nullptr;
396 napi_create_int32(env, getInfo, &result);
397 return result;
398 }
399
Sleep(napi_env env, napi_callback_info info)400 static napi_value Sleep(napi_env env, napi_callback_info info)
401 {
402 size_t argc = PARAM_1;
403 napi_value args[PARAM_1] = {nullptr};
404 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
405 int valueZero;
406 napi_get_value_int32(env, args[PARAM_0], &valueZero);
407 int sin_value = sleep(valueZero);
408 napi_value result = nullptr;
409 napi_create_int32(env, sin_value, &result);
410 return result;
411 }
412
Isatty(napi_env env, napi_callback_info info)413 static napi_value Isatty(napi_env env, napi_callback_info info)
414 {
415 int fd = open("/data/storage/el2/base/files/test.txt", O_CREAT, PARAM_0777);
416 int sin_value = isatty(fd);
417 close(fd);
418 napi_value result = nullptr;
419 napi_create_int32(env, sin_value, &result);
420 return result;
421 }
422
Swab(napi_env env, napi_callback_info info)423 static napi_value Swab(napi_env env, napi_callback_info info)
424 {
425 size_t argc = PARAM_1;
426 napi_value args[PARAM_1] = {nullptr};
427 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
428 int valueFirst;
429 napi_get_value_int32(env, args[PARAM_0], &valueFirst);
430 char *sigValue;
431 char src[PARAM_20] = "ABCD";
432 char dest[PARAM_20] = "abcd";
433 if (valueFirst == PARAM_0) {
434 swab(src, dest, TWO);
435 sigValue = dest;
436 } else {
437 swab(src, dest, FAIL);
438 sigValue = dest;
439 }
440 napi_value result;
441 napi_create_string_utf8(env, sigValue, NAPI_AUTO_LENGTH, &result);
442 return result;
443 }
Sync(napi_env env, napi_callback_info info)444 static napi_value Sync(napi_env env, napi_callback_info info)
445 {
446 errno = ERRON_0;
447 sync();
448 napi_value result = nullptr;
449 napi_create_int32(env, errno, &result);
450 return result;
451 }
452
Syncfs(napi_env env, napi_callback_info info)453 static napi_value Syncfs(napi_env env, napi_callback_info info)
454 {
455 int syncfs_value = syncfs(FAIL);
456 napi_value result = nullptr;
457 napi_create_int32(env, syncfs_value, &result);
458 return result;
459 }
460
Syscall(napi_env env, napi_callback_info info)461 static napi_value Syscall(napi_env env, napi_callback_info info)
462 {
463 pid_t tid;
464 tid = syscall(SYS_gettid);
465 napi_value result = nullptr;
466
467 if (tid > PARAM_0) {
468 napi_create_int32(env, PARAM_0, &result);
469 return result;
470 } else {
471 napi_create_int32(env, FAIL, &result);
472 return result;
473 }
474 }
475
Sysinfo(napi_env env, napi_callback_info info)476 static napi_value Sysinfo(napi_env env, napi_callback_info info)
477 {
478 size_t argc = PARAM_1;
479 napi_value args[PARAM_1] = {nullptr};
480 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
481 int valueFirst;
482 napi_get_value_int32(env, args[PARAM_0], &valueFirst);
483 int sys_value;
484 if (valueFirst == PARAM_0) {
485 struct sysinfo infos;
486 sys_value = sysinfo(&infos);
487 } else {
488 sys_value = sysinfo(nullptr);
489 }
490 napi_value result = nullptr;
491 napi_create_int32(env, sys_value, &result);
492 return result;
493 }
494
Sync_file_range(napi_env env, napi_callback_info info)495 static napi_value Sync_file_range(napi_env env, napi_callback_info info)
496 {
497 int sync_value = sync_file_range(FAIL, PARAM_0, PARAM_0, PARAM_0);
498 napi_value result = nullptr;
499 napi_create_int32(env, sync_value, &result);
500 return result;
501 }
502
Symlink(napi_env env, napi_callback_info info)503 static napi_value Symlink(napi_env env, napi_callback_info info)
504 {
505 char file_name[] = PATH;
506 char linkName[] = PATH2;
507 int syslink_result = symlink(file_name, linkName);
508 unlink(linkName);
509 napi_value result = nullptr;
510 napi_create_int32(env, syslink_result, &result);
511 return result;
512 }
513
Symlinkat(napi_env env, napi_callback_info info)514 static napi_value Symlinkat(napi_env env, napi_callback_info info)
515 {
516 char symlinkName[] = "teat";
517 creat(PATH, O_RDWR | O_CREAT);
518 DIR *dp = opendir(PATH_DIR);
519 int fdd = dirfd(dp);
520 int syslinkat_result = symlinkat(PATH, fdd, symlinkName);
521 unlinkat(fdd, symlinkName, PARAM_0);
522 unlink(PATH);
523 napi_value result = nullptr;
524 napi_create_int32(env, syslinkat_result, &result);
525 return result;
526 }
527
tcgetpgrp_handler(void)528 int tcgetpgrp_handler(void)
529 {
530 pid_t pid;
531 errno = ERRON_0;
532 pid = tcgetpgrp(STDIN_FILENO);
533 if (pid == MPARAM_1) {
534 return TCGETPGRPERROR;
535 } else if (pid == getpgrp()) {
536 return FOREGROUND;
537 } else {
538 return BACKGROUND;
539 }
540 }
Tcsetpgrp(napi_env env, napi_callback_info info)541 static napi_value Tcsetpgrp(napi_env env, napi_callback_info info)
542 {
543 size_t argc = PARAM_1;
544 napi_value args[PARAM_1] = {nullptr};
545 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
546 int valueFirst;
547 napi_get_value_int32(env, args[PARAM_0], &valueFirst);
548 int result = PARAM_0;
549 if (valueFirst == PARAM_0) {
550 result = tcsetpgrp(FAIL, FAIL);
551 } else {
552 tcgetsid(STDIN_FILENO);
553 tcgetpgrp_handler();
554 result = tcsetpgrp(STDIN_FILENO, getpgrp());
555 tcgetpgrp_handler();
556 result = tcsetpgrp(STDIN_FILENO, getpgrp());
557 }
558 napi_value results = nullptr;
559 napi_create_int32(env, result, &results);
560 return results;
561 }
562
Tcgetpgrp(napi_env env, napi_callback_info info)563 static napi_value Tcgetpgrp(napi_env env, napi_callback_info info)
564 {
565 size_t argc = PARAM_1;
566 napi_value args[PARAM_1] = {nullptr};
567 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
568 int valueFirst;
569 napi_get_value_int32(env, args[PARAM_0], &valueFirst);
570 int result = PARAM_0;
571 if (valueFirst == PARAM_0) {
572 result = tcgetpgrp(FAIL);
573 } else {
574 tcgetsid(STDIN_FILENO);
575 result = tcgetpgrp_handler();
576 }
577 napi_value results = nullptr;
578 napi_create_int32(env, result, &results);
579 return results;
580 }
581
Read(napi_env env, napi_callback_info info)582 static napi_value Read(napi_env env, napi_callback_info info)
583 {
584 size_t argc = 1;
585 napi_value args[1] = {nullptr};
586 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
587 size_t length = SIZE_64, stresult = SIZE_64;
588 char path[length];
589 napi_get_value_string_utf8(env, args[0], path, length, &stresult);
590 int fd = open(path, O_CREAT, TEST_MODE);
591 char buf[SIZE_100];
592 int len = PARAM_2;
593 int bytes = read(fd, buf, len);
594 napi_value result = nullptr;
595 if (bytes < PARAM_0) {
596 napi_create_int32(env, PARAM_UNNORMAL, &result);
597 } else {
598 napi_create_int32(env, PARAM_0, &result);
599 }
600 return result;
601 }
602
Readlink(napi_env env, napi_callback_info info)603 static napi_value Readlink(napi_env env, napi_callback_info info)
604 {
605 size_t argc = PARAM_1;
606 napi_value args[PARAM_1] = {nullptr};
607 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
608
609 int param = FAIL;
610 napi_get_value_int32(env, args[PARAM_0], ¶m);
611
612 int resultValue = FAILD;
613 if (param == PARAM_UNNORMAL) {
614 char *buf = nullptr;
615 int ret = FAIL;
616 const char *softptr = "./noreadlink.txt.soft";
617 ret = readlink(softptr, buf, sizeof(buf));
618 if (ret < PARAM_0) {
619 resultValue = RETURN_0;
620 }
621 } else {
622 struct stat sb;
623 char *buf;
624 int ret;
625 buf = static_cast<char *>(malloc(sb.st_size + PARAM_1));
626 errno = ERRON_0;
627 ret = readlink("/data/storage/el2/base/files/testReadlink.txt", buf, sizeof(buf));
628 if (errno != ERRON_0) {
629 resultValue = errno;
630 }
631 if (ret > PARAM_0) {
632 resultValue = RETURN_0;
633 }
634 }
635
636 napi_value result = nullptr;
637 napi_create_int32(env, resultValue, &result);
638 return result;
639 }
640
Readlinkat(napi_env env, napi_callback_info info)641 static napi_value Readlinkat(napi_env env, napi_callback_info info)
642 {
643 ssize_t bytes = readlinkat(PARAM_UNNORMAL, nullptr, nullptr, PARAM_0);
644
645 napi_value result = nullptr;
646 int resultValue = FAILD;
647 if (bytes < PARAM_0) {
648 resultValue = RETURN_0;
649 }
650
651 napi_create_int32(env, resultValue, &result);
652 return result;
653 }
654
Rmdir(napi_env env, napi_callback_info info)655 static napi_value Rmdir(napi_env env, napi_callback_info info)
656 {
657 size_t argc = PARAM_1;
658 napi_value args[PARAM_1] = {nullptr};
659 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
660 int param;
661 napi_get_value_int32(env, args[PARAM_0], ¶m);
662
663 int ret;
664 if (param == PARAM_UNNORMAL) {
665 char path[] = "errorPath";
666 ret = access(path, F_OK);
667 if (ret == PARAM_0) {
668 rmdir(path);
669 }
670 ret = rmdir(path);
671 } else {
672 char path[] = "/data/storage/el2/base/files/rmdirPath";
673 ret = access(path, F_OK);
674 if (ret == PARAM_0) {
675 remove(path);
676 }
677 mkdir(path, TEST_0777);
678 ret = rmdir(path);
679 }
680
681 napi_value result = nullptr;
682 napi_create_int32(env, ret, &result);
683 return result;
684 }
685
Ttyname(napi_env env, napi_callback_info info)686 static napi_value Ttyname(napi_env env, napi_callback_info info)
687 {
688 size_t argc = PARAM_1;
689 napi_value args[PARAM_1] = {nullptr};
690 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
691
692 int isOpenFile = FAIL;
693
694 napi_get_value_int32(env, args[PARAM_0], &isOpenFile);
695 int value0 = FAIL;
696
697 if (isOpenFile == PARAM_1) {
698 char file[SIZE_100] = "/dev/tty";
699 value0 = open(file, O_RDONLY);
700 } else {
701 char file[SIZE_100] = "/unexit";
702 value0 = open(file, O_RDONLY);
703 }
704
705 int tojsResult = FAIL;
706
707 if (value0 == FAIL) {
708 char *ttyname_value = ttyname(value0);
709 if (ttyname_value == nullptr) {
710 tojsResult = PARAM_0;
711 }
712 } else {
713 char *ttyname_value = ttyname(value0);
714 if (ttyname_value != nullptr) {
715 tojsResult = PARAM_0;
716 }
717 }
718 close(value0);
719 napi_value result = nullptr;
720 napi_create_int32(env, tojsResult, &result);
721
722 return result;
723 }
724
Ttyname_r(napi_env env, napi_callback_info info)725 static napi_value Ttyname_r(napi_env env, napi_callback_info info)
726 {
727 size_t argc = 3;
728 napi_value args[3] = {nullptr};
729 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
730
731 int isOpenFile = FAIL;
732 int tojsResult = FAIL;
733 napi_get_value_int32(env, args[PARAM_0], &isOpenFile);
734
735 if (isOpenFile != PARAM_1) {
736 int fd = open("/dev/null", O_WRONLY);
737 char buf[PARAM_1];
738 tojsResult = ttyname_r(fd, buf, sizeof(buf));
739 if (tojsResult == ENOTTY) {
740 tojsResult = PARAM_0;
741 }
742 close(fd);
743 }
744 napi_value result = nullptr;
745 napi_create_int32(env, tojsResult, &result);
746
747 return result;
748 }
749
Truncate(napi_env env, napi_callback_info info)750 static napi_value Truncate(napi_env env, napi_callback_info info)
751 {
752 char path[] = "/data/storage/el2/base/files/testTruncated.txt";
753 int df = open(path, O_CREAT, TEST_MODE);
754 int truncate_value = FAIL;
755 if (df != MPARAM_1) {
756 close(df);
757 truncate_value = truncate(path, PARAM_0);
758 }
759 napi_value result = nullptr;
760 remove(path);
761 napi_create_int32(env, truncate_value, &result);
762 return result;
763 }
764
Truncate64(napi_env env, napi_callback_info info)765 static napi_value Truncate64(napi_env env, napi_callback_info info)
766 {
767 char path[] = "/data/storage/el2/base/files/moTruncated.txt";
768 int df = open(path, O_CREAT, TEST_MODE);
769 int truncate_value = FAIL;
770 if (df != MPARAM_1) {
771 close(df);
772 truncate_value = truncate64(path, PARAM_0);
773 }
774 napi_value result = nullptr;
775 remove(path);
776 napi_create_int32(env, truncate_value, &result);
777 return result;
778 }
779
Unlink(napi_env env, napi_callback_info info)780 static napi_value Unlink(napi_env env, napi_callback_info info)
781 {
782 size_t argc = PARAM_1;
783 napi_value args[PARAM_1] = {nullptr};
784 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
785 int param;
786 napi_get_value_int32(env, args[PARAM_0], ¶m);
787
788 int ret;
789 if (param == PARAM_UNNORMAL) {
790 char path[] = "unexist_test_unlink.txt";
791 ret = unlink(path);
792 } else {
793 char path[] = "/data/storage/el2/base/files/test_unlink.txt";
794 int fd = open(path, O_CREAT, TEST_MODE);
795 close(fd);
796 ret = unlink(path);
797 }
798
799 napi_value result = nullptr;
800 napi_create_int32(env, ret, &result);
801 return result;
802 }
803
Unlinkat(napi_env env, napi_callback_info info)804 static napi_value Unlinkat(napi_env env, napi_callback_info info)
805 {
806 size_t argc = PARAM_1;
807 napi_value args[PARAM_1] = {nullptr};
808 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
809 int param;
810 napi_get_value_int32(env, args[PARAM_0], ¶m);
811
812 int ret;
813 if (param == PARAM_UNNORMAL) {
814 char path[] = "unexist_test_unlinkat.txt";
815 ret = unlinkat(PARAM_UNNORMAL, path, AT_REMOVEDIR);
816 } else {
817 char path[] = "/data/storage/el2/base/files/test_unlinkat.txt";
818 int fd = open(path, O_CREAT, TEST_MODE);
819 ret = unlinkat(fd, path, PARAM_0);
820 close(fd);
821 }
822
823 napi_value result = nullptr;
824 napi_create_int32(env, ret, &result);
825 return result;
826 }
827
Usleep(napi_env env, napi_callback_info info)828 static napi_value Usleep(napi_env env, napi_callback_info info)
829 {
830 size_t argc = PARAM_1;
831 napi_value args[PARAM_1] = {nullptr};
832 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
833
834 int valueFirst;
835 napi_get_value_int32(env, args[PARAM_0], &valueFirst);
836
837 struct timespec old_time;
838 clock_gettime(CLOCK_MONOTONIC, &old_time);
839
840 int usleepResult = usleep(valueFirst);
841 struct timespec new_time;
842 clock_gettime(CLOCK_MONOTONIC, &new_time);
843
844 long int difference = new_time.tv_sec - old_time.tv_sec - TIMEDIFF;
845
846 int toJs = FAIL;
847 if (usleepResult == PARAM_0 && difference <= TWO) {
848 toJs = SUCCESS;
849 }
850
851 napi_value result = nullptr;
852 napi_create_int32(env, toJs, &result);
853 return result;
854 }
855
Access(napi_env env, napi_callback_info info)856 static napi_value Access(napi_env env, napi_callback_info info)
857 {
858 errno = ERRON_0;
859 int fd = open("/data/storage/el2/base/files/fzl.txt", O_CREAT, PARAM_0777);
860 int returnValue = access("/data/storage/el2/base/files/fzl.txt", F_OK);
861 close(fd);
862 napi_value result = nullptr;
863 napi_create_int32(env, returnValue, &result);
864 return result;
865 }
866
Eaccess(napi_env env, napi_callback_info info)867 static napi_value Eaccess(napi_env env, napi_callback_info info)
868 {
869 errno = ERRON_0;
870 int fd = open("/data/storage/el2/base/files/fzl.txt", O_CREAT, PARAM_0777);
871 int returnValue = eaccess("/data/storage/el2/base/files/fzl.txt", F_OK);
872 close(fd);
873 napi_value result = nullptr;
874 napi_create_int32(env, returnValue, &result);
875 return result;
876 }
877
Fexecve(napi_env env, napi_callback_info info)878 static napi_value Fexecve(napi_env env, napi_callback_info info)
879 {
880 int fileDescribe;
881 int backParam = ERRON_0;
882 pid_t fpid = fork();
883 if (fpid == ERRON_0) {
884 const char *pathname = "/data/storage/el2/base/files/Fzl.txt";
885 int flags = O_CREAT;
886 mode_t mode = S_IRWXU;
887 fileDescribe = open(pathname, flags, mode);
888 char strTemp[] = "/data/storage/el2/base/files/Fzl.txt";
889 char *const argv[] = {strTemp, nullptr};
890 char *const envp[] = {nullptr};
891 backParam = fexecve(fileDescribe, argv, envp);
892 close(fileDescribe);
893 _exit(PARAM_0);
894 }
895 napi_value result = nullptr;
896 napi_create_int32(env, backParam, &result);
897 return result;
898 }
899
Execvpe(napi_env env, napi_callback_info info)900 static napi_value Execvpe(napi_env env, napi_callback_info info)
901 {
902 int backParam = ERRON_0;
903 pid_t fpid = fork();
904 if (fpid == ERRON_0) {
905 const char *pathname = "/data/storage/el2/base/files/LXL.txt";
906 int flags = O_CREAT;
907 mode_t mode = S_IRWXU;
908 int fd = open(pathname, flags, mode);
909 char *const firstParam[] = {nullptr};
910 char *const secondParam[] = {nullptr};
911 backParam = execvpe(pathname, firstParam, secondParam);
912 close(fd);
913 _exit(PARAM_0);
914 }
915 napi_value result = nullptr;
916 napi_create_int32(env, backParam, &result);
917 return result;
918 }
919
Execvp(napi_env env, napi_callback_info info)920 static napi_value Execvp(napi_env env, napi_callback_info info)
921 {
922 int backParam = ERRON_0;
923 pid_t fpid = fork();
924 if (fpid == ERRON_0) {
925 const char *pathname = "/data/storage/el2/base/files/LXL.txt";
926 int flags = O_CREAT;
927 mode_t mode = S_IRWXU;
928 int fd = open(pathname, flags, mode);
929 char *const firstParam[PARAM_1] = {nullptr};
930 backParam = execvp(pathname, firstParam);
931 close(fd);
932 _exit(PARAM_0);
933 }
934 napi_value result = nullptr;
935 napi_create_int32(env, backParam, &result);
936 return result;
937 }
938
Execve(napi_env env, napi_callback_info info)939 static napi_value Execve(napi_env env, napi_callback_info info)
940 {
941 int backParam = ERRON_0;
942 pid_t fpid = fork();
943 if (fpid == ERRON_0) {
944 const char *pathname = "/data/storage/el2/base/files/LXL.txt";
945 int flags = O_CREAT;
946 mode_t mode = S_IRWXU;
947 int fd = open(pathname, flags, mode);
948 char *const firstParam[] = {nullptr};
949 char *const secondParam[] = {nullptr};
950 backParam = execve(pathname, firstParam, secondParam);
951 close(fd);
952 _exit(PARAM_0);
953 }
954 napi_value result = nullptr;
955 napi_create_int32(env, backParam, &result);
956 return result;
957 }
958
Execlp(napi_env env, napi_callback_info info)959 static napi_value Execlp(napi_env env, napi_callback_info info)
960 {
961 int backParam = ERRON_0;
962 pid_t fpid = fork();
963 if (fpid == ERRON_0) {
964 const char *pathname = "/data/storage/el2/base/files/LXL.txt";
965 int flags = O_CREAT;
966 mode_t mode = S_IRWXU;
967 int fd = open(pathname, flags, mode);
968 const char *firstParam = nullptr;
969 backParam = execlp(pathname, firstParam);
970 close(fd);
971 _exit(PARAM_0);
972 }
973 napi_value result = nullptr;
974 napi_create_int32(env, backParam, &result);
975 return result;
976 }
Execl(napi_env env, napi_callback_info info)977 static napi_value Execl(napi_env env, napi_callback_info info)
978 {
979 int backParam = ERRON_0;
980 pid_t fpid = fork();
981 if (fpid == ERRON_0) {
982 backParam = execl("/bin/ls", "ls", "-al", "/etc/passwd", static_cast<char *>(ERRON_0));
983 _exit(PARAM_0);
984 }
985 napi_value result = nullptr;
986 napi_create_int32(env, backParam, &result);
987 return result;
988 }
989
Execv(napi_env env, napi_callback_info info)990 static napi_value Execv(napi_env env, napi_callback_info info)
991 {
992 int backParam = ERRON_0;
993 pid_t fpid = fork();
994 if (fpid == ERRON_0) {
995 char s1[] = "/data/storage/el2/base/files";
996 char s2[] = "/Fzl.txt";
997 char *args[3];
998 args[PARAM_0] = s1;
999 args[PARAM_1] = s2;
1000 args[PARAM_2] = nullptr;
1001 backParam = execv(args[PARAM_0], args);
1002 _exit(PARAM_0);
1003 }
1004 napi_value result = nullptr;
1005 napi_create_int32(env, backParam, &result);
1006 return result;
1007 }
1008
Execle(napi_env env, napi_callback_info info)1009 static napi_value Execle(napi_env env, napi_callback_info info)
1010 {
1011 int backParam = ERRON_0;
1012 pid_t fpid = fork();
1013 if (fpid == ERRON_0) {
1014 const char *pathname = "/data/storage/el2/base/files/LXL.txt";
1015 int flags = O_CREAT;
1016 mode_t mode = S_IRWXU;
1017 int fd = open(pathname, flags, mode);
1018 const char *firstParam = nullptr;
1019 backParam = execle(pathname, firstParam);
1020 close(fd);
1021 _exit(PARAM_0);
1022 }
1023 napi_value result = nullptr;
1024 napi_create_int32(env, backParam, &result);
1025 return result;
1026 }
1027
Alarm(napi_env env, napi_callback_info info)1028 static napi_value Alarm(napi_env env, napi_callback_info info)
1029 {
1030 size_t argc = PARAM_1;
1031 napi_value args[PARAM_1] = {nullptr};
1032 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1033 int param;
1034 napi_get_value_int32(env, args[PARAM_0], ¶m);
1035 napi_value result = nullptr;
1036
1037 int resultValue = alarm(param);
1038 if (resultValue >= PARAM_0) {
1039 resultValue = PARAM_0;
1040 }
1041 napi_create_int32(env, resultValue, &result);
1042
1043 return result;
1044 }
1045
get_brk()1046 void *get_brk() { return sbrk(PARAM_0); }
Brk(napi_env env, napi_callback_info info)1047 static napi_value Brk(napi_env env, napi_callback_info info)
1048 {
1049 void *initial_break = get_brk();
1050 void *newBreak = (void *)((uintptr_t)(initial_break) + PARAM_1);
1051 int resultValue = brk(newBreak);
1052
1053 napi_value result = nullptr;
1054 napi_create_int32(env, resultValue, &result);
1055
1056 return result;
1057 }
1058
Acct(napi_env env, napi_callback_info info)1059 static napi_value Acct(napi_env env, napi_callback_info info)
1060 {
1061 napi_value result = nullptr;
1062 napi_create_int32(env, FAIL, &result);
1063 return result;
1064 }
1065
Getentropy(napi_env env, napi_callback_info info)1066 static napi_value Getentropy(napi_env env, napi_callback_info info)
1067 {
1068 void *buffer[256];
1069 int resultValue = getentropy(buffer, PARAM_256);
1070 napi_value result = nullptr;
1071 napi_create_int32(env, resultValue, &result);
1072
1073 return result;
1074 }
1075
Getdomainname(napi_env env, napi_callback_info info)1076 static napi_value Getdomainname(napi_env env, napi_callback_info info)
1077 {
1078 char cbuf[BUFSIZ] = {PARAM_0};
1079 int resultValue = getdomainname(cbuf, sizeof(cbuf));
1080 napi_value result = nullptr;
1081 napi_create_int32(env, resultValue, &result);
1082
1083 return result;
1084 }
1085
Getcwd(napi_env env, napi_callback_info info)1086 static napi_value Getcwd(napi_env env, napi_callback_info info)
1087 {
1088 char *value;
1089 char buf[200] = {PARAM_0};
1090 value = getcwd(buf, sizeof(buf));
1091 int resultValue = FAIL;
1092 if (value != nullptr) {
1093 resultValue = SUCCESS;
1094 }
1095 napi_value result = nullptr;
1096 napi_create_int32(env, resultValue, &result);
1097
1098 return result;
1099 }
1100
Fork(napi_env env, napi_callback_info info)1101 static napi_value Fork(napi_env env, napi_callback_info info)
1102 {
1103 pid_t fpid;
1104
1105 fpid = fork();
1106 int ret = FAIL;
1107 if (fpid != FAIL) {
1108 ret = SUCCESS;
1109 }
1110 if (fpid == PARAM_0) {
1111 _exit(PARAM_0);
1112 }
1113
1114 napi_value result = nullptr;
1115 napi_create_int32(env, ret, &result);
1116
1117 return result;
1118 }
1119
Fpathconf(napi_env env, napi_callback_info info)1120 static napi_value Fpathconf(napi_env env, napi_callback_info info)
1121 {
1122 long value = fpathconf(PARAM_0, _PC_LINK_MAX);
1123 int ret = FAIL;
1124 if (value != FAIL) {
1125 ret = SUCCESS;
1126 }
1127 napi_value result = nullptr;
1128 napi_create_int32(env, ret, &result);
1129
1130 return result;
1131 }
1132
Chdir(napi_env env, napi_callback_info info)1133 static napi_value Chdir(napi_env env, napi_callback_info info)
1134 {
1135 int returnValue = chdir("/data/storage/el2/base/files");
1136 napi_value result;
1137 napi_create_int32(env, returnValue, &result);
1138 return result;
1139 }
1140
Chown(napi_env env, napi_callback_info info)1141 static napi_value Chown(napi_env env, napi_callback_info info)
1142 {
1143 int getUId = getuid();
1144 int getGId = getgid();
1145 int returnValue = chown("/data/storage/el2/base/files", getUId, getGId);
1146 napi_value result;
1147 napi_create_int32(env, returnValue, &result);
1148 return result;
1149 }
1150
Chroot(napi_env env, napi_callback_info info)1151 static napi_value Chroot(napi_env env, napi_callback_info info)
1152 {
1153 napi_value result;
1154 napi_create_int32(env, NO_ERR, &result);
1155 return result;
1156 }
1157
Fsync(napi_env env, napi_callback_info info)1158 static napi_value Fsync(napi_env env, napi_callback_info info)
1159 {
1160 int fd = open("/data/storage/el2/base/files/Fzl.txt", O_CREAT, PARAM_0777);
1161 int ret = fsync(fd);
1162 close(fd);
1163 napi_value result;
1164 napi_create_int32(env, ret, &result);
1165 return result;
1166 }
1167
Ftruncate(napi_env env, napi_callback_info info)1168 static napi_value Ftruncate(napi_env env, napi_callback_info info)
1169 {
1170 FILE *fptr = fopen("/data/storage/el2/base/files/Fzl.txt", "w");
1171 NAPI_ASSERT(env, fptr != nullptr, "Ftruncate fopen Error");
1172 fprintf(fptr, "%s", "this is a sample!");
1173 int freturn = ftruncate(fileno(fptr), SIZE_100);
1174 fclose(fptr);
1175 napi_value result;
1176 napi_create_int32(env, freturn, &result);
1177 return result;
1178 }
1179
Ftruncate64(napi_env env, napi_callback_info info)1180 static napi_value Ftruncate64(napi_env env, napi_callback_info info)
1181 {
1182 FILE *fptr = fopen("/data/storage/el2/base/files/Fzl.txt", "w");
1183 NAPI_ASSERT(env, fptr != nullptr, "Ftruncate64 fopen Error");
1184 fprintf(fptr, "%s", "this is a sample!");
1185 int freturn = ftruncate64(fileno(fptr), SIZE_100);
1186 fclose(fptr);
1187 napi_value result;
1188 napi_create_int32(env, freturn, &result);
1189 return result;
1190 }
1191
LChOwn(napi_env env, napi_callback_info info)1192 static napi_value LChOwn(napi_env env, napi_callback_info info)
1193 {
1194 size_t argc = PARAM_1;
1195 napi_value args[PARAM_1] = {nullptr};
1196 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1197 size_t length = PARAM_64, stresult = PARAM_64;
1198 char *strTemp = static_cast<char *>(malloc(sizeof(char) * length));
1199
1200 napi_get_value_string_utf8(env, args[PARAM_0], strTemp, length, &stresult);
1201 int value = lchown(strTemp, TEST_ID_VALUE, TEST_ID_VALUE);
1202 napi_value result = nullptr;
1203 napi_create_int32(env, value, &result);
1204 return result;
1205 }
1206
Link(napi_env env, napi_callback_info info)1207 static napi_value Link(napi_env env, napi_callback_info info)
1208 {
1209 size_t argc = PARAM_2;
1210 napi_value args[PARAM_2] = {nullptr};
1211 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1212 size_t lenA;
1213 size_t lenV = PARAM_32;
1214 char *oldPath = static_cast<char *>(malloc(sizeof(char) * lenV));
1215 char *newPath = static_cast<char *>(malloc(sizeof(char) * lenV));
1216 napi_get_value_string_utf8(env, args[PARAM_0], oldPath, lenV, &lenA);
1217 napi_get_value_string_utf8(env, args[PARAM_1], newPath, lenV, &lenA);
1218
1219 int value = link(oldPath, newPath);
1220
1221 errno = ERRON_0;
1222
1223 napi_value result = nullptr;
1224 napi_create_int32(env, value, &result);
1225 return result;
1226 }
1227
LinkAt(napi_env env, napi_callback_info info)1228 static napi_value LinkAt(napi_env env, napi_callback_info info)
1229 {
1230 size_t argc = PARAM_2;
1231 napi_value args[PARAM_2] = {nullptr};
1232 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1233 size_t lenA;
1234 size_t lenV = PARAM_32;
1235 char *oldPath = static_cast<char *>(malloc(sizeof(char) * lenV));
1236 char *newPath = static_cast<char *>(malloc(sizeof(char) * lenV));
1237
1238 napi_get_value_string_utf8(env, args[PARAM_0], oldPath, lenV, &lenA);
1239 napi_get_value_string_utf8(env, args[PARAM_1], newPath, lenV, &lenA);
1240
1241 int newFd = creat(newPath, PARAM_666);
1242 int value = linkat(AT_FDCWD, oldPath, newFd, newPath, AT_SYMLINK_FOLLOW);
1243 napi_value result = nullptr;
1244 napi_create_int32(env, value, &result);
1245 return result;
1246 }
1247
LockF(napi_env env, napi_callback_info info)1248 static napi_value LockF(napi_env env, napi_callback_info info)
1249 {
1250 size_t argc = PARAM_1;
1251 napi_value args[PARAM_1] = {nullptr};
1252 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1253 size_t lenA;
1254 size_t lenV = PARAM_32;
1255 char *path = static_cast<char *>(malloc(sizeof(char) * lenV));
1256 int ret;
1257 napi_get_value_string_utf8(env, args[PARAM_0], path, lenV, &lenA);
1258 int fd = open(path, O_RDWR | O_CREAT, TEST_MODE);
1259 ret = lockf(fd, F_LOCK, PARAM_0);
1260 lockf(fd, F_ULOCK, PARAM_0);
1261 close(fd);
1262 remove(path);
1263 napi_value result = nullptr;
1264 napi_create_int32(env, ret, &result);
1265 return result;
1266 }
1267
LockF64(napi_env env, napi_callback_info info)1268 static napi_value LockF64(napi_env env, napi_callback_info info)
1269 {
1270 errno = ERRON_0;
1271 size_t argc = PARAM_1;
1272 napi_value args[PARAM_1] = {nullptr};
1273 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1274 size_t lenA;
1275 size_t lenV = PARAM_32;
1276 char *path = static_cast<char *>(malloc(sizeof(char) * lenV));
1277 int ret;
1278 napi_get_value_string_utf8(env, args[PARAM_0], path, lenV, &lenA);
1279 int fd = open(path, O_RDWR | O_CREAT, TEST_MODE);
1280 ret = lockf64(fd, F_LOCK, PARAM_0);
1281 lockf64(fd, F_ULOCK, PARAM_0);
1282 close(fd);
1283 remove(path);
1284 napi_value result = nullptr;
1285 napi_create_int32(env, ret, &result);
1286 return result;
1287 }
1288
Getrandom(napi_env env, napi_callback_info info)1289 static napi_value Getrandom(napi_env env, napi_callback_info info)
1290 {
1291 void *buf = malloc(PARAM_32);
1292 ssize_t ret = getrandom(buf, PARAM_32, PARAM_0);
1293 napi_value result = nullptr;
1294 if (ret != PARAM_UNNORMAL) {
1295 napi_create_int32(env, PARAM_0, &result);
1296 } else {
1297 napi_create_int32(env, PARAM_UNNORMAL, &result);
1298 }
1299 return result;
1300 }
Glob(napi_env env, napi_callback_info info)1301 static napi_value Glob(napi_env env, napi_callback_info info)
1302 {
1303 glob_t buf;
1304 int ret = glob("/data/storage/el2/base/files/*", GLOB_NOSORT, nullptr, &buf);
1305 napi_value result = nullptr;
1306 if (ret == PARAM_0) {
1307 napi_create_int32(env, PARAM_0, &result);
1308 } else {
1309 napi_create_int32(env, PARAM_UNNORMAL, &result);
1310 }
1311 globfree(&buf);
1312 return result;
1313 }
1314
Globfree(napi_env env, napi_callback_info info)1315 static napi_value Globfree(napi_env env, napi_callback_info info)
1316 {
1317 glob_t buf;
1318 int ret = glob("/data/storage/el2/base/files/*", GLOB_NOSORT, nullptr, &buf);
1319 napi_value result = nullptr;
1320 if (ret == PARAM_0) {
1321 napi_create_int32(env, PARAM_0, &result);
1322 } else {
1323 napi_create_int32(env, PARAM_UNNORMAL, &result);
1324 }
1325 globfree(&buf);
1326 return result;
1327 }
1328
ReadLink(napi_env env, napi_callback_info info)1329 static napi_value ReadLink(napi_env env, napi_callback_info info)
1330 {
1331 struct stat sb;
1332 int exp = FAIL;
1333 const char wstr[] = "this is a test\n";
1334 const char softptr[] = "/data/storage/el2/base/files/readlink.txt.soft";
1335 char *buf = static_cast<char *>(malloc(sizeof(char) * (sb.st_size + 1)));
1336 const char ptr[] = "/data/storage/el2/base/files/readlink.txt";
1337 FILE *fptr = fopen(ptr, "w");
1338 if (fptr != nullptr) {
1339 fwrite(wstr, sizeof(char), strlen(wstr), fptr);
1340 }
1341 fclose(fptr);
1342 int link = symlink("/data/storage/el2/base/files/symlink.txt", softptr);
1343 if (link == PARAM_0) {
1344 ssize_t ret = readlink(softptr, buf, sizeof(buf));
1345 if (ret != static_cast<ssize_t>(FAIL)) {
1346 exp = PARAM_0;
1347 }
1348 }
1349 remove(ptr);
1350 remove(softptr);
1351 napi_value result = nullptr;
1352 napi_create_int32(env, exp, &result);
1353 return result;
1354 }
1355
ReadLinkAt(napi_env env, napi_callback_info info)1356 static napi_value ReadLinkAt(napi_env env, napi_callback_info info)
1357 {
1358 struct stat sb;
1359 int exp = FAIL;
1360 const char wstr[] = "this is a test\n";
1361 const char softptr[] = "/data/storage/el2/base/files/readlink.txt.soft";
1362 char *buf = static_cast<char *>(malloc(sizeof(char) * (sb.st_size + 1)));
1363 const char ptr[] = "/data/storage/el2/base/files/readlink.txt";
1364 FILE *fptr = fopen(ptr, "w");
1365 if (fptr != nullptr) {
1366 fwrite(wstr, sizeof(char), strlen(wstr), fptr);
1367 }
1368 fclose(fptr);
1369 int link = symlink("/data/storage/el2/base/files/symlink.txt", softptr);
1370 if (link == PARAM_0) {
1371 ssize_t ret = readlinkat(PARAM_0, softptr, buf, sizeof(buf));
1372 if (ret != static_cast<ssize_t>(FAIL)) {
1373 exp = PARAM_0;
1374 }
1375 }
1376 remove(ptr);
1377 remove(softptr);
1378 napi_value result = nullptr;
1379 napi_create_int32(env, exp, &result);
1380 return result;
1381 }
1382
Optarg(napi_env env, napi_callback_info info)1383 static napi_value Optarg(napi_env env, napi_callback_info info)
1384 {
1385 optind = PARAM_0;
1386 int optArgc = PARAM_3;
1387 char cmdline[50] = "./parse_cmdline";
1388 char para[100] = "100";
1389 char par[3] = "-a";
1390 char *optArgv[] = {cmdline, par, para};
1391 char optString[50] = "a:b:c:d";
1392 int ch = getopt(optArgc, optArgv, optString);
1393 int res = PARAM_0;
1394 if (ch == 'a') {
1395 if (optarg == para) {
1396 res = SUCCESS;
1397 } else {
1398 res = FAIL;
1399 }
1400 } else {
1401 res = FAIL;
1402 }
1403 napi_value result = nullptr;
1404 napi_create_int32(env, res, &result);
1405 return result;
1406 }
Optind(napi_env env, napi_callback_info info)1407 static napi_value Optind(napi_env env, napi_callback_info info)
1408 {
1409 optind = PARAM_0;
1410 int optArgc = PARAM_3;
1411 char cmdline[50] = "./parse_cmdline";
1412 char para[100] = "100";
1413 char par[3] = "-a";
1414 char *optArgv[] = {cmdline, par, para};
1415 char optString[50] = "a:b:c:d";
1416 int ch = getopt(optArgc, optArgv, optString);
1417 int res = PARAM_0;
1418 if (ch == 'a') {
1419 if (optind == PARAM_3) {
1420 res = SUCCESS;
1421 } else {
1422 res = FAIL;
1423 }
1424 } else {
1425 res = FAIL;
1426 }
1427 napi_value result = nullptr;
1428 napi_create_int32(env, res, &result);
1429 return result;
1430 }
Optopt(napi_env env, napi_callback_info info)1431 static napi_value Optopt(napi_env env, napi_callback_info info)
1432 {
1433 optind = PARAM_0;
1434 int optArgc = PARAM_3;
1435 char cmdline[50] = "./parse_cmdline";
1436 char para[100] = "100";
1437 char par[3] = "-f";
1438 char *optArgv[] = {cmdline, par, para};
1439 char optString[50] = "a:b:c:d";
1440 int ch = getopt(optArgc, optArgv, optString);
1441
1442 int res = PARAM_0;
1443 if (ch == '?') {
1444 if (optopt == 'f') {
1445 res = SUCCESS;
1446 } else {
1447 res = FAIL;
1448 }
1449 } else {
1450 res = FAIL;
1451 }
1452 napi_value result = nullptr;
1453 napi_create_int32(env, res, &result);
1454 return result;
1455 }
Opterr(napi_env env, napi_callback_info info)1456 static napi_value Opterr(napi_env env, napi_callback_info info)
1457 {
1458 optind = PARAM_0;
1459 opterr = PARAM_0;
1460 int optArgc = PARAM_3;
1461 char cmdline[50] = "./parse_cmdline";
1462 char para[100] = "100";
1463 char par[3] = "-a";
1464 char *optArgv[] = {cmdline, par, para};
1465 char optString[50] = "a:b:c:d";
1466 int ch = getopt(optArgc, optArgv, optString);
1467 int res = PARAM_0;
1468 if (ch == 'a') {
1469 if (opterr == PARAM_0) {
1470 res = SUCCESS;
1471 } else {
1472 res = FAIL;
1473 }
1474 } else {
1475 res = FAIL;
1476 }
1477 napi_value result = nullptr;
1478 napi_create_int32(env, res, &result);
1479 return result;
1480 }
1481
PRead(napi_env env, napi_callback_info info)1482 static napi_value PRead(napi_env env, napi_callback_info info)
1483 {
1484 const char *txt = "This is pread_0100 test.";
1485 int ret = PARAM_UNNORMAL;
1486 char buffer[64];
1487 int bufferSize = PARAM_64;
1488 memset(buffer, PARAM_0x0, sizeof(buffer));
1489 int fd = open("/data/storage/el2/base/files/test.txt", O_CREAT | O_RDWR, PARAM_0777);
1490 pwrite(fd, txt, strlen(txt), PARAM_0);
1491 lseek(fd, PARAM_0, SEEK_SET);
1492 size_t cnt = pread(fd, buffer, bufferSize, PARAM_0);
1493 if (cnt == strlen(txt)) {
1494 ret = SUCCESS;
1495 } else {
1496 ret = FAIL;
1497 }
1498 close(fd);
1499 napi_value result = nullptr;
1500 napi_create_int32(env, ret, &result);
1501 return result;
1502 }
1503
Nice(napi_env env, napi_callback_info info)1504 static napi_value Nice(napi_env env, napi_callback_info info)
1505 {
1506 size_t argc = PARAM_1;
1507 napi_value args[PARAM_1] = {nullptr};
1508 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1509
1510 int value;
1511 napi_get_value_int32(env, args[PARAM_0], &value);
1512 int ret = nice(value);
1513 if (ret != MPARAM_1) {
1514 ret = PARAM_0;
1515 }
1516 napi_value result = nullptr;
1517 napi_create_int32(env, ret, &result);
1518 return result;
1519 }
1520
Pipe(napi_env env, napi_callback_info info)1521 static napi_value Pipe(napi_env env, napi_callback_info info)
1522 {
1523 int fd[PARAM_2];
1524 int ret = pipe(fd);
1525 napi_value result = nullptr;
1526 napi_create_int32(env, ret, &result);
1527 return result;
1528 }
1529
Pipe2(napi_env env, napi_callback_info info)1530 static napi_value Pipe2(napi_env env, napi_callback_info info)
1531 {
1532 int fd[PARAM_2];
1533 int ret = pipe2(fd, O_CLOEXEC);
1534 napi_value result = nullptr;
1535 napi_create_int32(env, ret, &result);
1536 return result;
1537 }
1538
Pathconf(napi_env env, napi_callback_info info)1539 static napi_value Pathconf(napi_env env, napi_callback_info info)
1540 {
1541 errno = ERRON_0;
1542 napi_value result = nullptr;
1543 int status = PARAM_0;
1544 psignal(WTERMSIG(status), "signal");
1545 napi_create_int32(env, errno, &result);
1546 return result;
1547 }
1548
do_plain_test(int (*fn1)(void *arg), void *arg1, int (*fn2)(void *arg), void *arg2)1549 int do_plain_test(int (*fn1)(void *arg), void *arg1, int (*fn2)(void *arg), void *arg2)
1550 {
1551 int ret = PARAM_0;
1552 int pid = PARAM_0;
1553 pid = fork();
1554 if (pid == FAIL) {
1555 return FAIL;
1556 }
1557 if (pid == PARAM_0)
1558 _exit(PARAM_0);
1559 if (fn2)
1560 ret = fn2(arg2);
1561 return ret;
1562 }
1563
pausetest(void *testarg)1564 int pausetest(void *testarg)
1565 {
1566 int flag = pause();
1567 return flag;
1568 }
1569
Pause(napi_env env, napi_callback_info info)1570 static napi_value Pause(napi_env env, napi_callback_info info)
1571 {
1572 void *test = nullptr;
1573 do_plain_test(pausetest, test, nullptr, nullptr);
1574 napi_value result = nullptr;
1575 napi_create_int32(env, SUCCESS, &result);
1576 return result;
1577 }
1578
Pread(napi_env env, napi_callback_info info)1579 static napi_value Pread(napi_env env, napi_callback_info info)
1580 {
1581 size_t argc = PARAM_1;
1582 napi_value args[PARAM_1] = {nullptr};
1583 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1584
1585 size_t size = PARAM_64;
1586 char buffer[100];
1587 off_t offset = PARAM_10;
1588 char *value = static_cast<char *>(malloc(sizeof(char) * size));
1589 size_t actualVal;
1590 napi_get_value_string_utf8(env, args[PARAM_0], value, size, &actualVal);
1591
1592 napi_value result = nullptr;
1593 int fd = open(value, O_RDWR);
1594 ssize_t ret = pread(fd, buffer, sizeof(buffer), offset);
1595 close(fd);
1596 napi_create_int32(env, ret, &result);
1597 return result;
1598 }
1599
Setsid(napi_env env, napi_callback_info info)1600 static napi_value Setsid(napi_env env, napi_callback_info info)
1601 {
1602 int ret = FAIL;
1603 pid_t fk = fork();
1604 if (fk == PARAM_0) {
1605 setsid();
1606 _exit(PARAM_0);
1607 } else {
1608 ret = NO_ERR;
1609 }
1610
1611 napi_value result;
1612 napi_create_int32(env, ret, &result);
1613 return result;
1614 }
1615
Setdomainname(napi_env env, napi_callback_info info)1616 static napi_value Setdomainname(napi_env env, napi_callback_info info)
1617 {
1618 napi_value result;
1619 napi_create_int32(env, PARAM_0, &result);
1620 return result;
1621 }
1622
Setgroups(napi_env env, napi_callback_info info)1623 static napi_value Setgroups(napi_env env, napi_callback_info info)
1624 {
1625 napi_value result;
1626 napi_create_int32(env, PARAM_0, &result);
1627 return result;
1628 }
1629
Setgid(napi_env env, napi_callback_info info)1630 static napi_value Setgid(napi_env env, napi_callback_info info)
1631 {
1632 napi_value result;
1633 napi_create_int32(env, PARAM_UNNORMAL, &result);
1634 return result;
1635 }
1636
Seteuid(napi_env env, napi_callback_info info)1637 static napi_value Seteuid(napi_env env, napi_callback_info info)
1638 {
1639 napi_value result;
1640 napi_create_int32(env, PARAM_0, &result);
1641 return result;
1642 }
1643
Setegid(napi_env env, napi_callback_info info)1644 static napi_value Setegid(napi_env env, napi_callback_info info)
1645 {
1646 napi_value result;
1647 napi_create_int32(env, PARAM_0, &result);
1648 return result;
1649 }
1650
Setreuid(napi_env env, napi_callback_info info)1651 static napi_value Setreuid(napi_env env, napi_callback_info info)
1652 {
1653 napi_value result;
1654 napi_create_int32(env, PARAM_0, &result);
1655 return result;
1656 }
1657
Setregid(napi_env env, napi_callback_info info)1658 static napi_value Setregid(napi_env env, napi_callback_info info)
1659 {
1660 napi_value result;
1661 napi_create_int32(env, PARAM_0, &result);
1662 return result;
1663 }
1664
Setresgid(napi_env env, napi_callback_info info)1665 static napi_value Setresgid(napi_env env, napi_callback_info info)
1666 {
1667 napi_value result;
1668 napi_create_int32(env, PARAM_0, &result);
1669 return result;
1670 }
1671
Issetugid(napi_env env, napi_callback_info info)1672 static napi_value Issetugid(napi_env env, napi_callback_info info)
1673 {
1674 int ret = issetugid();
1675 napi_value result = nullptr;
1676 if (ret == PARAM_0) {
1677 napi_create_int32(env, RETURN_0, &result);
1678 } else {
1679 napi_create_int32(env, FAILD, &result);
1680 }
1681
1682 return result;
1683 }
ReadlinkChk(napi_env env, napi_callback_info info)1684 static napi_value ReadlinkChk(napi_env env, napi_callback_info info)
1685 {
1686 struct stat sb;
1687 int exp = FAIL;
1688 const char wstr[] = "this is a test\n";
1689 const char softptr[] = "/data/storage/el2/base/files/readlink.txt.soft";
1690 char *buf = static_cast<char *>(malloc(sizeof(char) * (sb.st_size + 1)));
1691 const char ptr[] = "/data/storage/el2/base/files/readlink.txt";
1692 FILE *fptr = fopen(ptr, "w");
1693 if (fptr != nullptr) {
1694 fwrite(wstr, sizeof(char), strlen(wstr), fptr);
1695 }
1696 fclose(fptr);
1697 int link = symlink("/data/storage/el2/base/files/symlink.txt", softptr);
1698 if (link == PARAM_0) {
1699 ssize_t ret = __readlink_chk(softptr, buf, sizeof(buf), sizeof(buf));
1700 if (ret != static_cast<ssize_t>(FAIL)) {
1701 exp = PARAM_0;
1702 }
1703 }
1704 remove(ptr);
1705 remove(softptr);
1706 napi_value result = nullptr;
1707 napi_create_int32(env, exp, &result);
1708 return result;
1709 }
1710
Vfork(napi_env env, napi_callback_info info)1711 static napi_value Vfork(napi_env env, napi_callback_info info)
1712 {
1713 int adj = PARAM_0;
1714 pid_t pid;
1715 pid = vfork();
1716
1717 if (pid < PARAM_0) {
1718 adj = FAIL;
1719 }
1720 if (pid == PARAM_0) {
1721 sleep(PARAM_1);
1722 _exit(PARAM_0);
1723 }
1724 napi_value result;
1725 napi_create_int32(env, adj, &result);
1726 return result;
1727 }
Sethostname(napi_env env, napi_callback_info info)1728 static napi_value Sethostname(napi_env env, napi_callback_info info)
1729 {
1730 napi_value resval;
1731 napi_create_int32(env, PARAM_0, &resval);
1732 return resval;
1733 }
1734
Setuid(napi_env env, napi_callback_info info)1735 static napi_value Setuid(napi_env env, napi_callback_info info)
1736 {
1737 napi_value result;
1738 napi_create_int32(env, PARAM_0, &result);
1739 return result;
1740 }
1741
Sysconf(napi_env env, napi_callback_info info)1742 static napi_value Sysconf(napi_env env, napi_callback_info info)
1743 {
1744 size_t argc = PARAM_1;
1745 napi_value args[PARAM_1] = {nullptr};
1746 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1747
1748 int param;
1749 napi_get_value_int32(env, args[PARAM_0], ¶m);
1750 int resultValue;
1751 if (param == _SC_PAGE_SIZE) {
1752 resultValue = sysconf(_SC_PAGE_SIZE);
1753 } else {
1754 resultValue = sysconf(PARAM_UNNORMAL);
1755 }
1756
1757 napi_value result = nullptr;
1758 napi_create_int32(env, resultValue, &result);
1759
1760 return result;
1761 }
1762
Sbrk(napi_env env, napi_callback_info info)1763 static napi_value Sbrk(napi_env env, napi_callback_info info)
1764 {
1765 errno = ERRON_0;
1766 sbrk(PARAM_0);
1767 int resultValue = FAILD;
1768 if (errno != ENOMEM) {
1769 resultValue = RETURN_0;
1770 }
1771
1772 napi_value result = nullptr;
1773 napi_create_int32(env, resultValue, &result);
1774 return result;
1775 }
1776
Write(napi_env env, napi_callback_info info)1777 static napi_value Write(napi_env env, napi_callback_info info)
1778 {
1779 size_t argc = PARAM_1;
1780 napi_value args[PARAM_1] = {nullptr};
1781 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1782 int fd_in = PARAM_0;
1783 napi_get_value_int32(env, args[PARAM_0], &fd_in);
1784 char buf[SIZE_64] = "";
1785 int resultValue = write(fd_in, buf, PARAM_2);
1786 napi_value result = nullptr;
1787 napi_create_int32(env, resultValue, &result);
1788 return result;
1789 }
1790
Environ(napi_env env, napi_callback_info info)1791 static napi_value Environ(napi_env env, napi_callback_info info)
1792 {
1793 int resultValue = FAILD;
1794 int i = PARAM_0;
1795 for (i = PARAM_0; environ[i]; i++) {
1796 errno = ERRON_0;
1797 printf("%s", environ[i]);
1798 if (errno == ERRON_0) {
1799 resultValue = RETURN_0;
1800 }
1801 }
1802 napi_value result = nullptr;
1803 napi_create_int32(env, resultValue, &result);
1804 return result;
1805 }
1806
Close(napi_env env, napi_callback_info info)1807 static napi_value Close(napi_env env, napi_callback_info info)
1808 {
1809 size_t argc = PARAM_1;
1810 napi_value args[PARAM_1] = {nullptr};
1811 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1812 size_t length = LENGTH;
1813 size_t strResult = PARAM_0;
1814 char strTemp[length];
1815 napi_get_value_string_utf8(env, args[PARAM_0], strTemp, length, &strResult);
1816 char str[] = "This is a test sample!";
1817 int fd = open(strTemp, O_CREAT, TEST_MODE);
1818 write(fd, str, sizeof(str));
1819 int backParam = close(fd);
1820 napi_value result = nullptr;
1821 napi_create_int32(env, backParam, &result);
1822 return result;
1823 }
1824
Copy_file_range(napi_env env, napi_callback_info info)1825 static napi_value Copy_file_range(napi_env env, napi_callback_info info)
1826 {
1827 size_t argc = PARAM_2;
1828 napi_value args[PARAM_2] = {nullptr};
1829 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1830 size_t length = LENGTH;
1831 size_t strResult = PARAM_0;
1832 char path_in[PATH_MAX];
1833 napi_get_value_string_utf8(env, args[PARAM_0], path_in, length, &strResult);
1834 size_t length2 = LENGTH;
1835 size_t strResult2 = PARAM_0;
1836 char path_out[PATH_MAX];
1837 napi_get_value_string_utf8(env, args[PARAM_1], path_out, length2, &strResult2);
1838
1839 int fd_in = PARAM_0;
1840 int fdOut = PARAM_0;
1841 int backParam = PARAM_0;
1842 fd_in = open(path_in, O_RDWR | O_CREAT, TEST_MODE);
1843 fdOut = open(path_out, O_RDWR | O_CREAT, TEST_MODE);
1844 int wlen = PARAM_0;
1845 do {
1846 backParam = copy_file_range(fd_in, nullptr, fdOut, nullptr, wlen, PARAM_0);
1847 wlen -= backParam;
1848 } while (wlen > NO_ERR && backParam > NO_ERR);
1849
1850 close(fd_in);
1851 close(fdOut);
1852
1853 if (backParam >= NO_ERR) {
1854 backParam = NO_ERR;
1855 }
1856 napi_value result = nullptr;
1857 napi_create_int32(env, backParam, &result);
1858 return result;
1859 }
CTerMid(napi_env env, napi_callback_info info)1860 static napi_value CTerMid(napi_env env, napi_callback_info info)
1861 {
1862 char buf[BUFSIZ];
1863 char *backParam = ctermid(buf);
1864 napi_value result = nullptr;
1865 napi_create_string_utf8(env, backParam, NAPI_AUTO_LENGTH, &result);
1866 return result;
1867 }
1868
Dup(napi_env env, napi_callback_info info)1869 static napi_value Dup(napi_env env, napi_callback_info info)
1870 {
1871 errno = ERRON_0;
1872 size_t argc = PARAM_1;
1873 napi_value args[PARAM_1] = {nullptr};
1874 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1875 size_t length = LENGTH;
1876 size_t strResult = PARAM_0;
1877 char path[length];
1878 napi_get_value_string_utf8(env, args[PARAM_0], path, length, &strResult);
1879
1880 int fd = open(path, O_CREAT, TEST_MODE);
1881 dup(fd);
1882 close(fd);
1883 napi_value result = nullptr;
1884 napi_create_int32(env, errno, &result);
1885 return result;
1886 }
1887
Dup2(napi_env env, napi_callback_info info)1888 static napi_value Dup2(napi_env env, napi_callback_info info)
1889 {
1890 errno = ERRON_0;
1891 size_t argc = PARAM_1;
1892 napi_value args[PARAM_1] = {nullptr};
1893 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1894 size_t length = LENGTH;
1895 size_t strResult = PARAM_0;
1896 char path[length];
1897 napi_get_value_string_utf8(env, args[PARAM_0], path, length, &strResult);
1898 int fileDescribe = open(path, O_CREAT, TEST_MODE);
1899 dup2(fileDescribe, TEST_DUP);
1900 close(fileDescribe);
1901 napi_value result = nullptr;
1902 napi_create_int32(env, errno, &result);
1903 return result;
1904 }
1905
Dup3(napi_env env, napi_callback_info info)1906 static napi_value Dup3(napi_env env, napi_callback_info info)
1907 {
1908 errno = ERRON_0;
1909 int fileDescribe = open(PATH, O_CREAT, TEST_MODE);
1910 int returnValue = FAIL;
1911 if (dup3(fileDescribe, TEST_DUP, O_CLOEXEC) != -1) {
1912 returnValue = BACKGROUND;
1913 }
1914 close(fileDescribe);
1915 napi_value result = nullptr;
1916 napi_create_int32(env, returnValue, &result);
1917 return result;
1918 }
1919
Faccessat(napi_env env, napi_callback_info info)1920 static napi_value Faccessat(napi_env env, napi_callback_info info)
1921 {
1922 size_t argc = PARAM_1;
1923 napi_value args[PARAM_1] = {nullptr};
1924 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1925 size_t length = LENGTH;
1926 size_t strResult = PARAM_0;
1927 char ptr[length];
1928 napi_get_value_string_utf8(env, args[PARAM_0], ptr, length, &strResult);
1929 int fd = open(ptr, O_RDWR | O_CREAT, TEST_MODE);
1930 int isExist = faccessat(fd, ptr, F_OK, PARAM_0);
1931 close(fd);
1932 remove(ptr);
1933 napi_value result = nullptr;
1934 napi_create_int32(env, isExist, &result);
1935 return result;
1936 }
1937
Fchdir(napi_env env, napi_callback_info info)1938 static napi_value Fchdir(napi_env env, napi_callback_info info)
1939 {
1940 size_t argc = PARAM_1;
1941 napi_value args[PARAM_1] = {nullptr};
1942 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1943 size_t length = LENGTH;
1944 size_t strResult = PARAM_0;
1945 char PATH_DATA[length];
1946 napi_get_value_string_utf8(env, args[PARAM_0], PATH_DATA, length, &strResult);
1947 char buf[30];
1948 int fd = open(PATH_DATA, O_RDONLY);
1949 int backParam = fchdir(fd);
1950
1951 napi_value result = nullptr;
1952 napi_create_int32(env, backParam, &result);
1953 memset(buf, PARAM_0, sizeof(buf));
1954 getcwd(buf, sizeof(buf));
1955 strcmp(PATH_DATA, buf);
1956 close(fd);
1957 return result;
1958 }
1959
Fdatasync(napi_env env, napi_callback_info info)1960 static napi_value Fdatasync(napi_env env, napi_callback_info info)
1961 {
1962 int backParam = PARAM_0;
1963 int fileDescribe = PARAM_0;
1964 size_t argc = PARAM_1;
1965 napi_value args[PARAM_1] = {nullptr};
1966 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1967 size_t length = LENGTH;
1968 size_t strResult = PARAM_0;
1969 char pathname[length];
1970 napi_get_value_string_utf8(env, args[PARAM_0], pathname, length, &strResult);
1971 fileDescribe = open(pathname, O_CREAT, PARAM_0777);
1972 backParam = fdatasync(fileDescribe);
1973 close(fileDescribe);
1974 napi_value result = nullptr;
1975 napi_create_int32(env, backParam, &result);
1976 return result;
1977 }
1978
Fchown(napi_env env, napi_callback_info info)1979 static napi_value Fchown(napi_env env, napi_callback_info info)
1980 {
1981 int backParam = 0;
1982 int fileDescribe = 0;
1983 size_t argc = PARAM_1;
1984 napi_value args[PARAM_1] = {nullptr};
1985 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1986 size_t length = LENGTH;
1987 size_t strResult = PARAM_0;
1988 char pathname[length];
1989 napi_get_value_string_utf8(env, args[PARAM_0], pathname, length, &strResult);
1990 fileDescribe = open(pathname, O_CREAT, PARAM_0777);
1991 uid_t owner = getuid();
1992 gid_t group = getgid();
1993 backParam = fchown(fileDescribe, owner, group);
1994 close(fileDescribe);
1995 napi_value result = nullptr;
1996 napi_create_int32(env, backParam, &result);
1997 return result;
1998 }
Fchownat(napi_env env, napi_callback_info info)1999 static napi_value Fchownat(napi_env env, napi_callback_info info)
2000 {
2001 size_t argc = PARAM_1;
2002 napi_value args[PARAM_1] = {nullptr};
2003 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2004 size_t length = LENGTH;
2005 size_t strResult = PARAM_0;
2006 char pathname[length];
2007 napi_get_value_string_utf8(env, args[PARAM_0], pathname, length, &strResult);
2008 int backParam = PARAM_0, fileDescribe = PARAM_0, flag = AT_EMPTY_PATH;
2009 fileDescribe = open(pathname, O_CREAT, PARAM_0777);
2010 uid_t owner = getuid();
2011 gid_t group = getgid();
2012 backParam = fchownat(fileDescribe, pathname, owner, group, flag);
2013 close(fileDescribe);
2014 napi_value result = nullptr;
2015 napi_create_int32(env, backParam, &result);
2016 return result;
2017 }
do_plain_tests(int (*fn1)(void *arg), void *arg1, int (*fn2)(void *arg), void *arg2)2018 int do_plain_tests(int (*fn1)(void *arg), void *arg1, int (*fn2)(void *arg), void *arg2)
2019 {
2020 int ret = PARAM_0;
2021 int pid = PARAM_0;
2022
2023 pid = fork();
2024 if (pid == FAILD) {
2025 return FAILD;
2026 }
2027 if (pid == NO_ERR) {
2028 _exit(PARAM_0);
2029 }
2030 if (fn2) {
2031 ret = fn2(arg2);
2032 }
2033 return ret;
2034 }
2035
Msggettest(void *testarg)2036 int Msggettest(void *testarg)
2037 {
2038 int resultdaemon = daemon(PARAM_0, PARAM_0);
2039 return resultdaemon;
2040 }
2041
Daemon(napi_env env, napi_callback_info info)2042 static napi_value Daemon(napi_env env, napi_callback_info info)
2043 {
2044 errno = ERRON_0;
2045 void *test1 = nullptr;
2046 do_plain_tests(Msggettest, test1, nullptr, nullptr);
2047 napi_value result = nullptr;
2048 napi_create_int32(env, errno, &result);
2049 return result;
2050 }
2051
test(va_list ap, const char *fmt, ...)2052 void test(va_list ap, const char *fmt, ...)
2053 {
2054 va_start(ap, fmt);
2055 vwarn(fmt, ap);
2056 va_end(ap);
2057 }
Vwarn(napi_env env, napi_callback_info info)2058 static napi_value Vwarn(napi_env env, napi_callback_info info)
2059 {
2060 const char *filename = "/data/storage/el2/base/files/Fzl.txt";
2061 int fd = open(filename, O_CREAT | O_RDONLY | O_TRUNC, PARAM_0444);
2062 const char *data = "Hello";
2063 int ret = PARAM_0;
2064 ssize_t bytesWritten = write(fd, data, strlen(data));
2065 if (bytesWritten == FAIL) {
2066 const char *fmt = "vwarn_error:Unable to create file: ";
2067 va_list ap;
2068 test(ap, fmt);
2069 ret = FAIL;
2070 }
2071 close(fd);
2072 napi_value result = nullptr;
2073 napi_create_int32(env, ret, &result);
2074 return result;
2075 }
2076
VwarnxTest(va_list ap, const char *fmt, ...)2077 void VwarnxTest(va_list ap, const char *fmt, ...)
2078 {
2079 va_start(ap, fmt);
2080 vwarnx(fmt, ap);
2081 va_end(ap);
2082 }
Vwarnx(napi_env env, napi_callback_info info)2083 static napi_value Vwarnx(napi_env env, napi_callback_info info)
2084 {
2085 const char *filename = "/data/storage/el2/base/files/Fzl.txt";
2086 int fd = open(filename, O_CREAT | O_RDONLY | O_TRUNC, PARAM_0444);
2087 const char *data = "Hello";
2088 int ret = PARAM_0;
2089 ssize_t bytesWritten = write(fd, data, strlen(data));
2090 if (bytesWritten == FAIL) {
2091 const char *fmt = "vwarnx_error:Unable to create file: ";
2092 va_list ap;
2093 VwarnxTest(ap, fmt);
2094 ret = FAIL;
2095 }
2096 close(fd);
2097 napi_value result = nullptr;
2098 napi_create_int32(env, ret, &result);
2099 return result;
2100 }
2101 EXTERN_C_START
Init(napi_env env, napi_value exports)2102 static napi_value Init(napi_env env, napi_value exports)
2103 {
2104 napi_property_descriptor desc[] = {
2105 {"getGroups", nullptr, GetGroups, nullptr, nullptr, nullptr, napi_default, nullptr},
2106 {"getPid", nullptr, GetPid, nullptr, nullptr, nullptr, napi_default, nullptr},
2107 {"getPPid", nullptr, GetPPid, nullptr, nullptr, nullptr, napi_default, nullptr},
2108 {"getPGrp", nullptr, GetPGrp, nullptr, nullptr, nullptr, napi_default, nullptr},
2109 {"getPGid", nullptr, GetPGid, nullptr, nullptr, nullptr, napi_default, nullptr},
2110 {"getSid", nullptr, GetSid, nullptr, nullptr, nullptr, napi_default, nullptr},
2111 {"getUid", nullptr, GetUid, nullptr, nullptr, nullptr, napi_default, nullptr},
2112 {"getLogin", nullptr, GetLogin, nullptr, nullptr, nullptr, napi_default, nullptr},
2113 {"getLoginR", nullptr, GetLoginR, nullptr, nullptr, nullptr, napi_default, nullptr},
2114 {"getOpt", nullptr, GetOpt, nullptr, nullptr, nullptr, napi_default, nullptr},
2115 {"getTid", nullptr, GetTid, nullptr, nullptr, nullptr, napi_default, nullptr},
2116 {"getEUid", nullptr, GetEUid, nullptr, nullptr, nullptr, napi_default, nullptr},
2117 {"getGid", nullptr, GetGid, nullptr, nullptr, nullptr, napi_default, nullptr},
2118 {"getEGid", nullptr, GetEGid, nullptr, nullptr, nullptr, napi_default, nullptr},
2119 {"getHostName", nullptr, GetHostName, nullptr, nullptr, nullptr, napi_default, nullptr},
2120 {"getPageSize", nullptr, GetPageSize, nullptr, nullptr, nullptr, napi_default, nullptr},
2121 {"getDTableSize", nullptr, GetDTableSize, nullptr, nullptr, nullptr, napi_default, nullptr},
2122 {"getReSuid", nullptr, GetReSuid, nullptr, nullptr, nullptr, napi_default, nullptr},
2123 {"getResGid", nullptr, GetResGid, nullptr, nullptr, nullptr, napi_default, nullptr},
2124 {"sleep", nullptr, Sleep, nullptr, nullptr, nullptr, napi_default, nullptr},
2125 {"lChOwn", nullptr, LChOwn, nullptr, nullptr, nullptr, napi_default, nullptr},
2126 {"link", nullptr, Link, nullptr, nullptr, nullptr, napi_default, nullptr},
2127 {"linkAt", nullptr, LinkAt, nullptr, nullptr, nullptr, napi_default, nullptr},
2128 {"lockF", nullptr, LockF, nullptr, nullptr, nullptr, napi_default, nullptr},
2129 {"lockF64", nullptr, LockF64, nullptr, nullptr, nullptr, napi_default, nullptr},
2130 {"getrandom", nullptr, Getrandom, nullptr, nullptr, nullptr, napi_default, nullptr},
2131 {"glob", nullptr, Glob, nullptr, nullptr, nullptr, napi_default, nullptr},
2132 {"globfree", nullptr, Globfree, nullptr, nullptr, nullptr, napi_default, nullptr},
2133 {"isatty", nullptr, Isatty, nullptr, nullptr, nullptr, napi_default, nullptr},
2134 {"swab", nullptr, Swab, nullptr, nullptr, nullptr, napi_default, nullptr},
2135 {"sync", nullptr, Sync, nullptr, nullptr, nullptr, napi_default, nullptr},
2136 {"syncfs", nullptr, Syncfs, nullptr, nullptr, nullptr, napi_default, nullptr},
2137 {"syscall", nullptr, Syscall, nullptr, nullptr, nullptr, napi_default, nullptr},
2138 {"sysinfo", nullptr, Sysinfo, nullptr, nullptr, nullptr, napi_default, nullptr},
2139 {"sync_file_range", nullptr, Sync_file_range, nullptr, nullptr, nullptr, napi_default, nullptr},
2140 {"symlinkat", nullptr, Symlinkat, nullptr, nullptr, nullptr, napi_default, nullptr},
2141 {"symlink", nullptr, Symlink, nullptr, nullptr, nullptr, napi_default, nullptr},
2142 {"tcgetpgrp", nullptr, Tcgetpgrp, nullptr, nullptr, nullptr, napi_default, nullptr},
2143 {"tcsetpgrp", nullptr, Tcsetpgrp, nullptr, nullptr, nullptr, napi_default, nullptr},
2144 {"setpgid", nullptr, Setpgid, nullptr, nullptr, nullptr, napi_default, nullptr},
2145 {"setpgrp", nullptr, Setpgrp, nullptr, nullptr, nullptr, napi_default, nullptr},
2146 {"crypt", nullptr, Crypt, nullptr, nullptr, nullptr, napi_default, nullptr},
2147 {"setresuid", nullptr, Setresuid, nullptr, nullptr, nullptr, napi_default, nullptr},
2148 {"read", nullptr, Read, nullptr, nullptr, nullptr, napi_default, nullptr},
2149 {"readlink", nullptr, Readlink, nullptr, nullptr, nullptr, napi_default, nullptr},
2150 {"readlinkat", nullptr, Readlinkat, nullptr, nullptr, nullptr, napi_default, nullptr},
2151 {"rmdir", nullptr, Rmdir, nullptr, nullptr, nullptr, napi_default, nullptr},
2152 {"truncate", nullptr, Truncate, nullptr, nullptr, nullptr, napi_default, nullptr},
2153 {"truncate64", nullptr, Truncate64, nullptr, nullptr, nullptr, napi_default, nullptr},
2154 {"unlink", nullptr, Unlink, nullptr, nullptr, nullptr, napi_default, nullptr},
2155 {"unlinkat", nullptr, Unlinkat, nullptr, nullptr, nullptr, napi_default, nullptr},
2156 {"usleep", nullptr, Usleep, nullptr, nullptr, nullptr, napi_default, nullptr},
2157 {"ttyname", nullptr, Ttyname, nullptr, nullptr, nullptr, napi_default, nullptr},
2158 {"ttyname_r", nullptr, Ttyname_r, nullptr, nullptr, nullptr, napi_default, nullptr},
2159 {"access", nullptr, Access, nullptr, nullptr, nullptr, napi_default, nullptr},
2160 {"eaccess", nullptr, Eaccess, nullptr, nullptr, nullptr, napi_default, nullptr},
2161 {"close", nullptr, Close, nullptr, nullptr, nullptr, napi_default, nullptr},
2162 {"ctermid", nullptr, CTerMid, nullptr, nullptr, nullptr, napi_default, nullptr},
2163 {"copy_file_range", nullptr, Copy_file_range, nullptr, nullptr, nullptr, napi_default, nullptr},
2164 {"alarm", nullptr, Alarm, nullptr, nullptr, nullptr, napi_default, nullptr},
2165 {"brk", nullptr, Brk, nullptr, nullptr, nullptr, napi_default, nullptr},
2166 {"acct", nullptr, Acct, nullptr, nullptr, nullptr, napi_default, nullptr},
2167 {"getentropy", nullptr, Getentropy, nullptr, nullptr, nullptr, napi_default, nullptr},
2168 {"getcwd", nullptr, Getcwd, nullptr, nullptr, nullptr, napi_default, nullptr},
2169 {"fork", nullptr, Fork, nullptr, nullptr, nullptr, napi_default, nullptr},
2170 {"fpathconf", nullptr, Fpathconf, nullptr, nullptr, nullptr, napi_default, nullptr},
2171 {"getdomainname", nullptr, Getdomainname, nullptr, nullptr, nullptr, napi_default, nullptr},
2172 {"chdir", nullptr, Chdir, nullptr, nullptr, nullptr, napi_default, nullptr},
2173 {"chown", nullptr, Chown, nullptr, nullptr, nullptr, napi_default, nullptr},
2174 {"chroot", nullptr, Chroot, nullptr, nullptr, nullptr, napi_default, nullptr},
2175 {"fsync", nullptr, Fsync, nullptr, nullptr, nullptr, napi_default, nullptr},
2176 {"ftruncate", nullptr, Ftruncate, nullptr, nullptr, nullptr, napi_default, nullptr},
2177 {"ftruncate64", nullptr, Ftruncate64, nullptr, nullptr, nullptr, napi_default, nullptr},
2178 {"readLink", nullptr, ReadLink, nullptr, nullptr, nullptr, napi_default, nullptr},
2179 {"readLinkAt", nullptr, ReadLinkAt, nullptr, nullptr, nullptr, napi_default, nullptr},
2180 {"truncate", nullptr, Truncate, nullptr, nullptr, nullptr, napi_default, nullptr},
2181 {"truncate64", nullptr, Truncate64, nullptr, nullptr, nullptr, napi_default, nullptr},
2182 {"optarg", nullptr, Optarg, nullptr, nullptr, nullptr, napi_default, nullptr},
2183 {"optind", nullptr, Optind, nullptr, nullptr, nullptr, napi_default, nullptr},
2184 {"optopt", nullptr, Optopt, nullptr, nullptr, nullptr, napi_default, nullptr},
2185 {"opterr", nullptr, Opterr, nullptr, nullptr, nullptr, napi_default, nullptr},
2186 {"pRead", nullptr, PRead, nullptr, nullptr, nullptr, napi_default, nullptr},
2187 {"nice", nullptr, Nice, nullptr, nullptr, nullptr, napi_default, nullptr},
2188 {"pipe", nullptr, Pipe, nullptr, nullptr, nullptr, napi_default, nullptr},
2189 {"pipe2", nullptr, Pipe2, nullptr, nullptr, nullptr, napi_default, nullptr},
2190 {"pathconf", nullptr, Pathconf, nullptr, nullptr, nullptr, napi_default, nullptr},
2191 {"pause", nullptr, Pause, nullptr, nullptr, nullptr, napi_default, nullptr},
2192 {"pread", nullptr, Pread, nullptr, nullptr, nullptr, napi_default, nullptr},
2193 {"setsid", nullptr, Setsid, nullptr, nullptr, nullptr, napi_default, nullptr},
2194 {"setdomainname", nullptr, Setdomainname, nullptr, nullptr, nullptr, napi_default, nullptr},
2195 {"setgroups", nullptr, Setgroups, nullptr, nullptr, nullptr, napi_default, nullptr},
2196 {"setgid", nullptr, Setgid, nullptr, nullptr, nullptr, napi_default, nullptr},
2197 {"setuid", nullptr, Setuid, nullptr, nullptr, nullptr, napi_default, nullptr},
2198 {"seteuid", nullptr, Seteuid, nullptr, nullptr, nullptr, napi_default, nullptr},
2199 {"setegid", nullptr, Setegid, nullptr, nullptr, nullptr, napi_default, nullptr},
2200 {"setreuid", nullptr, Setreuid, nullptr, nullptr, nullptr, napi_default, nullptr},
2201 {"setregid", nullptr, Setregid, nullptr, nullptr, nullptr, napi_default, nullptr},
2202 {"setresgid", nullptr, Setresgid, nullptr, nullptr, nullptr, napi_default, nullptr},
2203 {"readlinkChk", nullptr, ReadlinkChk, nullptr, nullptr, nullptr, napi_default, nullptr},
2204 {"issetugid", nullptr, Issetugid, nullptr, nullptr, nullptr, napi_default, nullptr},
2205 {"vfork", nullptr, Vfork, nullptr, nullptr, nullptr, napi_default, nullptr},
2206 {"sethostname", nullptr, Sethostname, nullptr, nullptr, nullptr, napi_default, nullptr},
2207 {"daemon", nullptr, Daemon, nullptr, nullptr, nullptr, napi_default, nullptr},
2208 {"sysconf", nullptr, Sysconf, nullptr, nullptr, nullptr, napi_default, nullptr},
2209 {"sbrk", nullptr, Sbrk, nullptr, nullptr, nullptr, napi_default, nullptr},
2210 {"write", nullptr, Write, nullptr, nullptr, nullptr, napi_default, nullptr},
2211 {"environ", nullptr, Environ, nullptr, nullptr, nullptr, napi_default, nullptr},
2212 {"dup", nullptr, Dup, nullptr, nullptr, nullptr, napi_default, nullptr},
2213 {"dup2", nullptr, Dup2, nullptr, nullptr, nullptr, napi_default, nullptr},
2214 {"dup3", nullptr, Dup3, nullptr, nullptr, nullptr, napi_default, nullptr},
2215 {"execl", nullptr, Execl, nullptr, nullptr, nullptr, napi_default, nullptr},
2216 {"execle", nullptr, Execle, nullptr, nullptr, nullptr, napi_default, nullptr},
2217 {"execlp", nullptr, Execlp, nullptr, nullptr, nullptr, napi_default, nullptr},
2218 {"execv", nullptr, Execv, nullptr, nullptr, nullptr, napi_default, nullptr},
2219 {"execvp", nullptr, Execvp, nullptr, nullptr, nullptr, napi_default, nullptr},
2220 {"execvpe", nullptr, Execvpe, nullptr, nullptr, nullptr, napi_default, nullptr},
2221 {"fexecve", nullptr, Fexecve, nullptr, nullptr, nullptr, napi_default, nullptr},
2222 {"execve", nullptr, Execve, nullptr, nullptr, nullptr, napi_default, nullptr},
2223 {"faccessat", nullptr, Faccessat, nullptr, nullptr, nullptr, napi_default, nullptr},
2224 {"fchdir", nullptr, Fchdir, nullptr, nullptr, nullptr, napi_default, nullptr},
2225 {"fchown", nullptr, Fchown, nullptr, nullptr, nullptr, napi_default, nullptr},
2226 {"fchownat", nullptr, Fchownat, nullptr, nullptr, nullptr, napi_default, nullptr},
2227 {"fdatasync", nullptr, Fdatasync, nullptr, nullptr, nullptr, napi_default, nullptr},
2228 {"vwarn", nullptr, Vwarn, nullptr, nullptr, nullptr, napi_default, nullptr},
2229 {"vwarnx", nullptr, Vwarnx, nullptr, nullptr, nullptr, napi_default, nullptr}};
2230 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
2231 return exports;
2232 }
2233 EXTERN_C_END
2234
2235 static napi_module demoModule = {
2236 .nm_version = 1,
2237 .nm_flags = 0,
2238 .nm_filename = nullptr,
2239 .nm_register_func = Init,
2240 .nm_modname = "unistd",
2241 .nm_priv = ((void *)0),
2242 .reserved = {0},
2243 };
2244
RegisterEntryModule(void)2245 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }