📄 rpcsend.c
字号:
/*
* +-------------------------------------------------------------------+
* | Copyright (c) 1995,1996,1997 by Philips Semiconductors. |
* | |
* | This software is furnished under a license and may only be used |
* | and copied in accordance with the terms and conditions of such a |
* | license and with the inclusion of this copyright notice. This |
* | software or any other copies of this software may not be provided |
* | or otherwise made available to any other person. The ownership |
* | and title of this software is not transferred. |
* | |
* | The information in this software is subject to change without |
* | any prior notice and should not be construed as a commitment by |
* | Philips Semiconductors. |
* | |
* | This code and information is provided "as is" without any |
* | warranty of any kind, either expressed or implied, including but |
* | not limited to the implied warranties of merchantability and/or |
* | fitness for any particular purpose. |
* +-------------------------------------------------------------------+
*
*
* Module name : RPCSend.c 1.10
*
* Last update : 12:54:25 - 99/12/10
*
* Title : Implementation of HostCall interface
*
* Author : Juul van der Spek
*
* Reviewed :
*
* Revision history :
*
* Description :
*
*/
switch (command->code) {
/* -------------------------------------------- */
case HostCall_ISATTY:
case HostCall_LSEEK:
case HostCall_CLOSE:
case HostCall_EXIT:
case HostCall_ARGV_ARGC_INFO:
case HostCall_FCNTL:
case HostCall_SOCKET:
case HostCall_CLOSESOCKET:
case HostCall_LISTEN:
case HostCall_REWINDDIR:
case HostCall_CLOSEDIR:
case HostCall_FREEBUFF:
case HostCall_READBUFF:
case HostCall_WRITEBUFF:
case HostCall_FSYNC:
case HostCall_SYNC:
standard_RESULT_BUFF_DEF:
shadow_command=
RESULT_BUFF_DEF(
command,
0,Null,False
);
break;
/* -------------------------------------------- */
case HostCall_INETADDR:
XFER_DATA(
command->parameters.inetaddr_args.cp,
strlen ( command->parameters.inetaddr_args.cp ) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_ACCEPT:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.accept_args.addrlen,
(Address)&command->parameters.accept_args.addr,
True
);
break;
/* -------------------------------------------- */
case HostCall_BIND:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.bind_args.addrlen,
(Address)&command->parameters.bind_args.addr,
True
);
break;
/* -------------------------------------------- */
case HostCall_CONNECT:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.connect_args.addrlen,
(Address)&command->parameters.connect_args.addr,
True
);
break;
/* -------------------------------------------- */
case HostCall_SEND:
XFER_DATA(
command->parameters.send_args.buf,
command->parameters.send_args.len
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_RECV:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.recv_args.len,
(Address)&command->parameters.recv_args.buf,
True
);
break;
/* -------------------------------------------- */
/* -------------------------------------------- */
/* -------------------------------------------- */
case HostCall_OPEN:
XFER_DATA(
command->parameters.open_args.path,
strlen(command->parameters.open_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_STAT:
XFER_DATA(
command->parameters.stat_args.path,
strlen(command->parameters.stat_args.path) + 1
);
shadow_command=
RESULT_BUFF_DEF(
command,
sizeof(*command->parameters.stat_args.buf),
(Address)&command->parameters.stat_args.buf,
False
);
break;
/* -------------------------------------------- */
case HostCall_OPENDLL:
XFER_DATA(
command->parameters.open_dll_args.path,
strlen(command->parameters.open_dll_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_FSTAT:
shadow_command=
RESULT_BUFF_DEF(
command,
sizeof(*command->parameters.fstat_args.buf),
(Address)&command->parameters.fstat_args.buf,
False
);
break;
/* -------------------------------------------- */
case HostCall_WRITE:
XFER_DATA(
command->parameters.write_args.buf,
command->parameters.write_args.nbyte
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_UNLINK:
XFER_DATA(
command->parameters.unlink_args.path,
strlen(command->parameters.unlink_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_TIME:
shadow_command=
RESULT_BUFF_DEF(
command,
sizeof(*command->parameters.time_args.tloc),
(Address)&command->parameters.time_args.tloc,
False
);
break;
/* -------------------------------------------- */
case HostCall_MKTEMP:
XFER_DATA(
command->parameters.mktemp_args.name_template,
strlen(command->parameters.mktemp_args.name_template) + 1
);
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.mktemp_args.retval_length,
(Address)&command->parameters.mktemp_args.retval,
False
);
break;
/* -------------------------------------------- */
case HostCall_GETENV:
XFER_DATA(
command->parameters.getenv_args.name,
strlen(command->parameters.getenv_args.name) + 1
);
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.getenv_args.retval_length,
(Address)&command->parameters.getenv_args.retval,
False
);
break;
/* -------------------------------------------- */
case HostCall_TMPNAM:
XFER_DATA(
command->parameters.tmpnam_args.name,
strlen(command->parameters.tmpnam_args.name) + 1
);
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.tmpnam_args.retval_length,
(Address)&command->parameters.tmpnam_args.retval,
False
);
break;
/* -------------------------------------------- */
case HostCall_GET_ARGUMENT_STRING:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.get_argument_string_args.retval_length,
(Address)&command->parameters.get_argument_string_args.retval,
False
);
break;
/* -------------------------------------------- */
case HostCall_MALLOCBUFF:
shadow_command=
RESULT_BUFF_DEF(
command,
command->parameters.mallocbuff_args.scatter_size
* sizeof(HostCall_MemoryBlock),
(Address)&command->parameters.mallocbuff_args.scatter,
False
);
break;
/* -------------------------------------------- */
case HostCall_ACCESS:
XFER_DATA(
command->parameters.access_args.path,
strlen(command->parameters.access_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_MKDIR:
XFER_DATA(
command->parameters.mkdir_args.path,
strlen(command->parameters.mkdir_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_LINK:
XFER_DATA(
command->parameters.link_args.path1,
strlen(command->parameters.link_args.path1) + 1
);
XFER_DATA2(
command->parameters.link_args.path2,
strlen(command->parameters.link_args.path2) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_MOVE:
XFER_DATA(
command->parameters.move_args.path1,
strlen(command->parameters.move_args.path1) + 1
);
XFER_DATA2(
command->parameters.move_args.path2,
strlen(command->parameters.move_args.path2) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_RMDIR:
XFER_DATA(
command->parameters.rmdir_args.path,
strlen(command->parameters.rmdir_args.path) + 1
);
goto standard_RESULT_BUFF_DEF;
/* -------------------------------------------- */
case HostCall_PUTENV:
XFER_DATA(
command->parameters.putenv_args.string,
strlen(command->parameters.putenv_args.string) + 1
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -