home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / src / acorn.d < prev    next >
Encoding:
Text File  |  1994-12-20  |  7.2 KB  |  209 lines

  1. # Include-File fⁿr Acorn RISC OS - Version von CLISP
  2. # Bruno Haible, Peter Burwood 20.12.1994
  3.  
  4. # Konstanten fⁿr Steuerzeichen:
  5.  
  6. #define BEL  7              # Ton ausgeben
  7. # define NL  10             # New line, siehe LISPBIBL.D
  8. #define RUBOUT 127          # Rubout = Delete
  9. #define CRLFstring  "\n"    # C-String, der BS-Newline enthΣlt
  10.  
  11. #define stdin_handle   0  # File-Handle von Standard-Input
  12. #define stdout_handle  1  # File-Handle von Standard-Output
  13.  
  14. # Deklaration von Typen von Ein-/Ausgabe-Parametern von Betriebssystemfunktionen
  15.   #include <stdlib.h>
  16.   #include <sys/types.h>
  17.   #include <unistd.h>
  18.   #define RETSTRLENTYPE size_t
  19.   #define STRLEN_CONST const
  20.  
  21. # Tabelle der System-Fehlermeldungen
  22.   #include <errno.h>
  23.   # extern volatile int errno; # letzter Fehlercode
  24.   extern int sys_nerr; # Anzahl der Betriebssystem-Fehlermeldungen
  25.   extern char* sys_errlist[]; # Betriebssystem-Fehlermeldungen
  26.   # siehe <errno.h>, PERROR(3)
  27. # wird verwendet von ERROR, SPVW, STREAM, PATHNAME
  28.  
  29. # Bereitstellen des Arbeitsspeichers
  30.   extern void* malloc (size_t size);
  31.   extern void free (void* ptr);
  32.   extern void* realloc (void* ptr, size_t size);
  33.   # siehe <stdlib.h>
  34. # wird verwendet von SPVW, STREAM
  35.  
  36. # Normales Programmende
  37.   nonreturning_function(extern, _exit, (int status)); # siehe EXIT(2V)
  38. # wird verwendet von SPVW, PATHNAME, STREAM
  39.  
  40. # Sofortiger Programmabbruch, Sprung in den Debugger
  41.   extern void abort (void); # siehe ABORT(3)
  42.   # siehe <stdlib.h>
  43. # wird verwendet von SPVW, DEBUG, EVAL, IO
  44.  
  45. # Signalbehandlung
  46.   #include <signal.h>
  47.   # Ein Signal-Handler ist eine Funktion ohne Ergebnis.
  48.   typedef void (*signal_handler) ();
  49.   extern signal_handler signal (int sig, signal_handler handler); # siehe SIGNAL(3V)
  50.   #define SIGNAL_NEED_REINSTALL
  51.   #define signal_acknowledge(sig,handler)  nowarn signal(sig,handler) # Handler bleibt weiter aktiv
  52.   #define siginterrupt(sig,flag)
  53.   #define SIGNAL(sig,handler)  nowarn signal(sig,handler)
  54. # wird verwendet von SPVW
  55.  
  56. # Environment-Variablen abfragen:
  57.   extern char* getenv (const char* name); # siehe GETENV(3V)
  58.   # siehe <stdlib.h>
  59. # wird verwendet von PATHNAME, SPVW, MISC
  60.  
  61. # Working Directory setzen:
  62.   extern int chdir (char* path); # siehe CHDIR(2V)
  63.   # siehe <unistd.h>
  64. # wird verwendet von PATHNAME
  65.  
  66. # Working Directory abfragen:
  67.   #if 0 # unbrauchbar, da es einen Pfad im Unix-Format liefert
  68.     #include <sys/param.h> # definiert MAXPATHLEN
  69.     extern char* getcwd (char* buf, int bufsize);
  70.     #define getwd(buf)  getcwd(buf,MAXPATHLEN)
  71.     # siehe <unistd.h>
  72.   #endif
  73.   # Benutze stattdessen die Funktionen os_fopen(), os_fclose(), os_swi().
  74. # wird verwendet von PATHNAME
  75.  
  76. # Information zu einem File erfragen:
  77.   #include <sys/types.h>
  78.   #include <sys/stat.h>
  79.   extern int stat (char* path, struct stat * buf); # siehe STAT(2V)
  80.   #define lstat stat
  81.   #define S_ISLNK(m)  FALSE
  82.   extern int fstat (int fd, struct stat * buf); # siehe STAT(2V)
  83.   #ifndef S_ISDIR
  84.     #define S_ISDIR(m)  (((m)&S_IFMT) == S_IFDIR)
  85.   #endif
  86.   #ifndef S_ISLNK
  87.     #define S_ISLNK(m)  (((m)&S_IFMT) == S_IFLNK)
  88.   #endif
  89.   #ifndef S_ISREG
  90.     #define S_ISREG(m)  (((m)&S_IFMT) == S_IFREG)
  91.   #endif
  92.   # siehe <unistd.h>
  93. # wird verwendet von PATHNAME, STREAM, SPVW
  94.  
  95. # File l÷schen:
  96.   extern int unlink (char* path); # siehe UNLINK(2V)
  97.   # siehe <unistd.h>
  98. # wird verwendet von PATHNAME
  99.  
  100. # File umbenennen:
  101.   extern int rename (const char* oldpath, const char* newpath); # siehe RENAME(2V)
  102.   # siehe <stdio.h>
  103. # wird verwendet von PATHNAME
  104.  
  105. # Directory-Suche:
  106.   #include <dirent.h>
  107.   #define SDIRENT  struct dirent
  108.   #if 0 # Die allgemeinen Routinen
  109.     #define DIRENT_WITHOUT_NAMLEN  # d_namlen includes the trailing null byte
  110.     #define d_reclen  d_namlen
  111.     extern DIR* opendir (char* dirname); # siehe DIRECTORY(3V)
  112.     extern SDIRENT* readdir (DIR* dirp); # siehe DIRECTORY(3V)
  113.     extern int closedir (DIR* dirp); # siehe DIRECTORY(3V)
  114.   #else # Die Routinen, die wir benutzen, sind die in acornaux.d.
  115.     #define opendir  my_opendir  # <dirent.h> deklariert opendir() bereits...
  116.     #define readdir  my_readdir
  117.     #define closedir  my_closedir
  118.     extern DIR* opendir (const char* dirname, const char* wildname);
  119.     extern SDIRENT* readdir (DIR* dirp);
  120.     extern int closedir (DIR* dirp);
  121.   #endif
  122.   #define CLOSEDIR  closedir
  123. # wird verwendet von PATHNAME
  124.  
  125. # Directory anlegen:
  126.   extern int mkdir (char* path);
  127.   #define mkdir(path,attrib)  (mkdir)(path)
  128. # wird verwendet von PATHNAME
  129.  
  130. # Directory l÷schen:
  131.   #if 0 # l÷scht auch nichtleere Directories, viel zu gefΣhrlich!
  132.     extern int rmdir (char* path); # siehe RMDIR(2V)
  133.     # siehe <unistd.h>
  134.   #endif
  135. # wird verwendet von PATHNAME
  136.  
  137. # Arbeiten mit offenen Files:
  138.   #include <sys/types.h>
  139.   # include <unistd.h> # siehe oben
  140.   #include <fcntl.h>
  141.   extern int open (char* path, int flags, ...); # siehe OPEN(2V)
  142.   #define my_open_mask  0644
  143.   #define Handle  uintW  # Typ eines File-Deskriptors
  144.   extern long lseek (int fd, long offset, int whence); # siehe LSEEK(2V)
  145.   #include <stdio.h> # definiert SEEK_SET, SEEK_CUR, SEEK_END
  146.   extern int read (int fd, void* buf, int nbyte); # siehe READ(2V)
  147.   extern int write (int fd, void* buf, int nbyte); # siehe WRITE(2V)
  148.   extern int close (int fd); # siehe CLOSE(2V)
  149.   # siehe <unistd.h>
  150.   #define OPEN open
  151.   #define CLOSE close
  152.   # Wrapper um die System-Aufrufe, die Teilergebnisse und evtl. EINTR behandeln:
  153.   extern int full_read (int fd, char* buf, int nbyte);
  154.   extern int full_write (int fd, char* buf, int nbyte);
  155.   #define RETRWTYPE  int
  156.   #define RW_BUF_T  void*
  157.   #define RW_SIZE_T  int
  158.   #define WRITE_CONST
  159. # wird verwendet von STREAM, PATHNAME, SPVW, MISC
  160.  
  161. # Terminal-Abfragen, Abfragen der Fenster-Gr÷▀e:
  162.   extern int isatty (int fd); # siehe TTYNAME(3V)
  163.   extern int ioctl (int fd, int request, void* arg); # siehe IOCTL(2)
  164.   # siehe <unistd.h>
  165.   #define UNIX_TERM_TERMIO
  166.   #include <termio.h>
  167.   extern int fcntl (int fd, int cmd, int arg); # siehe FCNTL(2V)
  168.   # siehe <unistd.h>
  169.   extern int tgetent (char* bp, char* name); # siehe TERMCAP(3X)
  170.   extern int tgetnum (char* id); # siehe TERMCAP(3X)
  171.   extern int tgetflag (char* id); # siehe TERMCAP(3X)
  172.   extern char* tgetstr (char* id, char** area); # siehe TERMCAP(3X)
  173.   # siehe <termcap.h>
  174.   #ifndef NCCS
  175.     #define NCCS  sizeof(((struct termio *)0)->c_cc)
  176.   #endif
  177. # wird verwendet von SPVW, STREAM
  178.  
  179. # Datum/Uhrzeit verarbeiten:
  180.   #include <time.h>
  181.   extern time_t time (time_t* clock); # siehe TIME(3V)
  182.   extern struct tm * localtime (const time_t* clock); # siehe CTIME(3V)
  183.   extern struct tm * gmtime (const time_t* clock); # siehe CTIME(3V)
  184. # wird verwendet von SPVW, MISC
  185.  
  186. # Datum/Uhrzeit abfragen:
  187.   #include <time.h> # fⁿr CLK_TCK n÷tig
  188.   #include <sys/times.h>
  189.   #define CLOCK_T  clock_t
  190.   extern CLOCK_T times (struct tms * buffer); # siehe TIMES(3V)
  191.   extern time_t time (time_t* tloc); # siehe TIME(3V)
  192. # wird verwendet von SPVW, MISC
  193.  
  194. # Eine bestimmte Zeit Pause machen:
  195.   extern int sleep (unsigned int seconds);
  196.   # siehe <unistd.h>
  197. # wird verwendet von MISC
  198.  
  199. # Programme aufrufen:
  200.   extern int execv (char* path, char* argv[]); # siehe EXECL(3V)
  201.   extern int execl (char* path, ...); # siehe EXECL(3V)
  202.   extern int execlp (char* path, ...); # siehe EXECL(3V)
  203.   extern int wait (int* statusp);
  204.   # siehe <unistd.h>
  205.   #define PID_T  int  # fⁿr unixaux.d
  206. # extern int wait2 (PID_T pid); # siehe unixaux.d
  207. # wird verwendet von STREAM, PATHNAME, SPVW
  208.  
  209.