Diff for /freem/src/xecline.c between versions 1.7 and 1.12

version 1.7, 2025/03/22 22:52:24 version 1.12, 2025/04/09 19:52:02
Line 24 Line 24
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.   *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *   *
  *   $Log$   *   $Log$
    *   Revision 1.12  2025/04/09 19:52:02  snw
    *   Eliminate as many warnings as possible while building with -Wall
    *
    *   Revision 1.11  2025/04/02 03:02:42  snw
    *   Stop requiring users to pass -e to fmadm when -u or -g are passed
    *
    *   Revision 1.10  2025/03/27 03:27:35  snw
    *   Install init scripts to share/freem/examples/init and fix regression in method dispatch
    *
    *   Revision 1.9  2025/03/24 04:13:12  snw
    *   Replace action macro dat with fra_dat to avoid symbol conflict on OS/2
    *
    *   Revision 1.8  2025/03/24 04:05:36  snw
    *   Replace crlf with frm_crlf to avoid symbol conflict with readline on OS/2
    *
  *   Revision 1.7  2025/03/22 22:52:24  snw   *   Revision 1.7  2025/03/22 22:52:24  snw
  *   Add STRLEN_GBL macro to manage global string length   *   Add STRLEN_GBL macro to manage global string length
  *   *
Line 892  set0: Line 907  set0:
   
                 if (isalpha (vn[0]) && *(codptr + 1) == ':') {                  if (isalpha (vn[0]) && *(codptr + 1) == ':') {
                     char sc_string[255];                      char sc_string[255];
                     register int sci;  
                       
                     codptr += 2;                      codptr += 2;
                     expr (NAME);                      expr (NAME);
   
Line 1025  set2: Line 1039  set2:
   
                 if (new_and_set == TRUE) new_and_set = FALSE;                  if (new_and_set == TRUE) new_and_set = FALSE;
                 if (new_object == TRUE) new_object = FALSE;                  if (new_object == TRUE) new_object = FALSE;
   /*                
 set1:  set1:
   */
                 if (*codptr != ',') break;                  if (*codptr != ',') break;
   
                 if (*++codptr == '@') goto again;                  if (*++codptr == '@') goto again;
Line 3754  off3: Line 3770  off3:
             break;              break;
   
         case KILL:          case KILL:
               
             /* argumentless: KILL all local variables */              /* argumentless: KILL all local variables */
             if (((ch = *codptr) == SP) || ch == EOL) {              if (((ch = *codptr) == SP) || ch == EOL) {
                 symtab (kill_all, "", "");                  symtab (kill_all, "", "");
Line 3788  off3: Line 3804  off3:
                 if (destructor_ct) {                  if (destructor_ct) {
   
                     for (cd = 0; cd < destructor_ct; cd++) {                      for (cd = 0; cd < destructor_ct; cd++) {
                         strcat (destc, destructors[cd]);                          if (strlen (destructors[cd]) > 0) {
                         strcat (destc, ",");                              strcat (destc, destructors[cd]);
                               strcat (destc, ",");
                           }
                     }                      }
   
                     destructor_ct = 0;                                          destructor_ct = 0;                    
Line 3937  off3: Line 3955  off3:
                                                           
                             stcpy (objvar, vn);                              stcpy (objvar, vn);
   
                             symtab (dat, objvar, datres);                              symtab (fra_dat, objvar, datres);
                             dat_res = atoi (datres);                              dat_res = atoi (datres);
   
                             if (dat_res > 0) {                              if (dat_res > 0) {
Line 3991  off3: Line 4009  off3:
                     goto set2;                      goto set2;
                 }                  }
   
   /*                
 post_new:  post_new:
                   */                
                 ch = nstx;                  ch = nstx;
                                   
                 while (nestc[ch] == FOR) ch--;       /* FOR does not define a NEW level */                  while (nestc[ch] == FOR) ch--;       /* FOR does not define a NEW level */
Line 4321  use0:          /* entry point for proces Line 4340  use0:          /* entry point for proces
                                 break;                                  break;
   
                             case 2:                              case 2:
                                 crlf[io] = tvexpr (argptr);                                  frm_crlf[io] = tvexpr (argptr);
                                 break;                                  break;
                                                           
                             case 3:                              case 3:
Line 4423  use_socket: Line 4442  use_socket:
   
                 /* need to evaluate the following 6 lines carefully - smw 2023-10-15 */                  /* need to evaluate the following 6 lines carefully - smw 2023-10-15 */
                 if (k != HOME) {                  if (k != HOME) {
                     crlf[k] = FALSE;                      frm_crlf[k] = FALSE;
                     fm_nodelay[k] = FALSE;                      fm_nodelay[k] = FALSE;
                     xpos[k] = 0;                      xpos[k] = 0;
                     ypos[k] = 0;                      ypos[k] = 0;
Line 5539  zgo: Line 5558  zgo:
   
                 for (; beg < end; beg += UNSIGN (*beg) + 2) {                  for (; beg < end; beg += UNSIGN (*beg) + 2) {
                                           
                     if (crlf[io]) {                      if (frm_crlf[io]) {
                         write_m ("\012\201");                          write_m ("\012\201");
                     }                      }
                     else {                      else {
Line 5555  zgo: Line 5574  zgo:
                 rouins = beg;                  rouins = beg;
             }              }
   
             if (crlf[io]) {              if (frm_crlf[io]) {
                 write_m ("\012\201");                  write_m ("\012\201");
             }              }
             else {              else {
Line 5665  zgo: Line 5684  zgo:
             }              }
   
         case ZWRITE:          case ZWRITE:
   
   
 zwrite:  
             {              {
                 short k;                  short k;
                 char w_tmp[512];                  char w_tmp[512];
Line 5824  zwritep: Line 5840  zwritep:
                 }                  }
                                   
                 if (varnam[0] != '^') {                  if (varnam[0] != '^') {
                     symtab (dat, varnam, tmp2);                      symtab (fra_dat, varnam, tmp2);
                     zwmode = 'L';                      zwmode = 'L';
                 }                  }
                 else {                  else {
                     if (varnam[1] == '$') {                      if (varnam[1] == '$') {
                         ssvn (dat, varnam, tmp2);                          ssvn (fra_dat, varnam, tmp2);
                         zwmode = '$';                          zwmode = '$';
                     }                      }
                     else {                      else {
                         global (dat, varnam, tmp2);                          global (fra_dat, varnam, tmp2);
                         zwmode = '^';                          zwmode = '^';
                     }                      }
                 }                  }
Line 5944  zwritep: Line 5960  zwritep:
                     switch (zwmode) {                      switch (zwmode) {
   
                         case 'L':                          case 'L':
                             symtab (dat, tmp, tmp3);                              symtab (fra_dat, tmp, tmp3);
                             symtab (get_sym, tmp, &w_tmp[1]);                              symtab (get_sym, tmp, &w_tmp[1]);
   
                             break;                              break;
   
   
                         case '$':                          case '$':
                             ssvn (dat, tmp, tmp3);                              ssvn (fra_dat, tmp, tmp3);
                             ssvn (get_sym, tmp, &w_tmp[1]);                              ssvn (get_sym, tmp, &w_tmp[1]);
   
                             break;                              break;
   
   
                         case '^':                          case '^':
                             global (dat, tmp, tmp3);                              global (fra_dat, tmp, tmp3);
                             global (get_sym, tmp, &w_tmp[1]);                              global (get_sym, tmp, &w_tmp[1]);
   
                             break;                              break;
Line 6033  zwritep: Line 6049  zwritep:
             break;              break;
   
   
         case ZALLOCATE:          /* user defined Z-COMMAND */
   
             /* argumentless is not permitted */  
             if (*codptr == SP || *codptr == EOL) {  
                 merr_raise (ARGLIST);  
                 break;  
             }  
   
             expr (NAME);  
               
             if (merr () > OK) goto err;  
               
             tmp[0] = SP;  
             stcpy (&tmp[1], varnam);  
             stcat (tmp, "\001\201");  
   
             frm_timeout = (-1L);        /* no timeout */  
               
             if (*++codptr == ':') {  
                 codptr++;  
               
                 expr (STRING);  
               
                 frm_timeout = intexpr (argptr);  
               
                 if (merr () > OK) goto err;  
                 if (frm_timeout < 0L) frm_timeout = 0L;  
             }  
   
             lock (tmp, frm_timeout, ZALLOCATE);  
             break;  
               
   
         case ZDEALLOCATE:  
   
             tmp[0] = SP;  
               
             if (*codptr == SP || *codptr == EOL) {  
                 tmp[1] = EOL;  
             }  
             else {  
                 expr (NAME);  
               
                 if (merr () > OK) goto err;  
               
                 stcpy (&tmp[1], varnam);  
               
                 codptr++;  
             }  
   
             lock (tmp, -1L, ZDEALLOCATE);   /* -1: no timeout */  
             break;  
   
             /* user defined Z-COMMAND */  
   
   
         case PRIVATE:          case PRIVATE:
   
 private:            /* for in-MUMPS defined commands */  private:            /* for in-MUMPS defined commands */
Line 7494  void rbuf_dump(void) Line 7455  void rbuf_dump(void)
           
     for (i = 0; i < NO_OF_RBUF; i++) {      for (i = 0; i < NO_OF_RBUF; i++) {
   
         sprintf (flgs, "");          flgs[0] = '\0';
                   
         if (ages[i] == 0) {          if (ages[i] == 0) {
             sprintf (rnam, "---------");              sprintf (rnam, "---------");

Removed from v.1.7  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>