home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / gcl-1.000 / gcl-1 / gcl-1.0 / c / unixsys.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-07  |  1.7 KB  |  77 lines

  1. /*
  2.  Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
  3.  
  4. This file is part of GNU Common Lisp, herein referred to as GCL
  5.  
  6. GCL is free software; you can redistribute it and/or modify it under
  7. the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GCL is distributed in the hope that it will be useful, but WITHOUT
  12. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public 
  14. License for more details.
  15.  
  16. You should have received a copy of the GNU Library General Public License 
  17. along with GCL; see the file COPYING.  If not, write to the Free Software
  18. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20. */
  21.  
  22. #include "include.h"
  23.  
  24. #ifdef ATT3B2
  25. #include <signal.h>
  26. int
  27. system(command)
  28. char *command;
  29. {
  30.     char buf[4];
  31.     extern sigint();
  32.  
  33.     signal(SIGINT, SIG_IGN);
  34.     write(4, command, strlen(command)+1);
  35.     read(5, buf, 1);
  36.     signal(SIGINT, sigint);
  37.     return(buf[0]<<8);
  38. }
  39. #endif
  40.  
  41. #ifdef E15
  42. #include <signal.h>
  43. int
  44. system(command)
  45. char *command;
  46. {
  47.     char buf[4];
  48.     extern sigint();
  49.  
  50.     signal(SIGINT, SIG_IGN);
  51.     write(4, command, strlen(command)+1);
  52.     read(5, buf, 1);
  53.     signal(SIGINT, sigint);
  54.     return(buf[0]<<8);
  55. }
  56. #endif
  57.  
  58. Lsystem()
  59. {
  60.     char command[1024];
  61.     int i;
  62.  
  63.     check_arg(1);
  64.     check_type_string(&vs_base[0]);
  65.     if (vs_base[0]->st.st_fillp >= 1024)
  66.         FEerror("Too long command line: ~S.", 1, vs_base[0]);
  67.     for (i = 0;  i < vs_base[0]->st.st_fillp;  i++)
  68.         command[i] = vs_base[0]->st.st_self[i];
  69.     command[i] = '\0';
  70.     vs_base[0] = make_fixnum(system(command) >> 8);
  71. }
  72.  
  73. init_unixsys()
  74. {
  75.     make_function("SYSTEM", Lsystem);
  76. }
  77.