📄 rpcserv.c
字号:
lseek (mac_fd[i], 0L, SEEK_END);
break;
}
}
#endif
command->parameters.write_args.retval=
convert_host_long (
parm_write (
convert_tcs_long (command->parameters.write_args.fildes),
IN_BUFFER (command->parameters.write_args.buf),
convert_tcs_long (command->parameters.write_args.nbyte)));
PCI_STABILISE (&command->code, &saved);
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_LSEEK:
command->parameters.lseek_args.retval=
convert_host_long (
parm_seek (
convert_tcs_long (command->parameters.lseek_args.fildes),
convert_tcs_long (command->parameters.lseek_args.offset),
convert_tcs_seek (command->parameters.lseek_args.whence)));
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_CLOSE:
command->parameters.close_args.retval=
convert_host_long (
host_close (ninfo,
convert_tcs_long (command->parameters.close_args.fildes)));
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_UNLINK:
command->parameters.unlink_args.retval=
convert_host_long (
unlink (
IN_BUFFER (command->parameters.unlink_args.path)));
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_TIME:
command->parameters.time_args.retval=
convert_host_long (
time ((Pointer) RESULT_BUFFER (command->parameters.time_args.tloc)));
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_MKTEMP:
intermediate_result = mktemp ((String) IN_BUFFER (command->parameters.mktemp_args.name_template));
if (intermediate_result == NULL) {
command->parameters.mktemp_args.retval = NULL;
} else {
strncpy ((String) RESULT_BUFFER (command->parameters.mktemp_args.retval),
intermediate_result,
convert_tcs_long (command->parameters.mktemp_args.retval_length));
}
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_EXIT:
host_exit (ninfo,
convert_tcs_long (command->parameters.exit_args.status));
command->returned_errno = 0;
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_FCNTL:
command->parameters.fcntl_args.retval=
convert_host_long (
parm_fcntl (
convert_tcs_long (command->parameters.fcntl_args.fildes),
convert_tcs_fcntl_cmd (command->parameters.fcntl_args.cmd),
convert_tcs_fcntl_flags (command->parameters.fcntl_args.flags)));
command->returned_errno = convert_host_errno (last_io_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_ARGV_ARGC_INFO:
command->parameters.argv_argc_info_args.argc = convert_tcs_long (ninfo->argc);
command->parameters.argv_argc_info_args.argument_string_length
= convert_tcs_long (argument_string_length (ninfo));
command->returned_errno = 0;
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_GET_ARGUMENT_STRING:
pass_argument_string (ninfo,
RESULT_BUFFER (command->parameters.get_argument_string_args.retval));
command->returned_errno = 0;
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_GETENV:
intermediate_result= getenv (IN_BUFFER (command->parameters.getenv_args.name));
if (intermediate_result == NULL) {
command->parameters.getenv_args.retval= NULL;
} else {
strncpy (
RESULT_BUFFER (command->parameters.getenv_args.retval),
intermediate_result,
convert_tcs_long (command->parameters.getenv_args.retval_length));
}
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_TMPNAM:
intermediate_result = tmpnam (IN_BUFFER (command->parameters.tmpnam_args.name));
if (intermediate_result == NULL) {
command->parameters.tmpnam_args.retval= NULL;
} else {
strncpy (
RESULT_BUFFER (command->parameters.tmpnam_args.retval),
intermediate_result,
convert_tcs_long (command->parameters.tmpnam_args.retval_length));
}
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_ACCESS:
command->parameters.access_args.retval=
convert_host_long (
access (
IN_BUFFER (command->parameters.access_args.path),
convert_tcs_long (command->parameters.access_args.amode)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_MKDIR:
command->parameters.mkdir_args.retval=
convert_host_long (
mkdir (
IN_BUFFER (command->parameters.mkdir_args.path),
convert_tcs_long (command->parameters.mkdir_args.mode)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
#if !defined(_WIN32) && !defined(__MWERKS__)
case HostCall_LINK:
command->parameters.link_args.retval=
convert_host_long (
link (
IN_BUFFER (command->parameters.link_args.path1),
IN_BUFFER2(command->parameters.link_args.path2)
));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
#endif
/* -------------------------------------------- */
case HostCall_MOVE:
command->parameters.move_args.retval=
convert_host_long (
rename (
IN_BUFFER (command->parameters.move_args.path1),
IN_BUFFER2(command->parameters.move_args.path2)
));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_RMDIR:
command->parameters.rmdir_args.retval=
convert_host_long (
rmdir (
IN_BUFFER (command->parameters.rmdir_args.path)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_PUTENV:
command->parameters.putenv_args.retval=
convert_host_long (
putenv (
IN_BUFFER (command->parameters.putenv_args.string)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_FSYNC:
command->parameters.fsync_args.retval=
convert_host_long (
fsync (
convert_tcs_long (command->parameters.fsync_args.fildes)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_SYNC:
sync();
command->parameters.sync_args.retval= 0;
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_OPENDIR:
command->parameters.opendir_args.retval =
(void *) convert_host_ulong (
(UInt32) opendir (
IN_BUFFER (command->parameters.opendir_args.path)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_READDIR:
command->parameters.readdir_args.retval= (TCS_DIR)
host_readdir (
command->parameters.readdir_args.retval,
(TCS_DIR) RESULT_BUFFER (command->parameters.readdir_args.retval),
(DIR *) convert_tcs_ulong ((UInt32) command->parameters.readdir_args.host_dir));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_REWINDDIR:
rewinddir ((void *)
convert_tcs_ulong ((UInt32) command->parameters.rewinddir_args.dir));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_CLOSEDIR:
command->parameters.closedir_args.retval=
convert_host_long (
closedir ((void *)
convert_tcs_ulong ((UInt32) command->parameters.closedir_args.dir)));
command->returned_errno = convert_host_errno (last_other_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
#ifndef SERIAL_RPC
/* disabled, until scrutinized for serial communication mode */
/* -------------------------------------------- */
/* --------------- SOCKET CALLS --------------- */
/* -------------------------------------------- */
case HostCall_SOCKET:
command->parameters.socket_args.retval =
convert_host_long (
socket (
convert_tcs_af (command->parameters.socket_args.af),
convert_tcs_sock (command->parameters.socket_args.type),
convert_tcs_ipproto (command->parameters.socket_args.protocol)));
command->returned_errno = convert_host_errno (last_net_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
/* -------------------------------------------- */
case HostCall_RECV:
command->parameters.recv_args.retval=
convert_host_long (
recv (
convert_tcs_long (command->parameters.recv_args.s),
RESULT_BUFFER (command->parameters.recv_args.buf),
convert_tcs_long (command->parameters.recv_args.len),
convert_tcs_msg (command->parameters.recv_args.flags)));
command->returned_errno = convert_host_errno (last_net_errno ());
command->notification_status = convert_host_long (HostCall_DONE);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -