29.06.2013 Views

Qshell Interpreter (qsh) - FTP Directory Listing - IBM

Qshell Interpreter (qsh) - FTP Directory Listing - IBM

Qshell Interpreter (qsh) - FTP Directory Listing - IBM

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!