Qshell Interpreter (qsh) - FTP Directory Listing - IBM
Qshell Interpreter (qsh) - FTP Directory Listing - IBM
Qshell Interpreter (qsh) - FTP Directory Listing - IBM
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
char home_var[PATH_MAX+10];<br />
char logname_var[NAME_SIZE+10];<br />
char path_var[] = “PATH=/usr/bin:”;<br />
char stdio_var[] = “Q<strong>IBM</strong>_USE_DESCRIPTOR_STDIO=I”;<br />
char terminal_type_var[] = “TERMINAL_TYPE=REMOTE”;<br />
char nlspath_var[] = “NLSPATH=/Q<strong>IBM</strong>/ProdData/OS400/Shell/MRI2924/%N”;<br />
volatile _INTRPT_Hndlr_Parms_T ca; /* For exception handler */<br />
/********************************************************************/<br />
/* Process the input parameters. */<br />
/********************************************************************/<br />
/* Use the default port if one is not specified. */<br />
if (argc < 2) {<br />
port = DEFAULT_PORT;<br />
}<br />
else {<br />
port = atoi(argv[1]);<br />
}<br />
/********************************************************************/<br />
/* Initialize the server environment. */<br />
/********************************************************************/<br />
/* Initialize for environment variables. */<br />
Qp0zInitEnv();<br />
/* Change to default directory. */<br />
chdir(server_dir);<br />
/* Initialize the server's profile handle. */<br />
QSYGETPH(server_profile, no_pwd, server_ph, &error);<br />
if (error.Bytes_Available != 0) {<br />
LogError(“Could not get profile handle for server, ”<br />
“QSYGETPH() failed with exception %7.7s\n”,<br />
error.Exception_Id);<br />
exit(1);<br />
}<br />
/********************************************************************/<br />
/* Set up the listening socket. */<br />
/********************************************************************/<br />
/* Create a socket. */<br />
if ((sfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) < 0) {<br />
LogError(“socket() failed, errno=%d\n”, errno);<br />
exit(1);<br />
}<br />
#pragma cancel_handler(CleanupHandler, sfd)<br />
#pragma exception_handler(Cleanup, ca, _C1_ALL, _C2_ALL)<br />
/* Allow re-use of this socket address. */<br />
if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *)&on,<br />
sizeof(int)) != 0) {<br />
LogError(“setsockopt() failed, errno=%d\n”, errno);<br />
exit(1);<br />
}<br />
/* Bind to a port. */<br />
memset(&my_addr, '\0', sizeof(my_addr));<br />
my_addr.sin_family = AF_INET;<br />
my_addr.sin_port = port;<br />
my_addr.sin_addr.s_addr = INADDR_ANY;<br />
if (bind(sfd, (struct sockaddr *)&my_addr, sizeof(my_addr)) != 0) {<br />
LogError(“bind() failed for port %d, errno=%d\n”, port, errno);<br />
close(sfd);<br />
exit(1);<br />
}<br />
/* Make this a listening socket. */<br />
if (listen(sfd, 10) != 0) {<br />
LogError(“listen() failed, errno=%d\n”, errno);<br />
close(sfd);<br />
exit(1);<br />
}<br />
/********************************************************************/<br />
/* Accept connections from clients. */<br />
/********************************************************************/<br />
Chapter 6. Remote client examples 121