Changeset 0fa9018 in git


Ignore:
Timestamp:
Mar 8, 2000, 4:08:09 PM (24 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '648d28f488f6ff08f5607ff229b9ad9e4a5b93c2')
Children:
304a42eb304013fe3f7e82cebdc14123d10ac517
Parents:
9c5d435006cd955e36cee6725bb01f5d068e4a46
Message:
* hannes: multiple line input, reset tty in interupts, at exit


git-svn-id: file:///usr/local/Singular/svn/trunk@4185 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Singular/cntrlc.cc

    r9c5d43 r0fa9018  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: cntrlc.cc,v 1.28 1999-12-03 11:20:13 obachman Exp $ */
     4/* $Id: cntrlc.cc,v 1.29 2000-03-08 15:08:09 Singular Exp $ */
    55/*
    66* ABSTRACT - interupt handling
     
    340340{
    341341  mflush();
     342  #ifdef HAVE_FEREAD
     343  if (fe_is_raw_tty) fe_temp_reset();
     344  #endif
    342345  loop
    343346  {
     
    466469  char *args[4] = { "gdb", "Singularg", NULL, NULL };
    467470
     471  #ifdef HAVE_FEREAD
     472  if (fe_is_raw_tty) fe_temp_reset();
     473  #endif
     474
    468475  sprintf (buf, "%d", getpid ());
    469476
     
    524531  {
    525532    perror ("could open pipe");
    526     _exit (0);
     533    m2_end(999);
    527534  }
    528535
     
    536543    execvp (args[0], args);      /* exec gdb */
    537544    perror ("exec failed");
    538     _exit (0);
     545    m2_end(999);
    539546  }
    540547  else if (pid == -1)
    541548  {
    542549    perror ("could not fork");
    543     _exit (0);
     550    m2_end(999);
    544551  }
    545552
     
    605612  close (out_fd[0]);
    606613  close (out_fd[1]);
    607   _exit (0);
     614  m2_end(0);
    608615}
    609616
  • Singular/febase.h

    r9c5d43 r0fa9018  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: febase.h,v 1.44 1999-12-14 17:46:53 Singular Exp $ */
     6/* $Id: febase.h,v 1.45 2000-03-08 15:08:09 Singular Exp $ */
    77/*
    88* ABSTRACT: basic i/o
     
    3636#endif
    3737
     38#ifdef HAVE_DYN_RL
     39  #undef HAVE_READLINE
     40  #define HAVE_FEREAD 1
     41#endif
     42
    3843/*
    3944// These are our versions of fopen and fread They are very similar to
     
    8893#endif
    8994
    90 void   Werror(char *fmt, ...);
    91 void   WerrorS(const char *s);
    92 void   Print(char* fmt, ...);
    93 void   PrintLn();
     95void    Werror(char *fmt, ...);
     96void    WerrorS(const char *s);
     97void    Print(char* fmt, ...);
     98void    PrintLn();
    9499#ifdef HAVE_TCL
    95 void   PrintTCLS(const char c, const char * s);
     100void    PrintTCLS(const char c, const char * s);
    96101#else
    97102#define PrintTCLS(A,B) Print("TCL-ErrS:%s",B)
    98103#endif
    99 void   PrintS(char* s);
     104void    PrintS(char* s);
    100105#define feReportBug(s) fePrintReportBug(s, __FILE__, __LINE__)
    101 void fePrintReportBug(char* msg, char* file, int line);
    102 char* feGetResource(const char id);
     106void    fePrintReportBug(char* msg, char* file, int line);
     107char*   feGetResource(const char id);
     108
     109#ifdef HAVE_FEREAD
     110extern BOOLEAN fe_is_raw_tty;
     111void           fe_temp_reset (void);
     112#endif
    103113
    104114#ifdef __cplusplus
     
    249259/* the interface for reading: */
    250260extern  char * (*fe_fgets_stdin)(char *pr,char *s, int size);
     261
     262#ifdef HAVE_FEREAD
     263char * fe_fgets_stdin_drl(char *pr,char *s, int size);
     264#endif
     265
    251266void fe_reset_input_mode();
     267
    252268#ifndef MSDOS
    253269extern "C" {
     
    289305
    290306
    291 #ifdef HAVE_DYN_RL
    292 #undef HAVE_READLINE
    293 #define HAVE_FEREAD 1
    294 char * fe_fgets_stdin_drl(char *pr,char *s, int size);
    295 #endif
    296 
    297307#endif /* ifndef FEBASE_H */
  • Singular/fereadl.c

    r9c5d43 r0fa9018  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: fereadl.c,v 1.14 2000-03-08 13:33:42 Singular Exp $ */
     4/* $Id: fereadl.c,v 1.15 2000-03-08 15:08:09 Singular Exp $ */
    55/*
    66* ABSTRACT: input from ttys, simulating fgets
     
    1515#include "febase.h"
    1616
    17 #ifdef SunOS_5
    18 #define _XOPEN_SOURCE_EXTENDED
    19 #endif
    20 
    2117#ifdef HAVE_FEREAD
    22  #include <unistd.h>
    23  #include <stdio.h>
    24  #include <stdlib.h>
    25  #include <sys/time.h>
    26  #include <sys/types.h>
    27  #include <string.h>
    28  
    29  #ifdef MSDOS
    30   #include <pc.h>
    31  #else
    32   #ifdef SunOS_5
    33   /* solaris special, found with v 5.7 */
    34   #define _XOPEN_SOURCE_EXTENDED
    35   #include "/usr/xpg4/include/term.h"
     18  #include <unistd.h>
     19  #include <stdio.h>
     20  #include <stdlib.h>
     21  #include <sys/time.h>
     22  #include <sys/types.h>
     23  #include <string.h>
     24
     25  #ifdef MSDOS
     26    #include <pc.h>
     27  #else
     28    #ifdef SunOS_5
     29      /* solaris special, found with v 5.7 */
     30      #define _XOPEN_SOURCE_EXTENDED
     31      #include "/usr/xpg4/include/term.h"
     32    #endif
     33    #ifdef HAVE_TERM_H
     34      #ifndef SunOS_5
     35        #include <term.h>
     36      #endif
     37    #elif HAVE_TERMCAP_H
     38      #include <termcap.h>
     39    #elif HAVE_TERMIOS_H
     40      #include <termios.h>
     41    #endif
     42
     43    #ifdef atarist
     44      #include <ioctl.h>
     45    #else
     46      #ifdef NeXT
     47        #include <sgtty.h>
     48        #include <sys/ioctl.h>
     49      #endif
     50    #endif
    3651  #endif
    37   #ifdef HAVE_TERM_H
    38   #ifndef SunOS_5
    39   #include <term.h>
    40   #endif
    41   #elif HAVE_TERMCAP_H
    42   #include <termcap.h>
    43   #elif HAVE_TERMIOS_H
    44   #include <termios.h>
    45   #endif
    46 
    47   #ifdef atarist
    48    #include <ioctl.h>
    49   #else
    50    #ifdef NeXT
    51     #include <sgtty.h>
    52     #include <sys/ioctl.h>
    53    #endif
    54   #endif
    55  #endif
    5652
    5753
    5854#ifndef STDIN_FILENO
    59 #define STDIN_FILENO 0
     55  #define STDIN_FILENO 0
    6056#endif
    6157#ifndef STDOUT_FILENO
    62 #define STDOUT_FILENO 1
     58  #define STDOUT_FILENO 1
    6359#endif
    6460
     
    6662
    6763#ifndef MSDOS
    68 /* Use this variable to remember original terminal attributes. */
    69 #if defined( atarist ) || defined( NeXT )
    70 struct sgttyb  fe_saved_attributes;
    71 #else
    72 struct termios fe_saved_attributes;
    73 #endif
     64
     65  /* Use this variable to remember original terminal attributes. */
     66  #if defined( atarist ) || defined( NeXT )
     67    struct sgttyb  fe_saved_attributes;
     68  #else
     69    struct termios fe_saved_attributes;
     70  #endif
    7471#endif
    7572
     
    8380char ** fe_hist=NULL;
    8481short   fe_hist_pos;
    85 short  fe_is_raw_tty=0;
     82BOOLEAN fe_is_raw_tty=0;
    8683int     fe_cursor_pos; /* 0..colmax-1*/
    8784int     fe_cursor_line; /* 0..pagelength-1*/
     
    9592  #endif
    9693  {
    97     if (fe_stdin_is_tty && fe_is_raw_tty)
     94    if (fe_stdin_is_tty)
    9895    {
    9996      int i;
    100       #ifdef atarist
    101         stty(0, &fe_saved_attributes);
    102       #else
    103         #ifdef NeXT
    104           ioctl(STDIN_FILENO, TIOCSETP, &fe_saved_attributes);
     97      if (fe_is_raw_tty)
     98      {
     99        #ifdef atarist
     100          stty(0, &fe_saved_attributes);
    105101        #else
    106           tcsetattr (STDIN_FILENO, TCSANOW, &fe_saved_attributes);
    107         #endif
    108       #endif
    109       fe_is_raw_tty=0;
     102          #ifdef NeXT
     103            ioctl(STDIN_FILENO, TIOCSETP, &fe_saved_attributes);
     104          #else
     105            tcsetattr (STDIN_FILENO, TCSANOW, &fe_saved_attributes);
     106          #endif
     107        #endif
     108        fe_is_raw_tty=0;
     109      }
    110110      for(i=fe_hist_max-1;i>=0;i--)
    111111      {
     
    213213          fe_echo = fopen( "/dev/tty", "w" );
    214214        #else
    215           fe_echo = fopen( ttyname(fileno(stdin)), "w" );
     215          fe_echo = fopen( ttyname(fileno(stdin)), "w" );
    216216        #endif
    217217      }
     
    488488        case feCTRL('J'):
    489489        {
    490           fd_set fdset;
    491           struct timeval tv;
    492           int sel;
     490          fd_set fdset;
     491          struct timeval tv;
     492          int sel;
    493493
    494494          fe_add_hist(s);
     
    498498          fflush(fe_echo);
    499499
    500           FD_ZERO (&fdset);
    501           FD_SET(STDIN_FILENO, &fdset);
    502           tv.tv_sec = 0;
    503           tv.tv_usec = 0;
    504           #ifdef hpux
    505             sel = select (STDIN_FILENO+1, (int *)fdset.fds_bits, NULL, NULL, &tv);
    506           #else
    507             sel = select (STDIN_FILENO+1, &fdset, NULL, NULL, &tv);
    508           #endif
    509           if (sel==0)
     500          FD_ZERO (&fdset);
     501          FD_SET(STDIN_FILENO, &fdset);
     502          tv.tv_sec = 0;
     503          tv.tv_usec = 0;
     504          #ifdef hpux
     505            sel = select (STDIN_FILENO+1, (int *)fdset.fds_bits, NULL, NULL, &tv);
     506          #else
     507            sel = select (STDIN_FILENO+1, &fdset, NULL, NULL, &tv);
     508          #endif
     509          if (sel==0)
    510510            fe_temp_reset();
    511511          return s;
Note: See TracChangeset for help on using the changeset viewer.