home *** CD-ROM | disk | FTP | other *** search
- #include <stdlib.h>
- #include <stdio.h>
-
- #include "prtrans.h"
-
- #if !defined(__MAIN_C__)
- #define main main_prsample
- #endif
-
- #ifndef DEFAULT_BUFFER_SIZE
- #define DEFAULT_BUFFER_SIZE 65536
- #endif
-
- int main (int argc, char **argv);
-
- int main (int argc, char **argv) {
- FILE *file;
- unsigned long length, buffer_size = DEFAULT_BUFFER_SIZE;
- char **parameters = argv;
- char *buffer;
- baseaddr = portaddr[DEFAULT_PORT];
-
- while (*++parameters && **parameters == '-') { /* check for options */
- if (parameters[0][1] == '-') { /* "--" ends options */
- parameters++;
- break;
- }
-
- switch (parameters[0][1]) {
- case 'p':
- baseaddr = strtoul (*++parameters, NULL, 16);
-
- if (baseaddr > 3) {
- fprintf (stderr, "%s: The printer port number must be between 0 and 3.\n",
- *argv);
- return 1;
- }
-
- baseaddr = portaddr[baseaddr];
- break;
-
- case 'b':
- buffer_size = strtoul (*++parameters, NULL, 10);
- break;
-
- case '?':
- case 'h':
- Usage:
- fprintf (stderr, "%s: Plays samples on the remote computer.\n\n", *argv);
- fprintf (stderr, "Usage: %s [options] [filename(s)]\n",
- *argv);
- fprintf (stderr, "Options:\n\t"
- "-p port\t"
- "Specify the printer port (0 to 3)\nt"
- "-b buffersize\t"
- "Specify the sample buffer size in bytes.\n");
- return 1;
-
- default:
- fprintf (stderr, "%s: Illegal option `%s'.\n", *argv, *parameters);
- goto Usage;
- }
- }
-
- if (!(buffer = malloc (buffer_size))) {
- fprintf (stderr, "%s: Could not allocate the sample buffer.\n", *argv);
- return 3;
- }
-
- if (prinit ()) {
- fprintf (stderr, "%s: Could not get the I/O permissions.\n", *argv);
- return 4;
- }
-
- if (!*parameters) { /* no file name specified */
- file = stdin;
- goto transfer;
- }
-
- while (*parameters) {
- if (!(file = fopen(*parameters, "rb"))) {
- fprintf (stderr, "%s: Could not open the file `%s'.\n", *argv,
- *parameters);
- return 5;
- }
-
- transfer:
- while (!feof (file)) {
- length = fread (buffer, 1, buffer_size, file);
- send (buffer, length);
- }
-
- fclose (file);
-
- if (*parameters) parameters++;
- }
-
- prclose ();
-
- return 0;
- }
-