× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Another lp5250d patch
  • From: Scott Klement <klemscot@xxxxxxxxxxxx>
  • Date: Thu, 21 Dec 2000 11:11:45 -0600 (CST)


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 thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.