[12735] in Athena Bugs

home help back first fref pref prev next nref lref last post

bugfixes for xolc

daemon@ATHENA.MIT.EDU (Anne)
Fri Oct 14 00:03:04 1994

To: bugs@MIT.EDU
Date: Fri, 14 Oct 1994 00:02:51 EDT
From: Anne <annied@MIT.EDU>

These are the bugfixes I made to address the following prblems in xolc:

the MuSetEmacsBindings problem
lack of line-wrapping for questions (ticket #596)
output to stdout on suns (ticket #597)
the replay buffer not being updated when the user sends a message (#597)

the version i compiled does not have any of the other bugs complained about
since the new release.  However, it does not compile on RSAIX yet.  I have
some minor changes to Make and Config files if they are needed to compile
on other platforms (I used X11r5 and Motif1.2--this requires some
updating).  here is the code changes:

*** procs.c	Mon Aug  1 15:48:57 1994
--- /source/athena/athena.bin/olc/clients/motif/procs.c	Fri Apr 30 17:23:41 1993
***************
*** 26,51 ****
  #include <sys/param.h>
  #include <sys/stat.h>
  #include <sys/wait.h>
- /* added the following two lines for open() arguments */
- #include <fcntl.h>
- #include <limits.h>
  
  #include <Xm/List.h>
  #include <Xm/Text.h>
  #include <Xm/ScrollBar.h>
  #include <Xm/SelectioB.h>
! /*
  #include <nl_requests.h>
! */
  #include "xolc.h"
  #include "data.h"
  #include "buttons.h"
- #include <errno.h>  
  
! #ifdef SOLARIS 
  #define _POSIX_SOURCE
  #endif
- 
  char current_topic[TOPIC_SIZE] = "unknown";
  int sa_pid = 0;
  
--- 26,46 ----
  #include <sys/param.h>
  #include <sys/stat.h>
  #include <sys/wait.h>
  
  #include <Xm/List.h>
  #include <Xm/Text.h>
  #include <Xm/ScrollBar.h>
  #include <Xm/SelectioB.h>
! 
  #include <nl_requests.h>
! 
  #include "xolc.h"
  #include "data.h"
  #include "buttons.h"
  
! #ifdef SOLARIS
  #define _POSIX_SOURCE
  #endif
  char current_topic[TOPIC_SIZE] = "unknown";
  int sa_pid = 0;
  
***************
*** 76,87 ****
   *
   */
  
- /*
-  * reaper:
-  * when the xbrowser child process ends, set the "Browser stock answers"
-  * button sensitive once again.
-  */ 
-    
  #ifdef VOID_SIGRET
  static void
  #else
--- 71,76 ----
***************
*** 119,130 ****
  #endif
  }
  
- /*
-  * view_ready:
-  * changes the cursor from the wait cursor to the standard cursor.
-  * signalled from xbrowser when it is up and running.
-  */
- 
  #ifdef VOID_SIGRET
  static void
  #else
--- 108,113 ----
***************
*** 141,153 ****
  #endif
  }  
  
! /*
!  * Called when the user presses the "Ask new question" button on the
!  * xolc form.  Maps the new question form and gets a list if the topics
!  * (calls x_list_topics).
!  */
!    
! void olc_new_ques (w, tag, callback_data)
       Widget w;
       caddr_t *tag;
       XmAnyCallbackStruct *callback_data;
--- 124,131 ----
  #endif
  }  
  
! void
! olc_new_ques (w, tag, callback_data)
       Widget w;
       caddr_t *tag;
       XmAnyCallbackStruct *callback_data;
***************
*** 155,161 ****
    REQUEST Request;
    char file[MAXPATHLEN];
    ERRCODE status;
!   
    if (fill_request(&Request) != SUCCESS)
      {
        MuError("olc_new_ques: unable to fill request struct");
--- 133,139 ----
    REQUEST Request;
    char file[MAXPATHLEN];
    ERRCODE status;
! 
    if (fill_request(&Request) != SUCCESS)
      {
        MuError("olc_new_ques: unable to fill request struct");
***************
*** 184,193 ****
  #endif
  }
  
- /*
-  * Clears the new question form text entry area.
-  * Called when the user presses 'Clear question'
-  */
  
  void
  olc_clear_newq (w, tag, callback_data)
--- 162,167 ----
***************
*** 198,213 ****
    XmTextSetString(w_newq_scrl, "");
  }
  
- /*
-  * Attempts to send the question typed into the new question form, inserting
-  * newlines every 80 characters when necessary.
-  * If there is an error, notify the user via dialog box.  Also updates
-  * the replay box to include the new question.
-  *
-  * Called when the Enter this question in OLC button is pressed in the new
-  * question form.
-  */
- 
  void
  olc_send_newq (w, tag, callback_data)
       Widget w;
--- 172,177 ----
***************
*** 250,256 ****
        return;
      }
  
-   lbreak(q_text, BREAKLEN);
    if (x_ask(&Request, current_topic, q_text) != SUCCESS)
      {
  #ifdef ATHENA
--- 214,219 ----
***************
*** 274,284 ****
  #endif
  }
  
- /*
-  * Called when the user selects a line corresponding to a topic for a
-  * question.  Alerts the user if it is not a valid topic, else selects this
-  * topic and highlights the text entry area of the form.
-  */
  
  void
  olc_topic_select (w, tag, callback_data)
--- 237,242 ----
***************
*** 302,313 ****
      }
  }
  
- /*
-  * olc_cont_ques:
-  * Called when the 'Continue your question' button is pressed.
-  * Maps the continue question form.
-  */
- 
  void
  olc_cont_ques (w, tag, callback_data)
       Widget w;
--- 260,265 ----
***************
*** 327,338 ****
  #endif
  }
  
- /*
-  * olc_status:
-  * Finds out to whom the user is connected.
-  * Notifies the user of an error.
-  */
- 
  void
  olc_status()
  {
--- 279,284 ----
***************
*** 376,405 ****
    }
  }
  
- /*
-  * olc_replay:
-  * lists the conversation between the user and the consultant.  scrolls to
-  * the bottom so the user can see the most recent correspondence.
-  * Notifies the user of any error.
-  *
-  * NOTE:  this code used to use a different port than tty based olc uses
-  * to replay conversation.  I changed it to use the same port for
-  * consistency, and so it would also work on the test server.
-  */
- 
  void
  olc_replay()
  {
-   /** for other port code
    static char *log;
!   static int loglen = 0; **/
  
-   static init = 0; 
-   char *buf;
- #ifdef SOLARIS
-   char file[30];
- #endif
-   
    REQUEST Request;
    ERRCODE status;
    int fd;
--- 322,334 ----
    }
  }
  
  void
  olc_replay()
  {
    static char *log;
!   static int loglen = 0;
!   static init = 0;
  
    REQUEST Request;
    ERRCODE status;
    int fd;
***************
*** 408,433 ****
    Widget sb,w;
    int sb_value, sb_slider_size, sb_inc, sb_pinc, sb_max;
  
!   /* Mark message as read */
  
    WAIT_CURSOR;
!   if(fill_request(&Request) != SUCCESS) {
!     STANDARD_CURSOR;
      return;
!   }
!   
! #ifdef SOLARIS           /* suns don't like writing to /dev/null?? */
!   make_temp_name(file);
!   status = OShowMessageIntoFile(&Request,file);
!   unlink(file);
! #else
    status = OShowMessageIntoFile(&Request,"/dev/null");
- #endif
  
!   /***************
!    * the original code that uses the other port:
!    *
!      if (open_connection_to_nl_daemon(&fd) != SUCCESS) {
      MuError("Could not contact OLC Daemon\n");
      return;
    }
--- 337,351 ----
    Widget sb,w;
    int sb_value, sb_slider_size, sb_inc, sb_pinc, sb_max;
  
! /* Mark message as read */
  
    WAIT_CURSOR;
!   if(fill_request(&Request) != SUCCESS)
      return;
! 
    status = OShowMessageIntoFile(&Request,"/dev/null");
  
!   if (open_connection_to_nl_daemon(&fd) != SUCCESS) {
      MuError("Could not contact OLC Daemon\n");
      return;
    }
***************
*** 436,479 ****
      switch (status) {
      case ERR_NO_SUCH_Q:
        XmTextSetString(w_replay_scrl,
!                     "No question, and therefore, no log to display.");
        break;
      case ERR_NO_ACL:
        XmTextSetString(w_replay_scrl,
!                       "Sorry, charlie, but you're not on the acl.\n");
        break;
      default:
!     /** need to do some set_com_err_hook stuff here **
!       com_err("olc_replay", status, "received while retrieving log to replay");    }
      return;
    }
  
    XmTextSetString(w_replay_scrl, log);
!   *
!   **************/
!   
!   status = OReplayToBuf(&Request, &buf);
!   if(status) {
!     switch(status) {
!     case NOT_CONNECTED:
!       XmTextSetString(w_replay_scrl,
! 		      "No question, and therefore, no log to display.");
!       break;
!     case PERMISSION_DENIED:
!       XmTextSetString(w_replay_scrl,
! 		      "You have insufficient permission.");
!       break;
!     default:
!       /** need to do some set_com_err_hook stuff here **/
!       com_err("olc_replay", status,
! 	      "received while retrieving log to replay");
!     }
!     STANDARD_CURSOR;
!     return;
!   }
!   
!   XmTextSetString(w_replay_scrl, buf);
!   
  /* Scroll down to end of the log */
    if (init == 0)
      init = 1;
--- 354,374 ----
      switch (status) {
      case ERR_NO_SUCH_Q:
        XmTextSetString(w_replay_scrl,
! 		    "No question, and therefore, no log to display.");
        break;
      case ERR_NO_ACL:
        XmTextSetString(w_replay_scrl,
! 		      "Sorry, charlie, but you're not on the acl.\n");
        break;
      default:
!     /** need to do some set_com_err_hook stuff here **/
!       com_err("olc_replay", status, "received while retrieving log to replay");
!     }
      return;
    }
  
    XmTextSetString(w_replay_scrl, log);
! 
  /* Scroll down to end of the log */
    if (init == 0)
      init = 1;
***************
*** 494,505 ****
    STANDARD_CURSOR;
  }
  
- /*
-  * olc_done:
-  * Called when the user presses the 'Done' button in the window.
-  * Asks the user if she is really done, and the marks her question as done.
-  */
- 
  void
  olc_done (w, tag, callback_data)
       Widget w;
--- 389,394 ----
***************
*** 511,529 ****
    WAIT_CURSOR;
    if (fill_request(&Request) != SUCCESS) {
      MuError("done: Unable to fill request struct.");
-     STANDARD_CURSOR;
      return;
    }
  
    x_done(&Request);
    STANDARD_CURSOR;
- }
  
! /*
!  * olc_cancel:
!  * Pops up 'are you sure?' dialog box, and then cancels the user's question.
!  */
! 
  void
  olc_cancel (w, tag, callback_data)
       Widget w;
--- 400,413 ----
    WAIT_CURSOR;
    if (fill_request(&Request) != SUCCESS) {
      MuError("done: Unable to fill request struct.");
      return;
    }
  
    x_done(&Request);
    STANDARD_CURSOR;
  
! }
!   
  void
  olc_cancel (w, tag, callback_data)
       Widget w;
***************
*** 543,557 ****
    }
    STANDARD_CURSOR;
  }
! 
! /*
!  * olc_savelog:
!  * -insensitizes the save button
!  * -makes the selection in the save dialog box
!  *  usershomedir/OLC.log
!  * -maps the save dialog box
!  */
! 
  void
  olc_savelog (w, tag, callback_data)
       Widget w;
--- 427,433 ----
    }
    STANDARD_CURSOR;
  }
!   
  void
  olc_savelog (w, tag, callback_data)
       Widget w;
***************
*** 577,591 ****
  #endif
  }
  
- /*
-  * save_cbk:
-  * called when user presses a button in the save dialog.
-  * If user presses cancel, return.  If user presses OK, writes log to
-  * file in the selection box's text field.  Notifies user if error.
-  *
-  * NOTE: this code also used to use the other port (see olc_replay)
-  */
- 
  void
  save_cbk (w, tag, callback_data)
       Widget w;
--- 453,458 ----
***************
*** 600,607 ****
    char buf[BUFSIZ];
    char *log;
    int loglen, actlen;
!   REQUEST Request;
!   
    XtSetArg(A[0],XmNsensitive, TRUE);
    XtSetValues(w_savelog_btn,A,1);
    XtUnmanageChild(w_save_dlg);
--- 467,473 ----
    char buf[BUFSIZ];
    char *log;
    int loglen, actlen;
! 
    XtSetArg(A[0],XmNsensitive, TRUE);
    XtSetValues(w_savelog_btn,A,1);
    XtUnmanageChild(w_save_dlg);
***************
*** 613,623 ****
      WAIT_CURSOR;
      filename = XmTextGetString(XmSelectionBoxGetChild(w_save_dlg,
  						      XmDIALOG_TEXT));
! 
!     /**********************
!      * original code that uses other port (2052)
!      *
!         if ((out_fd = open(filename,O_WRONLY|O_CREAT|O_TRUNC,0600)) < 0) {
        sprintf(buf,"Error opening %s: %s", filename, sys_errlist[errno]);
        MuError(buf);
        XtFree(filename);
--- 479,485 ----
      WAIT_CURSOR;
      filename = XmTextGetString(XmSelectionBoxGetChild(w_save_dlg,
  						      XmDIALOG_TEXT));
!     if ((out_fd = open(filename,O_WRONLY|O_CREAT|O_TRUNC,0600)) < 0) {
        sprintf(buf,"Error opening %s: %s", filename, sys_errlist[errno]);
        MuError(buf);
        XtFree(filename);
***************
*** 631,700 ****
      }
      log = NULL;
      loglen = 0;
! 
      status = nl_get_log(fd,&log,&loglen,User.username,User.instance,&actlen);
      if (status) {
        switch (status) {
        case ERR_NO_SUCH_Q:
-         XmTextSetString(w_replay_scrl,
-                         "No question, and therefore, no log to display.");
-         break;
-       case ERR_NO_ACL:
-         XmTextSetString(w_replay_scrl,
-                         "Sorry, charlie, but you're not on the acl.\n");
-         break;
-       default:
-         com_err("olc_replay", status,"received while retrieving log to save");
-       }
-     }
-     write(out_fd,log,loglen);
-     close(out_fd);
-     *
-     ****************/
-     
-     if(fill_request(&Request) != SUCCESS) {
-       STANDARD_CURSOR;
-       return;
-     }
- 
-     /* open and close file to make sure it is writable */
-     if((fd = open(filename, O_WRONLY | O_CREAT, 0600)) < 0) {
-       sprintf(buf,"Error opening %s: %s", filename, sys_errlist[errno]);
-       MuError(buf);
-       unlink(filename);
-       STANDARD_CURSOR; return;
-     }
-     unlink(filename);
-     
-     status = OReplayLog(&Request, filename);
-     XtFree(filename);
-     
-     if(status) {
-       switch(status) {
-       case NOT_CONNECTED:
  	XmTextSetString(w_replay_scrl,
  			"No question, and therefore, no log to display.");
  	break;
!       case PERMISSION_DENIED:
  	XmTextSetString(w_replay_scrl,
! 			"You have insufficient permission.");
  	break;
        default:
!         com_err("olc_replay", status,"received while retrieving log to save");
        }
      }
    }
-   STANDARD_CURSOR;
    return;
  }
  
- /*
-  * olc_stock:
-  * Called when 'Browse stock answers' button is pressed.  Insensitizes
-  * this button, and forx off an xbrowser process.
-  */
- 
- /* #undef _POSIX_SOURCE */
  void
  olc_stock (w, tag, callback_data)
       Widget w;
--- 493,521 ----
      }
      log = NULL;
      loglen = 0;
!     
      status = nl_get_log(fd,&log,&loglen,User.username,User.instance,&actlen);
      if (status) {
        switch (status) {
        case ERR_NO_SUCH_Q:
  	XmTextSetString(w_replay_scrl,
  			"No question, and therefore, no log to display.");
  	break;
!       case ERR_NO_ACL:
  	XmTextSetString(w_replay_scrl,
! 			"Sorry, charlie, but you're not on the acl.\n");
  	break;
        default:
! 	com_err("olc_replay", status,"received while retrieving log to save");
        }
      }
+     write(out_fd,log,loglen);
+     close(out_fd);
+     STANDARD_CURSOR;
    }
    return;
  }
  
  void
  olc_stock (w, tag, callback_data)
       Widget w;
***************
*** 703,711 ****
  {
    Arg args[1];
    char pidascii[7];
! /* #ifdef _POSIX_SOURCE
    struct sigaction action;
! #endif */
  
    WAIT_CURSOR;
    XtSetArg(args[0],XmNsensitive,FALSE);
--- 524,532 ----
  {
    Arg args[1];
    char pidascii[7];
! #ifdef _POSIX_SOURCE
    struct sigaction action;
! #endif
  
    WAIT_CURSOR;
    XtSetArg(args[0],XmNsensitive,FALSE);
***************
*** 718,724 ****
    if ((sa_pid = vfork()) == -1) {
  #endif
      MuError("Error in vfork; cannot start stock answer browser");
-     STANDARD_CURSOR;
      return;
    }
    if (sa_pid == 0) {
--- 539,544 ----
***************
*** 728,734 ****
        _exit(1);
      }
    }
! /*#ifdef _POSIX_SOURCE
    action.sa_flags = 0;
    sigemptyset(&action.sa_mask);
  
--- 548,554 ----
        _exit(1);
      }
    }
! #ifdef _POSIX_SOURCE
    action.sa_flags = 0;
    sigemptyset(&action.sa_mask);
  
***************
*** 737,756 ****
    
    action.sa_handler = view_ready;
    sigaction(SIGUSR1, &action, NULL);
! #else */
    signal(SIGCHLD,reaper);
!   signal(SIGUSR1,view_ready); /*
! #endif */
  
  #ifdef LOG_USAGE
    log_view("browser_start");
  #endif
  }
- 
-   /*
-    * olc_motd:
-    * Gets the olc message of the day and displays it in the motd dialog.
-    */
    
  void
  olc_motd (w, tag, callback_data)
--- 557,571 ----
    
    action.sa_handler = view_ready;
    sigaction(SIGUSR1, &action, NULL);
! #else
    signal(SIGCHLD,reaper);
!   signal(SIGUSR1,view_ready);
! #endif
  
  #ifdef LOG_USAGE
    log_view("browser_start");
  #endif
  }
    
  void
  olc_motd (w, tag, callback_data)
***************
*** 769,775 ****
    WAIT_CURSOR;
    if (fill_request(&Request) != SUCCESS) {
      MuError("olc_motd: unable to fill request struct");
-     STANDARD_CURSOR;
      return;
    }
    make_temp_name(file);
--- 584,589 ----
***************
*** 792,803 ****
    STANDARD_CURSOR;
  }
  
- /*
-  * olc_update:
-  * updates the information in the window:  updates the status, and replays
-  * the conversation.
-  */
- 
  void
  olc_update (w, tag, callback_data)
       Widget w;
--- 606,611 ----
***************
*** 810,822 ****
    olc_replay();
    STANDARD_CURSOR;
  }
! 
! /*
!  * olc_help:
!  * Gets the help message appropriate to the user's status, and displays it
!  * in the help dialog.
!  */
! 
  void
  olc_help (w, tag, callback_data)
       Widget w;
--- 618,624 ----
    olc_replay();
    STANDARD_CURSOR;
  }
!   
  void
  olc_help (w, tag, callback_data)
       Widget w;
***************
*** 892,903 ****
    STANDARD_CURSOR;
  }
  
- /*
-  * olc_quit:
-  * Pops up the dumb dialog box and quits if the user really is sure that she
-  * wants to quit.
-  */
- 
  void
  olc_quit (w, tag, callback_data)
       Widget w;
--- 694,699 ----
***************
*** 915,925 ****
      }
  }
  
- /*
-  * dlg_ok:
-  * called when the user presses the ok button in the motd or help dialogs.
-  * Sensitizes the appropriate button.
-  */
  
  void
  dlg_ok (w, tag, callback_data)
--- 711,716 ----
***************
*** 942,953 ****
      }
  }
  
- /*
-  * olc_send:
-  * Insensitizes the send button, manages the send form, and gives it
-  * keyboard focus.
-  */
- 
  void
  olc_send (w, tag, callback_data)
       Widget w;
--- 733,738 ----
***************
*** 958,969 ****
    XtManageChild(w_send_form);
    _XmGrabTheFocus(w_send_scrl, NULL);
  }
! 
! /*
!  * olc_clear_msg:
!  * clears the text in the send window.
!  */
! 
  void
  olc_clear_msg (w, tag, callback_data)
       Widget w;
--- 743,749 ----
    XtManageChild(w_send_form);
    _XmGrabTheFocus(w_send_scrl, NULL);
  }
!   
  void
  olc_clear_msg (w, tag, callback_data)
       Widget w;
***************
*** 973,984 ****
    XmTextSetString(w_send_scrl, "");
  }
  
- /*
-  * olc_send_msg:
-  * Attempts to send the message in the send message dialog, adding linebreaks
-  * every 80 characters when necessary.
-  */
- 
  void
  olc_send_msg (w, tag, callback_data)
       Widget w;
--- 753,758 ----
***************
*** 996,1014 ****
      return;
    }
  
!   status = x_reply(&Request, lbreak(XmTextGetString(w_send_scrl), BREAKLEN));
    STANDARD_CURSOR;
  
!   if (status == SUCCESS) {
!     XmTextSetString(w_send_scrl, "");
!     olc_replay();
!   }
  }
- 
- /*
-  * olc_close_msg:
-  * unmanages the send form, sensitizes the send button.
-  */
  
  void
  olc_close_msg (w, tag, callback_data)
--- 770,781 ----
      return;
    }
  
!   status = x_reply(&Request, XmTextGetString(w_send_scrl));
    STANDARD_CURSOR;
  
!   if (status == SUCCESS)
!     XmTextSetString(w_send_scrl, "");   
  }
  
  void
  olc_close_msg (w, tag, callback_data)


*** visual.c	Tue Jun 28 17:05:37 1994
--- /source/athena/athena.bin/olc/clients/motif/visual.c	Thu Jun 11 13:12:35 1992
***************
*** 32,40 ****
  #include "buttons.h"
  #include "xolc.h"
  
- #ifndef SOLARIS            /* suns won't read the bitmap files. */
  #include "xolc.xbm"
- #endif
  
  Widget				/* Widget ID's */
    xolc,
--- 32,38 ----
***************
*** 156,163 ****
  
    XtSetArg(args[0], XtNiconPixmap, &icon_pixmap);
    XtGetValues(xolc,args,1);
- 
- #ifndef SOLARIS  /* see above.  isn't this stupid?  */
    if (icon_pixmap == None) {
      XtSetArg(args[0], XtNiconPixmap,
               XCreateBitmapFromData(XtDisplay(xolc),
--- 108,113 ----
***************
*** 165,172 ****
                                     xolc_bits, xolc_width, xolc_height));
      XtSetValues (xolc, args, 1);
    }
- #endif
  
    w = main_form = XmCreateForm(xolc, "main", NULL, 0);
  
  /*  Buttons along the top row:  [new_ques, cont_ques], stock, quit, help  */
--- 115,122 ----
                                     xolc_bits, xolc_width, xolc_height));
      XtSetValues (xolc, args, 1);
    }
  
+ 
    w = main_form = XmCreateForm(xolc, "main", NULL, 0);
  
  /*  Buttons along the top row:  [new_ques, cont_ques], stock, quit, help  */
***************
*** 392,402 ****
    XtAddCallback(w, XmNokCallback, save_cbk, 0);
    XtAddCallback(w, XmNcancelCallback, save_cbk, 0);
    XtDestroyWidget(XmSelectionBoxGetChild(w, XmDIALOG_HELP_BUTTON));
!   
!   /* this line causes the warning
!      MuSetEmacsBindings called on non-text widget
!      MuSetEmacsBindings(XmSelectionBoxGetChild(w, XmDIALOG_TEXT));*/
!   
    w = w_help_dlg = XmCreateInformationDialog(main_form, "help_dlg", NULL, 0);
    XtAddCallback(w, XmNokCallback, dlg_ok, HELP_BTN);
    XtDestroyWidget(XmMessageBoxGetChild(w, XmDIALOG_CANCEL_BUTTON));
--- 342,349 ----
    XtAddCallback(w, XmNokCallback, save_cbk, 0);
    XtAddCallback(w, XmNcancelCallback, save_cbk, 0);
    XtDestroyWidget(XmSelectionBoxGetChild(w, XmDIALOG_HELP_BUTTON));
!   MuSetEmacsBindings(XmSelectionBoxGetChild(w, XmDIALOG_TEXT));
! 
    w = w_help_dlg = XmCreateInformationDialog(main_form, "help_dlg", NULL, 0);
    XtAddCallback(w, XmNokCallback, dlg_ok, HELP_BTN);
    XtDestroyWidget(XmMessageBoxGetChild(w, XmDIALOG_CANCEL_BUTTON));
*** x_utils.c	Mon Aug  1 16:08:35 1994
--- /source/athena/athena.bin/olc/clients/motif/x_utils.c	Mon Apr 27 13:25:23 1992
***************
*** 31,42 ****
  
  #include "xolc.h"
  
- /*
-  * handle_response:
-  * Displays an error message appropriate to response.  Returns a code
-  * indicating if there was an error or if any action was taken.
-  */
-  
  ERRCODE
  handle_response(response, req)
       int response;
--- 31,36 ----
***************
*** 215,241 ****
      return(FAILURE);
    else
      return(ERROR);
- }
- 
- /*
-  *  lbreak replaces space-like characters in text by newlines so that no line
-  *  is more than beak characters long.  Also returns text.  If there is no
-  *  space on a line, no newlines are inserted in it.
-  */
- 
- char *lbreak(char text[], int beak) {
-   int len = strlen(text);
-   int runt, cunt = 0;
- 
-   while((len-cunt)>beak) {
-     runt = cunt + beak;
-     
-     while (!isspace(text[runt]) && runt > cunt) runt--;
-     cunt = ((runt == cunt) ? runt + beak : runt);
-     if (cunt==runt) text[cunt] = '\n';
-   }
-   return(text);
  }
--- 209,212 ----
*** xolc.h	Thu Jun 16 20:54:24 1994
--- /source/athena/athena.bin/olc/clients/motif/xolc.h	Thu Apr 23 18:02:48 1992
***************
*** 178,184 ****
  /* x_utils.c */
  ERRCODE handle_response P_((int response, REQUEST *req));
  int popup_option P_((char *message));
- char *lbreak P_((char text[], int beak));
  
  #undef P_
- 
--- 178,182 ----
*** messages.c	Fri Jun 24 12:08:38 1994
--- /source/athena/athena.bin/olc/clients/lib/messages.c	Fri Apr 19 02:18:07 1991
***************
*** 40,55 ****
    return(OGetMessage(Request,file,(char **) NULL,OLC_REPLAY));
  }
  
- /* this function is exactly like OReplayLog except instead of replaying
-    the log to a file, it replays it to a buffer.  (used in olc_replay())*/
- 
- ERRCODE
- OReplayToBuf(Request, buf)
-      REQUEST *Request;
-      char **buf;
- {
-   return(OGetMessage(Request, NULL, buf, OLC_REPLAY));
- }
  
  ERRCODE
  OShowMessageIntoFile(Request,file)
--- 40,45 ----

home help back first fref pref prev next nref lref last post