|
This patch adds "config-file" style support for lp5250d. It has already been applied to the development sources, but should also be applied to 0.16.1 The reason for this is that in the old lp5250d.c, you can segfault it when printing begins by giving it too long of an argument for the -P option, or -t option, etc. This was fixed with the newer "config-file" support. IMHO, lp5250d's options should be consistent with tn5250's anyway. Please apply this to the 0.16.x branch... thanx --- lp5250d.c.orig Wed Dec 6 13:39:23 2000 +++ lp5250d.c Wed Dec 20 17:29:58 2000 @@ -41,122 +41,107 @@ Tn5250PrintSession *printsess = NULL; Tn5250Stream *stream = NULL; - -char remotehost[20]; -char sessionname[20]; -char transformname[20]; -char outputcommand[30]; -char *mapname = "37"; -char logname[20] = ""; +Tn5250Config *config = NULL; int main(int argc, char *argv[]) { - - if (parse_options(argc, argv) < 0) - syntax(); + config = tn5250_config_new (); + if (tn5250_config_load_default (config) == -1) { + tn5250_config_unref(config); + exit (1); + } + if (tn5250_config_parse_argv (config, argc, argv) == -1) { + tn5250_config_unref(config); + syntax(); + } + + if (tn5250_config_get (config, "help")) + syntax(); + else if (tn5250_config_get (config, "version")) { + printf ("tn5250 version %s\n", version_string); + exit (0); + } + else if (!tn5250_config_get (config, "host")) + syntax(); + if (tn5250_daemon(0,0,0) < 0) { perror("tn5250_daemon"); exit(2); - } + } #ifndef NDEBUG - if(strlen(logname) > 0) { - tn5250_log_open(logname); + if(tn5250_config_get (config, "trace")) { + tn5250_log_open(tn5250_config_get (config, "trace")); TN5250_LOG(("lp5250d version %s, built on %s\n", version_string, __DATE__)); + TN5250_LOG(("host = %s\n", tn5250_config_get (config, "host"))); } #endif openlog("lp5250d", LOG_PID, LOG_DAEMON); - stream = tn5250_stream_open (remotehost); + + stream = tn5250_stream_open (tn5250_config_get(config, "host")); if(stream == NULL) { - syslog(LOG_INFO, "Couldn't connect to %s", remotehost); + syslog(LOG_INFO, "Couldn't connect to %s", + tn5250_config_get (config,"host")); + exit(1); + } + if (tn5250_stream_config (stream, config) == -1) { + syslog(LOG_INFO, "Couldn't connect config to stream?!"); exit(1); } printsess = tn5250_print_session_new(); tn5250_stream_setenv(stream, "TERM", "IBM-3812-1"); - tn5250_stream_setenv(stream, "DEVNAME", sessionname); +/* tn5250_stream_setenv(stream, "DEVNAME", sessionname); */ tn5250_stream_setenv(stream, "IBMFONT", "12"); - syslog(LOG_INFO, "DEVNAME = %s", sessionname); - if (strlen(transformname) > 0) { - syslog(LOG_INFO, "TRANSFORM = %s", transformname); + syslog(LOG_INFO, "DEVNAME = %s", tn5250_stream_getenv(stream, "DEVNAME")); + if (tn5250_stream_getenv(stream, "IBMMFRTYPMDL")) { + syslog(LOG_INFO, "TRANSFORM = %s", + tn5250_stream_getenv(stream, "IBMMFRTYPMDL")); tn5250_stream_setenv(stream, "IBMTRANSFORM", "1"); - tn5250_stream_setenv(stream, "IBMMFRTYPMDL", transformname); } else tn5250_stream_setenv(stream, "IBMTRANSFORM", "0"); tn5250_print_session_set_fd(printsess, tn5250_stream_socket_handle(stream)); tn5250_print_session_set_stream(printsess, stream); - tn5250_print_session_set_char_map(printsess, mapname); - tn5250_print_session_set_output_command(printsess, outputcommand); + if (tn5250_config_get (config, "map")) { + tn5250_print_session_set_char_map(printsess, + tn5250_config_get (config, "map")); + } else { + tn5250_print_session_set_char_map(printsess, "37"); + } + if (tn5250_config_get (config, "outputcommand")) + tn5250_print_session_set_output_command(printsess, + tn5250_config_get (config, "outputcommand")); + else + tn5250_print_session_set_output_command(printsess, + "scs2ascii|lpr"); + tn5250_print_session_main_loop(printsess); tn5250_print_session_destroy(printsess); tn5250_stream_destroy (stream); + if (config!=NULL) + tn5250_config_unref (config); #ifndef NDEBUG tn5250_log_close(); #endif return 0; } -static int parse_options(int argc, char *argv[]) -{ - int arg; - - while ((arg = getopt(argc, argv, "t:m:s:T:P:Vwy:")) != EOF) { - switch (arg) { -#ifndef NDEBUG - case 't': - strcpy(logname,optarg); - break; -#endif - case 'm': - mapname = optarg; - break; - - case 'P': - strcpy(outputcommand,optarg); - break; - - case 's': - strcpy(sessionname,optarg); - break; - - case 'T': - strcpy(transformname,optarg); - break; - - case 'V': - printf("tn5250 version %s\n\n", version_string); - exit(0); - break; - - case ':': - return -1; - } - } - - if (optind >= argc) - return -1; - strcpy(remotehost,argv[optind++]); - if (optind != argc) - return -1; - return 0; -} - static void syntax() { printf("Usage: lp5250d [options] host[:port]\n" "Options:\n" - "\t-t name specify FULL path to log file\n" - "\t-m map specify translation map\n" - "\t-s name specify session name\n" - "\t-T name specify host print transform\n" - "\t-P cmd specify the print output command\n" - "\t-V display version\n"); + "\ttrace=FILE specify FULL path to log file\n" + "\tmap=NAME specify translation map\n" + "\tenv.DEVNAME=NAME specify session name\n" + "\tenv.IBMMFRTYPMDL=NAME specify host print transform name\n" + "\toutputcommand=CMD specify the print output command\n" + "\t+/-version display version\n"); exit (255); } +--- | This is the LINUX5250 Mailing List! | To submit a new message, send your mail to LINUX5250@midrange.com. | To subscribe to this list send email to LINUX5250-SUB@midrange.com. | To unsubscribe from this list send email to LINUX5250-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.